Como reconhecer um bom programador? [fechadas]

129

Nossa empresa está procurando por novos programadores. E aí vem o problema - há muitos desenvolvedores que parecem muito bem na entrevista, parecem conhecer a tecnologia que você precisa e ter um bom histórico de trabalho, mas depois de dois meses de trabalho, você descobre que eles não são capazes de trabalhar em uma equipe, escrevendo algum código leva muito tempo, e além disso, o resultado não é tão bom como deveria ser.

Então, você usa algum teste formalizado (existe algum?)? Como você reconhece um bom programador - e uma boa pessoa? Há alguma pergunta “boa” simples que possa revelar os problemas futuros? ... ou é apenas sobre o seu "sentimento" sobre a pessoa (ou seja, principalmente a sua experiência), e experimentá-lo?

Editar: De acordo com a resposta de Manoj, aqui é a questão relacionada à tarefa de codificação em a entrevista de emprego.

    
por 5 revs, 4 users 57%gius 11.04.2018 / 10:43
fonte

12 respostas

155

Faça com que falem sobre o que lhes interessa. Ainda não conheci um desenvolvedor que é realmente apaixonado quando fala sobre programação, mas não consegue codificar. Eles podem existir, é claro - e sua entrevista também deve verificar a competência -, mas a paixão é um bom indicador da minha experiência. (Note que isso não é o mesmo que ser capaz de "falar a conversa" em termos de chavões).

Pergunte-lhes o que não gostam na sua língua ou plataforma favorita. Como eles consertariam as coisas? O que eles gostariam de ver na próxima versão? Eles têm projetos de hobby? Se eles tiverem um blog, leia. Verifique sua presença on-line geral.

    
por 20.11.2008 / 10:36
fonte
82

Contratar pessoas boas é difícil .

Levou alguns erros reais para eu melhorar. Você começa a confiar muito mais no trato intestinal depois das primeiras vezes em que não confia e se arrepende.

Tenho um grande respeito pelas Perguntas da tela do telefone de Steve Yegge e usei esse recurso como base para entrevistar pessoas com algum sucesso.
Eu também acho que me tornei melhor em entrevistar pessoas depois de ler o guia de Joel para a entrevista com guerrilheiros (agora na versão 3.0, que é à frente da versão para a web e tudo, só tem que ser bom).

Há também 57 outras perguntas (em 20/11/2008) em Stackexchange de engenharia de software marcadas com entrevista e alguns deles parecem muito relevantes, então verifique-os.

    
por 03.01.2018 / 20:53
fonte
46

Algumas ideias:

  • Faça várias perguntas abertas de vários ângulos diferentes:

    • Revise alguns códigos. O que é identificado? Erros técnicos, inconsistências de estilo, comentários, algoritmos, manutenibilidade, etc ...
    • Escreva algum código. Procure pelo processo, a prova de bala, a legibilidade, etc.
    • Crie um design de alto nível para um sistema pequeno. Procure compreensão do problema, abordagem, comunicação, integridade, detalhe.
    • Descreva o processo de desenvolvimento de software. Procure design, colaboração, revisão, teste, bons / maus hábitos e experiência geral.
  • Escolha algo - qualquer coisa - o candidato alega conhecer bem. Faça uma pergunta simples e, em seguida, com base na resposta, pergunte outra, um pouco mais detalhada, e continue "escavando" até chegar ao limite do conhecimento do candidato. Isso dá uma ideia de:

    • Honestidade: ele sabe tanto quanto reivindicou?
    • Profundidade de conhecimento: como ele aprende as coisas?
    • Comunicação: como ele explica algo que não lhe é familiar? O processo de pensamento é lógico?
    • Reação a situações estressantes: com que dificuldade ele / ela trabalha para responder? Ele / ela finge? O inevitável "não sei" é fácil ou difícil?
  • Pergunte como o candidato lidou com várias situações de empregos anteriores: trabalho em equipe, projetos atrasados, depuração, etc . As respostas são positivas ou negativas? Apaixonado? Inteligente? Arrogante?

Eu acho os melhores candidatos entusiasmados, experientes, confiantes, mas educados e, o mais importante, presente . Você precisa saber que tem alguém lá dentro. : -)

    
por 20.11.2008 / 13:49
fonte
39

