O programador não programador

Acho difícil de acreditar, mas os relatos continuam chegando pelo Twitter e por e-mail: muitos candidatos que se apresentam para entrevistas de emprego em programação não sabem programar. De jeito nenhum. Veja este e-mail recente de Mike Lin:

O artigo Por que os programadores não podem… Programar? mudou a maneira como eu fazia as entrevistas. Eu costumava começar criando um relacionamento. Isso se mostrou muito demorado quando, como o senhor mencionou, a grande maioria dos candidatos era simplesmente não técnica. Então, comecei a começar com perguntas técnicas. Primeiro, passei das perguntas fáceis para as difíceis. Depois, percebi que identificava as rejeições mais rapidamente se fizesse o caminho inverso – perguntas difíceis primeiro – desde que as perguntas difíceis ainda estivessem na categoria “se o senhor não sabe isso, não pode trabalhar aqui”. A maioria das minhas entrevistas ainda levava cerca de vinte minutos, porque as perguntas difíceis levam algum tempo para serem respondidas e avaliadas. Mas foi uma grande melhoria em relação ao método de construção de relacionamento, e isso pode ser feito por telefone.

Depois de ler seu artigo, comecei a fazer entrevistas de código por telefone, usando reuniões na Web. Meu tempo de entrevista foi reduzido para cerca de 15 minutos cada para identificar as pessoas que simplesmente não sabem programar – a grande maioria.

Escrevi esse artigo em 2007 e fiquei atônito, mas não totalmente surpreso, ao saber que, três anos depois, “a grande maioria” dos chamados programadores que se candidatam a uma entrevista de emprego em programação não consegue escrever o menor dos programas. Para deixar claro, difícil é um termo relativo – não estamos falando de problemas complicados de entrevista de pós-graduação em ciência da computação no estilo Google. Isso é coisas extremamente simples que estamos pedindo aos candidatos para fazer. E eles não conseguem. É o equivalente a tentar contratar um motorista de caminhão e descobrir que 90% dos candidatos não conseguem encontrar o pedal do acelerador ou a alavanca de câmbio.

Concordo, é uma loucura. Mas isso acontece todos os dias e é (aparentemente) um problema epidêmico de contratação em nosso setor.

O senhor precisa responder imediatamente às perguntas simples da entrevista técnica para eliminar as legiões de programadores que não programam. Triagem por telefone é uma escolha sábia, como já observei anteriormente. Mas a triagem pela Internet é ainda melhor e, sem dúvida, mais natural para o código.

Eu ainda não estava muito satisfeito com o fato de ter que iniciar a reunião na Web e fazer com que esses caras compartilhassem seus desktops comigo. Procurei outras ferramentas adequadas para fazer entrevistas curtas de codificação no estilo “caneta e papel” pela Web, mas não encontrei nenhuma. Então, fiz o que qualquer programador que se preze faria. Escrevi um.

Cara, valeu a pena! Programo minhas avaliações técnicas iniciais com os candidatos a emprego em blocos de 15 minutos. Infelizmente, geralmente termino em 5 a 10 minutos. Agendarei uma entrevista real com o candidato se ele puder, pelo menos, escrever um programa simples de 10 linhas. Isso não acontece com frequência, mas pelo menos não preciso mais perder muito tempo.

Mike acrescenta um aviso de que sua ferramenta caseira de entrevista de codificação não tem a intenção de se exibir seu . Ele precisava de uma ferramenta, então criou uma e a compartilhou conosco. É bem possível que existam outras por aí; quais ferramentas on-line o senhor usa para selecionar programadores?

Três anos depois, ainda estou me perguntando: Por que as pessoas que não conseguem escrever um programa simples sequer cogitam a ideia eles podem conseguir empregos como programadores? Claramente, alguns deles devem estar tendo sucesso. Isso significa que nossos padrões de entrevista para programadores em todo o setor são lamentavelmente inadequados, e isso é uma vergonha. É degradante para todos os programadores que trabalham.

Pelo menos os programadores ruins pode ser educados; os programadores que não programam não só não têm esperança como também barateiam as carreiras de todos ao seu redor. Eles devem ser erradicados, começando com testes técnicos simples de programação que devem fazer parte do todos os entrevista com programadores.