23 de fevereiro de 2012

Você programa como Edison ou como Tesla?

Nesse carnaval, um dos artigos que saiu da minha sempre crescente lista no Instapaper, foi sobre as diferentes abordagens para a solução de problemas adotadas por dois grandes inventores: Thomas Edison e Nikola Tesla. Além de ter gostando bastante do artigo[1], gostei do que aprendi das pesquisas adicionais que fiz por causa dele (referências no final) e, por fim, tive a motivação que faltava para voltar a postar aqui. Esse post explora o contraste entre as abordagens de Edison e Tesla aplicadas ao desenvolvimento de software.

4 de outubro de 2011

Programe menos

Muito se fala sobre a necessidade de treino, muito treino, para alguém se tornar um bom programador. Apóio totalmente essa ideia. Mas, nesse artigo, gostaria de chamar a atenção para uma habilidade que poucos bons programadores chegam a adquirir: a habilidade de não precisar programar. Não, não estou me referindo a "habilidade" que alguns tem de se esquivar do seu trabalho. Estou falando sobre realizar um trabalho de qualidade, mas usando pouco ou nada do seu próprio código.

30 de agosto de 2011

[off-topic] Mudanças profissionais e novo blog

No final de 2009 comecei a prestar muita atenção na área de desenvolvimento de software para dispositivos móveis. Me pareceu um mercado muito promissor, então comecei a estudar um pouco de desenvolvimento para iPhone (não havia iPad ainda). Em pouco tempo, comecei a dar uma olhada também no Android. Minha experiência com C me ajudou a tolerar um pouco da esquisitice do Objective-C. E minha experiência com Java, tornou as coisas bem fáceis ao estudar o SDK do Android.

Logo, comecei a olhar também algumas alternativas que me permitissem desenvolver ao mesmo tempo para iOS (como veio a se chamar o antigo iPhone OS) e para Android. O Android estava crescendo muito e me parecia razoável investir nas duas plataformas. Então, fui apresentado ao Appcelerator Titanium Mobile, ainda nos seus estágios iniciais. O Titanium permite criar apps nativas para iOS e Android usando uma única base de código, em JavaScript. Codificar em JavaScript me pareceu muito melhor do que usar ObjC ou Java. E a ideia de não precisar escrever dois aplicativos para ter um pé em cada plataforma, foi um ótimo argumento para estudar esse tal de Titanium.

27 de junho de 2011

Foque nos usuários, não nas funcionalidades

Num passado não muito distante, um certo nicho de mercado precisou atender a uma exigência do seu órgão regulador: determinadas guias que eram preenchidas à mão precisariam passar a ser preenchidas no computador, para que fossem enviadas eletronicamente a seus destinatários. Os gestores da empresa de TI onde eu trabalhava viram nessa exigência uma oportunidade. Então, junto com uma equipe, fui encarregado de desenvolver um software que permitisse àquelas empresas atenderem a sua nova necessidade. Havia alguns concorrentes e o nosso software precisava, de alguma forma, se destacar entre eles. O resultado foi atingido e o software foi um sucesso! O que fizemos? *

23 de maio de 2011

Invista em conhecimento

Todo mundo sabe que mil reais hoje compram menos do que seria possível um ano atrás. Isso acontece por causa da inflação. Para fazer o dinheiro não perder seu valor é preciso investi-lo.

Conhecimento é como dinheiro. Seu valor também diminui com o passar do tempo. E quando se trata de tecnologia, a “inflação” é ainda maior, fazendo com que qualquer conhecimento tecnológico que se possua hoje perca drasticamente o seu valor em alguns anos. Se você não quer se tornar intelectualmente pobre, precisa colocar seu cérebro para trabalhar. Em outras palavras, precisa investir em conhecimento.

30 de abril de 2011

Como identificar bons programadores

Gerente de circo: Você faz malabarismo há quanto tempo?

Candidato: Humm, há cerca de seis anos.

Gerente de circo: Você faz malabarismo com três, quatro e cinco bolas?

