Acho que nossa empresa pode criar desafios projetados para encontrar candidatos a engenheiros de software que sejam:
- Bom para resolver problemas, não para impressionar os recrutadores.
- É mais provável que tenha medo de vir até nós em uma feira de carreira.
- É mais provável que sejam subutilizados em seu trabalho de programação atual, mas são introvertidos demais para fazer algo a respeito.
Para um exemplo, consulte este artigo que discute o Facebook ocultando um endereço de email em uma imagem usando Piet .
Eu simplesmente não consigo encontrar estudos ou dados concretos sobre se isso realmente funciona ou não.
Respostas:
Como qualquer ferramenta, elas podem ser extremamente úteis ou extremamente perigosas. Uma furadeira elétrica facilitará muito sua vida - até você perfurar a parte superior da mão e pousar no pronto-socorro. O mesmo acontece com os desafios de programação no recrutamento.
O bom : essa pode ser uma maneira eficaz de detectar alguém que, no papel, pode não ser tão atraente como programador. Aquele formado em algo que tem muito pouco a ver com o que as pessoas normalmente consideram "campos de programação" - Biologia, Ciência Política, História da Arte ...
Se eles explodirem em seus desafios, então ótimo. Eles aprenderam a programação, de alguma forma, e aparentemente está preso. Se eles ficarem atolados, sua aplicação pode realmente ser apenas algo que escapou ao RH.
O ruim : um desafio de programação mal escrito não avalia realmente a habilidade de programação . Ele testa a resolução de quebra-cabeças por meio de habilidades de programação . O problema é que, mais tarde, há uma questão de duas variáveis - você é bom em resolver quebra-cabeças e pode fazer essa solução por código. É possível ter um programador perfeitamente talentoso que falha completamente na parte de resolução de quebra-cabeças.
A maioria dos desafios de programação que eu vi também falha em detectar pessoas próximas ao que você deseja, dependendo de como está escrito.
Existem maneiras de mitigar os dois. Para o último, eu consideraria aceitar "crédito parcial" na forma de soluções que não parecem estar chegando lá: "Aqui está como eu resolveria isso ..." etc. se você estiver realmente procurando por um problema solucionadores. Afinal, poucas pessoas codificam sozinhas e, se a resposta delas estivesse correta, elas poderiam perguntar a um colega sênior "Ei Jim, você conhece uma boa maneira de implementar o X?", Que pode muito bem ser alguém que você deseja seu time.
O primeiro é um pouco mais difícil, porque o ônus disso está em você. Escolha quebra-cabeças / problemas / desafios importantes. Se ninguém no seu grupo já se deparou com algo que se parecesse remotamente com o problema do Vendedor ambulante em seu trabalho, não faça um giro inteligente do Vendedor ambulante como o desafio que você enfrenta. Dessa forma, se eles estão falhando no aspecto de "resolver o problema e codificá-lo", pelo menos estão falhando em algo que realmente surgirá, em vez de alguma esperteza arbitrária que sua equipe cuspiu durante o almoço.
fonte
Muito efetivo.
... desde que seu processo de recrutamento não contenha apenas desafios de programação. Enquanto eu traste e odeio fazer a avaliação técnica de qualquer entrevista, ele faz agir como um simples indicador para filtrar idiotas. E filtrar idiotas é o cerne do processo de recrutamento, para que você possa gastar mais do seu tempo com aqueles que estão aptos para o papel.
Ao entrevistar, considero muito importante ver o que as pessoas dizem sob pressão. Se eles estão dispostos a cuspir um monte de porcaria flagrante, é facilmente identificável e saberei que essa pessoa não vale o meu tempo.
Isso não é uma coisa ruim. Se o seu candidato em potencial não está disposto a apostar que ele vale a pena ser empregado lá, você realmente quer recrutá-lo?
fonte
Suponho que você queira que alguém trabalhe como parte de uma equipe - assim, o melhor programador é a pessoa que trabalha melhor com os membros da equipe existentes. Você deseja reunir um grupo de pessoas que possam se comunicar efetivamente entre si, que realmente se dão bem (elas não precisam ser amigas, mas precisam de bom relacionamento e respeito), que estão dispostas a concordar e use padrões comuns de desenvolvimento (código e processo), dispostos a ajudar suas faculdades quando lidarem com um novo problema ou tiverem um bloqueio mental (teoria dos quatro olhos). Você também precisa encontrar uma mistura de tipos de personalidade; portanto, se você tem uma equipe de introvertidos que raramente fala, a contratação de um membro mais falador da equipe pode melhorar a dinâmica da equipe, o que tornará a equipe mais produtiva. Por outro lado,
Depois de conseguir que uma pessoa se encaixe nessa mistura, considere a habilidade / habilidade técnica. Estes também precisam complementar. Todos têm áreas diferentes nas quais são fortes, outros são bons e alguns não têm idéia. Portanto, você precisa reunir um conjunto de forças relevantes para o projeto em questão. Lembre-se de que um codificador intermediário que trabalha bem com um bom codificador terá o nível de seu trabalho aumentado pela pessoa mais forte. O elo mais fraco da cadeia são os relacionamentos, não as habilidades (desde que a habilidade esteja na equipe)
Boa sorte em montar isso.
fonte