Como reconhecer um bom programador em uma entrevista de emprego

Esse post contém apenas a tradução da resposta do usuário Clay Nichols no Stack Overflow (https://softwareengineering.stackexchange.com/a/140846). Abaixo seguem algumas dicas para reconhecer um bom programador durante uma entrevista de emprego.

Indicadores positivos:

  • Apaixonado por tecnologia
  • Programa também como hobby

  • Vai tagarelar sem parar sobre algum assunto técnico sempre que for encorajado
  • Projetos pessoais significantes (e muitas vezes, em grande quantidade) ao longo dos anos
  • Aprende novas tecnologias por conta própria
  • Tem opinião formada sobre qual tecnologia é melhor para cada finalidade
  • Desconfortável com a ideia de trabalhar com uma tecnologia que ele não acredita ser a “certa”
  • Perceptivelmente inteligente, consegue ter ótimas conversas sobre tópicos diversos
  • Começou a programar bem antes de começar a faculdade ou a trabalhar
  • Possui alguns “tesouros escondidos”, isto é, alguns grandes projetos pessoais que não estão no currículo
  • Conhecimento sobre uma grande variedade de tecnologias diferentes (e que talvez não estejam no currículo)

Indicadores negativos:

  • Programar é apenas trabalho
  • Não gosta de bater papo sobre assuntos do trabalho
  • Aprende novas tecnologias em cursos pagos pela empresa
  • Feliz em trabalhar com qualquer tecnologia que a empresa escolheu, “todas as tecnologias são boas”
  • Não aparenta ser muito inteligente
  • Começou a programar na faculdade
  • Toda sua experiência com programação está listada no currículo
  • Focou apenas em um ou dois stacks de tecnologia (exemplo: tudo relacionado com desenvolvimento Java), sem nenhuma experiência fora desses grupos.

Sugestões adicionais para avaliar um bom programador em entrevistas de emprego:

  • Aplicar o teste FizzBuzz (ou algum outro similar, que consiga testar a habilidade básica de escrever um algoritmo)
  • Aplicar uma versão mais difícil do FizzBuzz (para chegar até o ponto em que o programador falha ou quase falha)
  • Discutir o código implementado pelo candidato para verificar se eles possuem autocrítica e se estão dispostos a encontrar formas de melhorá-lo (pois provavelmente não tiveram tanto tempo assim para fazer os testes acima). Exemplos:
    • bons nomes de variáveis (eu já vivenciei programadores muito experientes nomearem variáveis como “flag” em produção (WTF??))
    • modularização
    • antecipação de problemas e “programação defensiva”
  • Disposto a ver “falhas” como oportunidades de crescimento. Eu acho que os melhores programadores sempre procuram falhas em seus códigos anteriores sem qualquer desconforto. Eles não são tão egocêntricos a ponto de interpretar uma falha passada como uma afronta pessoal. Eles usam isso como uma oportunidade de sempre fazer melhor.
  • Eles sabem debugar?
  • Eles sabem fazer teste unitário? (Já conversei com muitos programadores que apenas dizem que o “controle de qualidade faz isso”. Não estou falando sobre Testes, estou apenas falando sobre testar: você escreveu uma função, ela funciona? Ela consegue lidar razoavelmente com os problemas mais prováveis (parâmetros NUL, etc.)? Se você não consegue fazer isso, como sabe quando terminou sua tarefa?)
  • Eles possuem boas habilidades de comunicação? (no mínimo: boa compreensão e autoconhecimento sobre o que eles entendem, ou não, e dispostos a dizer “Eu não entendi, por favor me explique novamente”)

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>