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:

14 comentários:

Unknown disse...

Nossa, muito bom o post!
Fiquei pensando se tenho ou não talento :/
aiuehuiaeiu

Dirlei Dionísio disse...

Obrigado, @Zoio! Talento, com certeza você tem. Se não for para fazer software, é para alguma outra coisa. [ ]s

Magno Machado disse...

Concordo.... Um programador talentoso é capaz de fazer coisas muito além das possibilidades de outros menos talentosos.

Mas não vejo o talento como fator determinante para o sucesso... Connheço pessoas bem sucedidas na área, e que não tem tanto talento assim. (Pior sou eu que não tenho nem talento nem sucesso rsrsrs)

Mas falando sério... Fatores como visão de mercado e relacionamento interpessoal tambem são importantíssimos.

No mais.... Excelente post (como sempre)!

Abraços

Júnior disse...

Excelente post, esperando a continuação

Dirlei Dionísio disse...

Magno, essas pessoas que você citou devem ter outros talentos, não necessariamente técnicos, que as tornaram bem sucedidas.

Bill Gates é indiscutivelmente bem sucedido, mas seu maior talento não é fazer software (ele nunca foi programador). Ele fez sucesso, em grande parte, por causa dos seus talentos - ainda que não fossem talentos técnicos.

Eu não saberia dizer exatamente o que é preciso para ser bem sucedido, mas estou convencido de que para fazer bom software ("fazer" = "colocar a mão na massa"), é preciso programadores talentosos. Agora, para o software fazer sucesso, certamente quem o idealiza precisa ter uma ótima visão de mercado.

Não sei falar sobre o seu sucesso, mas pelos seus artigos e pelas suas participações nas comunidades de programação, acredito que você tenha sim talento como programador.

Obrigado pela visita e pelo seu comentário.

Grande abraço!

Dirlei Dionísio disse...

Obrigado, @Júnior! Valeu pelo comentário!

Vinicius A. Santos disse...

Grande Dirlei !!!!

Como sempre, concordo em gênero, número e grau com você.

Eu poderia ficar 2 anos compondo, que eu nunca me tornarei o Cazuza, eu não tenho o talento dele.

Eu estava ontem mesmo refletindo sobre as mudanças da nossa área, acho que o talento puro também não ajuda muito.

Precisamos cada vez mais dominar coisas como SPED, Contabilidade, RH, etc. As fronteiras da nossa área vem aumentando nos últimos anos, e estamos gradativamente nos tornando tão responsáveis quanto um contador, por exemplo, mediante a uma empresa.

Aumentar nosso campo de visão é muito importante dentro da profissão, para qualquer tipo de software.

Precisamos cada vez mais aliar os serviços da TI com outras áreas, para atender as necessidades dos usuários, que no final das contas, são nossos verdadeiros clientes.

E isso exige com certeza talento, além de vontade, muito estudo e muito trabalho.

Um abraço!

Leandro Laia disse...

Legal Dirlei, esperando os próximos posts! :)

Quais seriam os parâmetros decisivos pra definir se o programador tem talento ou não? Vc tem uma ideia?

O que o Vinícius destacou é uma verdade. Quem desenvolveu software comercial nesses últimos anos tem praticamente aprendido bastante sobre contabilidade com a NFe e agora com a NFSe.

Será que os contadores estão com seus dias contados? Pois para uma empresa poder emitir documentos fiscais, é necessário apenas os procedimentos do software estarem homologados de acordo com as especificações, e gerar as devidas prestações de contas eletrônicamente. Será que viajei na maionese?

Dirlei Dionísio disse...

Opa, @Vinicius!

É bem por aí, talento é importante, mas sozinho não faz milagre. Estou com dois artigos encaminhados falando sobre as outras duas características que considero fundamentais. Eles tocam em parte do que você escreveu, mas não vou entrar em detalhes para não estragar a expectativa... hehehe.

Grande abraço!

Dirlei.

Dirlei Dionísio disse...

Grande @Leandro!

Tenho sim alguns parâmetros para identificar programadores talentos. Eu pretendia que esse artigo abordasse as características mais importantes e como identificá-las, mas o assunto se mostrou maior do que eu imaginava, por isso o dividi e duas séries: a primeira sobre as características e a segunda sobre como identifica-las. Então, só daqui a três artigos vou começar a responder a sua primeira pergunta :o)

Não sei dizer se os contadores estão com os dias contados. Meu palpite é que não, já que alguém precisa ficar antenado nas mudanças que acontecem na burocracia que os governos (municipal, estadual e federal) impõem às empresas. A maioria das empresas não deve querer se garantir apenas em software. Mas é possível haver uma pressão para que a remuneração dos contadores diminua, visto que parte do seu trabalho já é automatizada. Mas é apenas um palpite.

Obrigado pelo seu comentário!

Um abraço!

Magno Machado disse...

"Magno, essas pessoas que você citou devem ter outros talentos, não necessariamente técnicos, que as tornaram bem sucedidas. "
Sim, com certeza. Na verdade, eu me expressei mal!

Quis dizer que são pessoas bem sucedidas na nossa área, mas sem talentos como desenvolvedor, como o Bill Gates que você citou

Dirlei Dionísio disse...

Entendi, @Magno. Há mesmo muita gente "bem sucedida" na nossa área, mas sem talento técnico enquanto há muita gente talentosa e não tão "bem sucedida". É uma pena.

Gustavo Doggy disse...

Sinto mas tenho que discordar, quando se trata de algo como 'Desenvolvimento de Software' o talento não é exatamente como você falou, e pode ser adquirido. Assim, os que não tem "talento" e estão se dando bem, logo poderão adquirir talento (ou não).

Dirlei Dionísio disse...

Olá Gustavo, obrigado por compartilhar sua opinião. Mas eu não disse que talento não pode ser adquirido, eu disse que não pode ser ensinado. É como você pode reparar no trecho "os indivíduos podem fazer grandes mudanças em si mesmos, mas nós não podemos fazer essas mudanças neles".

Obrigado pela visita, um abraço!