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.)

Conhecimento tem prazo de validade

Um dos maiores motivos para você desejar ter apenas programadores autodidatas na sua equipe, é que boa parte de todo conhecimento técnico que qualquer programador possua hoje se tornará obsoleto em alguns anos. A experiência adquirida até o presente ajuda a resolver os problemas do passado. Os problemas do futuro exigirão um conhecimento que ainda não existe. Logo, é muito perigoso contratar programadores com base apenas no que eles já sabem. É preciso contratar aqueles que serão capazes de aprender por conta própria o que for necessário para resolver problemas que ainda estão por surgir.

Treinamentos formais não são o suficiente

Aprender por conta própria? Sim, pois não se pode contar apenas com o treinamento formal. A quantidade de tecnologias novas e relevantes é tão grande que é impossível treinar equipes em todas as que parecem promissoras. E mesmo um bom treinamento não é suficiente para capacitar alguém como um bom solucionador de problemas. No máximo, os alunos aprendem a usar ferramentas e técnicas específicas para resolver problemas específicos. Se os alunos não forem autodidatas, suas habilidades ficarão limitadas aos problemas abordados no treinamento, que são infinitamente menores em quantidade que os problemas do mundo real.

“Quando tudo o que você tem é um martelo, todos os problemas parecem pregos” (sabedoria popular)

Além disso, se sua equipe só se atualiza numa nova tecnologia quando há treinamento formal para ela, você estará sempre atrasado. Um monte de equipes de autodidatas já estarão produzindo soluções mais modernas nas outras empresas quando a sua equipe estiver apenas começado a aprender a nova tecnologia.

Aprender sozinho é fácil e divertido

Outro motivo é que para um programador talentoso, apaixonado e autodidata, aprender uma nova linguagem, framework ou técnica é fácil e até divertido. Dê a ele tempo e os recursos necessários para estudar e em questão de semanas ele estará suficientemente produtivo no novo conhecimento. A fluência virá com o tempo.

Na maioria das vezes, é melhor contratar um bom programador e dar a ele tempo para aprender Python, Ruby, Objective-C, Erlang ou o que quer que seja, do que contratar um programador mediano que já conheça o básico da linguagem em que ele vai trabalhar. (Uma exceção é se você está procurando um programador apenas para “apagar incêndios”.)

Acredite, eles existem

Programadores talentosos, apaixonados e autodidatas são a minoria, mas acredite, eles existem. Gostaria de poder dizer que todos eles estão muito bem empregados ou tem um negócio próprio bem sucedido, mas a realidade é que boa parte deles trabalha para empresas que acham que "programador é tudo igual". Se sua empresa não é desse tipo e você quer aprender a identificar as características que tornam alguém um bom programador para levar pessoas assim para a sua equipe, veja os artigos Como atrair bons programadores e Como identificar bons programadores.

O que você achou dessa série de artigos sobre as características mais importantes a serem procuradas num programador? Gostaria de citar alguma outra característica? Comente.

* ^ Michaelis - Moderno Dicionário da Língua Portuguesa. "Autodidatismo"

Referências:

13 comentários:

Luís Eduardo Jason Santos disse...

Grande post, Dirlei.

Essa sua série de posts foi genial -- eu não teria feito melhor!

Fiquei feliz de reconhecer na sua argumentação alguns elementos de nossas conversas.

Parabéns pelo excelente blog, e desculpa não ter nenhuma crítica pra fazer.. rs

Dirlei Dionísio disse...

Muito obrigado, Jason! Fiquei muito feliz ao ler seu feedback. : )

Realmente, muito do que escrevi nesses últimos artigos fez parte de várias das nossas conversas. Na próxima série de artigos, não será diferente.

Obrigado pela visita e pelo comentário.

Grande abraço!

Vinicius A. Santos disse...

Grande série de artigos Dirlei !!! Parabéns mesmo !!

Acho que mais uma vez, não preciso dizer que concordo com vc...

Você conseguiu separar muito bem tais características que são( em minha opnião ) muito ligadas...

O talento e a paixão levam implicitamente ao autodidatismo, e como vc bem colocou, aprender é uma diversão com tais características...

Uma coisa que me deixa bastante chateada é que muitos programadores concordam e propagam a idéia de que "programador não gosta de ler, gosta de escrever código" ou então "programador não gosta de documentar". Como não gosta de ler ?
Todo verdadeiro programador/analista/DBA tem pelo menos 4 livros de mais de 1000 páginas em casa.
Existem coisas que vc consegue aprender funçando, obsevando, pela sua intuição e experiência acumuladas, mas definitivamente outras coisa não.

Coisas como Pilha de Chamadas, Semáforos, Processos, E/S, Teoria Relacional, OOP e uma infinidade de outras coisas, exigem muito estudo por um período razoável de tempo.

