23 de outubro de 2010

Características de um bom programador – Parte 1/3 – Talento

Se você trabalha com desenvolvimento de software há alguns anos, já deve ter percebido que bons profissionais são a minoria no mercado. É impressionante a quantidade de gente que se torna “experiente” e até ganha dinheiro, sem saber fazer software direito.

No artigo anterior, defendi que não é possível fazer bom software sem uma equipe talentosa, por mais que se use uma “boa metodologia”. Dando continuidade ao assunto, neste artigo explico porque considero o talento* a característica mais importante a se procurar num programador.

Em busca das notas altas

Joel Spolsky, no seu livro Smart and Get Things Done, compara a capacidade de programadores fazerem excelente software com a capacidade de cantores atingirem as notas altas. Ele diz:

"Pessoas sem talento nunca atingem as notas altas que as pessoas talentosas atingem todo o tempo" [1]

Você certamente conhece “cantores” e “cantoras” que fazem sucesso, mas não por causa da qualidade do seu canto. Porém, quando se trata cantores de ópera, apenas aqueles que atingem as notas altas conseguem se destacar.

Comparando com software, é verdade quem nem todo software precisa atingir as notas altas, por assim dizer. Em empresas que não são de tecnologia, por exemplo, equipes de TI medianas, muitas vezes são o suficiente para atender as expectativas dos gestores. Mas se você está no mercado de desenvolvimento de software criando produtos que precisam se destacar pela sua qualidade, não há saída: você precisa ter programadores talentosos, aqueles capazes de atingir as notas altas.

"Programadores medianos nunca atingem as notas altas que fazem um grande sotware" [1]
'Programadores brilhantes são muito, muito mais valiosos que programadores medianos. Eles são de três a dez vezes mais produtivos, custando apenas 20% ou 30% mais. E atingem as notas altas que ninguém mais pode atingir.' [1]

Segundo Spolsky, a questão não é apenas a produtividade. É a capacidade de atingir “notas altas”, ou seja, fazer excelente software. Se uma equipe talentosa faz um excelente software em um mês, não adianta dar dez meses para uma equipe mediana fazer o mesmo software, o resultado nunca será equivalente.

Talento se ensina?

É preciso ficar claro que o talento de um programador não está relacionado com sua formação acadêmica ou com seu tempo de experiência, apesar de esses fatores poderem aperfeiçoar talentos. Você já deve ter conhecido aprendizes de programação com grande talento, ainda que tivessem pouca experiência e nenhuma formação acadêmica na área. Por outro lado, você talvez também conheça inúmeros programadores muito experientes e até com boa formação, mas que codificam como um amador.

Atualmente, é praticamente inaceitável dizer que alguém é intrinsecamente incompetente em determinada área. Supõe-se que bons líderes podem fazer emergir qualidades inexploradas nos seus subordinados. Essa visão é bastante confortável para nós quando nosso talento está sendo avaliado. Mas quando se está do outro lado - o lado de quem contrata talentos - a realidade é bem diferente. Tom DeMarco e Timothy Lister, no aclamado livro sobre gerência de projetos Peopleware, são muito francos ao dizer:

“As pessoas que trabalham para você durante qualquer período serão, no fim, mais ou menos a mesma coisa que eram no começo. Se elas não forem as pessoas certas para o trabalho no início, elas nunca serão.” [2]

DeMarco e Lister defendem que, mesmo bons gerentes, são incapazes de mudar seus subordinados de forma significativa. A influência que eles podem exercer na natureza dos membros da sua equipe é limitada, dada toda a carga genética e a formação adquirida desde a infância.

É verdade que os indivíduos podem fazer grandes mudanças em si mesmos, mas nós não podemos fazer essas mudanças neles. Portanto, é fundamental que no momento da contratação seus programadores já tenham o talento necessário para fazer bom software.

Esse era o recado sobre Talento. Volte no próximo sábado e leia o segundo artigo desta série onde falarei sobre a segunda característica que considero mais importante. Se preferir, assine meu RSS, siga-me no Twitter ou torne-se seguidor deste blog para ser informado quando for publicado o próximo artigo.

Você concorda que o talento é a característica mais importante que um programador deve ter? Deixe seu comentário.

* ^ Por “talento”, me refiro a “aptidão natural ou adquirida”. (Dicionário Priberam da Língua Portuguesa)

Foto: Ópera de Mozart, La finta giardiniera (A falsa jardineira) apresentada no Eastman Opera Theatre por Angelique Jacob (esquerda) e Erica Schuller (direita, no fundo).

Referências:

Postar um comentário