Para reconhecer um bom programador, você tem que ser um bom programador. Isso significa que você precisa saber programar muito bem para ver as coisas que são ditas e feitas na entrevista, e você precisa saber quais perguntas fazer.

Eu tenho visto candidatos dando a resposta errada na entrevista, mas a explicação deles mostrou que eles conheciam o assunto (e, portanto, poderiam facilmente obter a resposta certa procurando na internet). Para ver isso, você precisa conhecer muito bem o assunto sobre o qual você está perguntando.

Outra coisa é evitar perguntas sobre detalhes que poderiam ser facilmente pesquisados. Essa pergunta só mostra como é bom o candidato lembrar-se das coisas, não se ele ou ela realmente tem o conhecimento e a compreensão que você está procurando.

Minha recomendação é obter ajuda de alguém que conheça muita programação e tenha boas habilidades pessoais para ajudar nas entrevistas.

Editar: também escrevi um comentário sobre entrevistas aqui .

    
por 23.05.2017 / 14:40
fonte
23

Lembre-se de que a capacidade de programação não é tudo. Você pode ter o melhor programador do mundo trabalhando para você, mas se eles odeiam trabalhar com outras pessoas, você não os achará muito úteis.

Uma personalidade de programadores deve estar no topo da lista do que a maioria dos empregadores parece classificá-la. No meu local de trabalho atual, eles são muito cuidadosos ao contratar o tipo correto de pessoa.

As pessoas geralmente aprendem a ser melhores programadoras, as pessoas geralmente não conseguem aprender a ser seres humanos melhores.

    
por 08.04.2011 / 10:10
fonte
16

Faça-os codificar. Dê um problema que pode ser resolvido em 4 ou 5 horas e inspecione o código da documentação, o estilo de codificação, como ele planejou a solução antes de começar a codificar etc. Ele não precisa realmente resolver o problema. E como Jon Skeet mencionou, faça-os falar sobre programação, sua linguagem de escolha e coisas assim. Você pode reconhecer a paixão em um bom programador. Pergunte quantos sites relacionados a programação eles seguem, como stackoverflow. Os blogs que eles seguem podem ser um bom indicador.

    
por 20.11.2008 / 10:43
fonte
16

Eu gosto da resposta da paixão. Eu acredito que você tem que ser apaixonado pelo que você trabalha para realmente ser muito bom nisso.

Um bom programador programa do lado além do trabalho (de vez em quando pelo menos). Gosta de resolver problemas de programação. E quando ele / ela não consegue encontrar um programa que resolva uma necessidade particular em casa, ele tentará resolvê-lo por conta própria.

Mas existem vários tipos de programadores.

  • Você tem quem adora documentar. Pessoalmente eu odeio documentando. Mas documentar o que é feito pode ser importante.
  • Você tem os "hackers". Aqueles que estão empenhados em resolver um quebra-cabeça complexo, onde você pode procurar no google, provavelmente não encontraria uma solução. Eles podem resolver "qualquer problema" desde que tenham as ferramentas de que precisam.
  • Você tem aqueles que se educam para ser programadores apenas porque o mercado era bom para ser contratado para a programação. Essas são geralmente medíocres porque lhes falta a paixão.
  • Você tem aqueles que são excelentes em se comunicar e "podem resolver qualquer coisa", mas quando conseguem o emprego, ficam com os demais para obter ajuda para o problema que estão resolvendo.

Se você puder encontrar o "hacker" que também documenta muito bem e tem excelentes habilidades de comunicação, acredito que você acertou o jackpot.

Ah, e uma última coisa. Você provavelmente não quer um programador que tenha ambições de líder, já que ele só usará programação para lançar. Isso significa que você perderá esse recurso mais cedo ou mais tarde.

Uma pergunta que eu faria ao contratar um programador seria: "Por que você se educou como programador?". Isso seria uma oferta inoperante se eles hesitarem lá.

Essa é a minha opinião.

    
por 06.07.2017 / 15:51
fonte
7