Um programador dizer que ele não gosta de ler e dizer que a maioria deles também não gosta, é demais...

Quem ama o que faz, tem sede por conhecimento, não se contenta com o "arroz e feijão", é um eterno apaixonado e está sempre tentando mudar o mundo para melhor.

É bom saber que existem pessoas que pensam como vc, eu concordei com praticamente todos os seus artigos.

Um abraço!

Andre Carregal disse...

Também gostei muito da série, parabéns pelo estilo e clareza de idéias. Acho muito bacana a forma como você tem divulgado conceitos importantes para o desenvolvimento dos que se interessem por programação.

Não sei se você tem intenção de continuar a série, mas se você aceitar a sugestão, além destas três características já mencionadas eu acrescentaria uma outra: integridade.

Sem querer diminuir o valor das outras três, a meu ver a integridade (em termos de ética pessoal e profissional) de um candidato/a é fundamental num processo seletivo sério.

Não sei se ele é o autor original da frase, mas Warren Buffett [1] menciona que em um processo seletivo deve-se procurar pessoas íntegras, inteligentes e cheias de energia. Mas mais importante, se a pessoa não tiver integridade, as outras duas qualidades vão te prejudicar.

Que venham mais posts como estes! :o)

[1] - http://www.goodreads.com/author/quotes/757.Warren_Buffett

Dirlei Dionísio disse...

Olá @Vinicius!

Você está coberto de razão, há coisas que não aprendemos apenas com a prática e a experiência; para essas coisas é preciso estudar, aproveitar do conhecimento que já está disponível. Com a facilidade de acesso a informação que temos atualmente, não há desculpa para um programador parar de aprender.

Esses programadores que não lêem para se aperfeiçoar e ainda propagam a idéia de que "programador não gosta de ler" têm seu espaço no mercado: as empresas que acham que "programador é tudo igual". Um casamento perfeito, não? rss

Um abraço e obrigado pelo comentário!

Dirlei Dionísio disse...

Grande @André Carregal!

Fiquei feliz ao vê-lo estrear um comentário por aqui! Muito obrigado pelo seu feedback.

Eu não tinha a intenção de continuar essa série sobre as características de um bom programador, mas a sua sugestão me levou a reflexão. Realmente, não adianta ter na equipe profissionais com as características que citei, mas sem integridade. É um ótimo assunto para um outro artigo. Foi uma bela sugestão, obrigado! Vou pensar se estendo essa série ou escrevo um artigo independente sobre o assunto.

Um abraço!

Valmir disse...

No meio de tantos gênios, só posso dizer: Parabéns! Continue com o bom trabalho.

Dirlei Dionísio disse...

Obrigado, Valmir!

Rodolfo disse...

Excelente post. Gostei de sua postura em relação aos critérios de seleção de candidatos (oferta que você mandou recentemente para a lista do dojo-rio).

E bem, concordo contigo em relação ao autodatismo. O que vejo por aí é muito batedor de martelo...

Dirlei Dionísio disse...

Olá, Rodolfo!

Que bom você ter gostado da forma como coloquei os critérios de seleção. Ofertas de emprego precisam causar essa impressão positiva para chamar a atenção dos melhores candidatos.

Muito obrigado pela visita e pelo comentário! Um abraço.

Anônimo disse...

Nossa gostei muito de seu post, pois o que mais existem é gente dentro de um quarto entupidos de livros ou materiais que pegam na internet e são pessoas desconhecidas no mundo de programadores, pois sou um desses e nuca tive oportunidade de estudar pois nunca tive condições financeiras ai fico a mercê de um dia quem sabe estudar e conseguir um certificado para apresentar-me a uma empresa e conseguir pelo menos um trabalho digno.

Dirlei Dionísio disse...

Olá Anônimo,

Infelizmente a maioria das empresas avalia apenas o currículo dos candidatos, sem levar em consideração características como as que citei nessa série de artigos. Os que não tem boa formação acadêmica ficam em muita desvantagem nesse caso, mesmo que sejam ótimos profissionais.

Tenho duas sugestões para aqueles que não conseguem um bom emprego por esse motivo:

1 - Tornar-se um empreendedor (citei algumas oportunidades para programadores neste artigo).

2 - Adquirir a formação que o mercado espera, que para quem trabalha com desenvolvimento de software, normalmente, é pelo menos o curso superior. Hoje há cursos tecnológicos online gratuitos em universidades públicas e outros em universidades particulares a um custo mais acessível que o curso presencial.

Essas são as minhas dicas. Obrigado pelo seu comentário!

Um abraço.

Dirlei Dionísio disse...

Complementando o comentário acima, aqui vai o link para a Universidade Aberta do Brasil: http://www.uab.capes.gov.br.