Candidato: Sim, sim e sim.

Gerente de circo: Sabe lidar com objetos chamejantes?

Candidato: Claro.

Gerente de circo: ...facas, machados, caixas de charuto abertas e chapéus?

Candidato: Faço malabarismo com qualquer coisa.

Gerente de circo: Você faz o público rir durante o malabarismo?

Candidato: Sim, sou hilário.

Gerente de circo: Gostei de você. Está contratado!

Candidato: Mas... você não quer me ver fazendo malabarismo?

Gerente de circo: Caramba, nunca pensei nisso.

(Peopleware. “Hiring a Juggler”)

Qualquer um consideraria insano contratar um malabarista sem antes vê-lo demonstrando suas habilidades. É uma questão de bom senso. Mas é impressionante como esse bom senso é simplesmente ignorado por muitas empresas ao contratar programadores. Elas se limitam a ler currículos e fazer entrevistas que talvez avaliem um monte de coisas, menos se os candidatos têm talento pra fazer software.

Se você quer contratar bons programadores, precisa saber como identificá-los. Não tenho um passo-a-passo para lhe oferecer, mas algumas lições que aprendi durante alguns anos de observação e execução dessa tarefa podem lhe ser de ajuda.

18 de janeiro de 2011

Como atrair bons programadores

Na década de 80, milhares de bravos garimpeiros foram atraídos ao lugar que se tornou o maior garimpo a céu aberto do mundo - a Serra Pelada. O motivo? A descoberta que o solo desse local possuía uma enorme quantidade de ouro.

Garimpeiros sabem que não adianta procurar ouro a esmo. É preciso saber onde há uma grande concentração do metal para então empreender o garimpo. E o garimpo envolve vasculhar grandes quantidades de terra, areia e pedras sem valor, para encontrar uma quantidade proporcionalmente ínfima do metal precioso.

Procurar bons programadores, de certa forma, é como procurar ouro. É preciso saber onde procurar por eles e muita disposição para garimpá-los. A diferença é que, quando se trata de pessoas, elas sempre terão a escolha de não querer ser garimpadas por você. Por isso, não basta saber procurar. É preciso saber como atraí-las.

15 de janeiro de 2011

Um assunto leva a outro

É impressionante como um assunto leva a outro. Quatro artigos atrás, escrevi sobre a limitação das metodologias e concluí dizendo que para fazer bom software é preciso uma equipe talentosa.

No artigo seguinte, eu pretendia escrever sobre como identificar programadores talentosos, mas percebi que, antes disso, era preciso explicar porque é importante contratar programadores talentosos.

6 de novembro de 2010

Características de um bom programador – Parte 3/3 – Autodidatismo

Encerrando a série de três artigos em que falo sobre as características mais importantes a serem procuradas num programador, hoje explico porque considero o autodidatismo a terceira mais importante característica.

(Para quem não conhece a palavra, autodidatismo é a 'qualidade do autodidata'*. Autodidata, você já sabe, é quem aprende por conta própria, mesmo sem a ajuda de professores.)

30 de outubro de 2010

Características de um bom programador – Parte 2/3 – Paixão

Em 2005, os formandos da Stanford University - uma das melhores universidades do mundo - foram brindados com um discurso memorável de nada menos que Steve Jobs. Seu discurso inteiro merece ser assistido[1], mas quero citar apenas uma pequena frase dele:

"A única maneira de fazer um trabalho brilhante é amar o que você faz" [1]

Jobs contou que os eventos que culminaram na sua demissão da Apple não afetaram seu sentimento para com o seu trabalho. Ele continuou apaixonado pelo que fazia. Essa paixão o motivou a seguir em frente. Ele então criou a NeXT, que produziu a tecnologia que viria a se tomar o coração do Mac OS, e iniciou a Pixar, que produziu o primeiro longa-metragem totalmente feito por computação gráfica - o filme Toy Story. Em uma incrível virada de eventos, Jobs reassumiu a liderança da Apple.