Um amigo meu está trabalhando em uma empresa onde eles têm um passo adicional no processo de contratação: após a triagem inicial e entrevista, o candidato tem que "testar o trabalho" por alguns dias. Ele me disse que, embora um candidato tivesse todas as habilidades e talentos necessários, eles não o contratavam porque ele não era uma pessoa boa para se trabalhar.

    
por 20.11.2008 / 13:31
fonte
6

É muito difícil reconhecer um programador baseado apenas em uma entrevista de emprego.

Algumas coisas que decidem que alguém é um bom programador são:

  • capaz de trabalhar em equipe
  • escreve um código bom que é compreensível e que pode ser mantido
  • é capaz de aprender sobre novas tecnologias

Então você tem algumas pequenas dicas que você pode descobrir em uma entrevista:

  • O candidato conhece uma linguagem de tecnologia / programação ou sabe várias delas? Se ele conhece diferentes linguagens, ele parece ser capaz de aprender coisas novas e, possivelmente, saber sobre as desvantagens de sua atual tecnologia / linguagem preferida. Então, peça conhecimento além da tecnologia que você usa na sua empresa.
  • Peça projetos em que ele já trabalhou, especialmente projetos de hobby e código aberto. Os projetos de hobby mostram que ele gosta de programar e fazer até mesmo em seu tempo livre (e dessa forma melhora suas habilidades). Em um projeto de código aberto, você pode procurar o código que ele escreveu. Se o projeto envolver mais de uma pessoa, você poderá obter dicas sobre suas habilidades em equipe. Em um projeto de sistema operacional, você pode pesquisar os arquivos de lista de discussão para saber mais.
por 20.11.2008 / 11:02
fonte
3

Você pode realizar algum teste na entrevista.

Mas muitas vezes também há um problema com o próprio ambiente de trabalho. Certamente isso pode não ser o caso da sua organização, mas é bastante comum no campo da indústria de software que a dívida tecnológica se torne muito grande. Então, quando você contrata novas pessoas, não ajuda muito se elas são boas ou não, por causa da dívida. Maximizar a legibilidade e a compreensão do código do seu programa ajuda os recém-chegados a entrar no trabalho.

Também muitas pessoas são tais que podem cooperar, mas às vezes não há como cooperar. Por exemplo, se todas as pessoas são desenvolvedores, elas devem fazer o seu trabalho. Bem, eles fazem. Mas você tem um arquiteto, que dirige o projeto de desenvolvimento e mantém reuniões e tal? Desenvolvedores normais podem sentir que não têm mandato necessário para iniciar reuniões e podem pensar que interromper outros de vez em quando não é o caminho.

A comunicação com um outro não deve ser o objetivo final. Quanto menos comunicação for necessária, melhor, mas somente se menos for possível. Menos se torna possível se você tiver um arquiteto. A quantidade total de comunicação pode permanecer em bom nível, mas você obtém mais resultados para a mesma quantidade de comunicação.

    
por 20.11.2008 / 10:49
fonte
3
Primeiramente eu começo com a entrevista usual, eu considero muito importante para ver se a pessoa na minha frente vale alguma coisa, e para determinar suas habilidades e conhecimentos.

Depois disso eu uso algumas técnicas no campo de Java, como discutir alguns princípios, principalmente tirados do Java efetivo.

Nesse estágio, quando penso que posso ter um bom programador na minha frente, dou a ele um trecho de código para revisá-lo por código. O que eu quero ver é que ele pode identificar as partes perigosas do código, dar algumas dicas sobre melhorias, encontrar armadilhas no desempenho de um multi-threading e que ele pode distinguir entre observações importantes e "observações de gosto". Tudo isso me ajuda a encontrar um funcionário mais eficiente.

mas no final eu sempre lembro que contratar é uma espécie de jogo ... muito difícil de prever ...

    
por 03.03.2012 / 09:07
fonte
2

Eu sei que isso não responde ao que você está perguntando, mas eu recomendo, leis permitindo, sempre contratar de forma temporária no início (duas semanas ou um mês, dependendo do trabalho). Se a pessoa vale a pena, ele não fará objeções, além de ser uma salvaguarda para ambos (você pode deixá-lo ir e ele pode acabar não gostando do trabalho e ir embora).

    
por 20.11.2008 / 10:43
fonte