Estou procurando alguns pequenos projetos de programação que eu possa dar aos funcionários em potencial para avaliar suas habilidades de programação. Estes serão programadores que saem da faculdade. Estou procurando por projetos que levem a alguém algumas horas e eles retornariam suas respostas após a entrevista.
Um exemplo seria pegar este parágrafo do texto e retornar uma lista de palavras únicas em ordem alfabética. Depois de cada palavra, diga-me quantas vezes a palavra apareceu e em que sentimento (s) a palavra foi aprendida.
Alguém tem alguma boa sugestão?
Respostas:
Há muito tempo concluí que nada que alguém possa fazer em pouco tempo pode me dizer algo útil sobre essa pessoa. Mas todo bom candidato já tem projetos pessoais escritos, o que pode lhe dizer muito. Por isso, substituí desafios específicos por "me dê um código do qual você se orgulhe e tenha prazer em marcar seu nome".
A escolha do projeto indica mais do que qualquer tarefa de uma hora. E então você pode passar uma hora discutindo isso para aprender ainda mais.
fonte
Fico tão cansado dessa porcaria de brincadeira. Estive em lugares que me pediram amostras de código, as separamos e depois pedimos que eu explicasse o código de exemplo de seus sistemas, que parecia ter sido escrito por garotos de 2 anos. Me pediram para implementar algoritmos de classificação obscuros, serviços de rede, guis, estruturas de dados (sempre uma árvore ou uma lista vinculada). Todo tipo de pergunta irritante e irritante sobre o que o entrevistador acha que é a parte mais importante da programação.
No final, tudo é praticamente inútil. A melhor maneira de avaliar um funcionário é contratá-lo por 30 dias e ver como ele faz o trabalho. Passe todo o tempo que quiser desenvolvendo testes, e isso não lhe dirá nada sobre como alguém trabalha no dia a dia.
fonte
Permitir que alguém faça um projeto prático em seu próprio tempo não significa necessariamente que é ele quem o faz.
Todo mundo chega cedo para uma entrevista (bem, pelo menos deveria). Temos uma planilha 'enquanto você espera' para que eles trabalhem até estarmos prontos para vê-los. Possui oito (8) perguntas que testam o conhecimento dos candidatos no idioma que usamos principalmente.
Não estamos procurando as respostas certas, pois qualquer pessoa pode corrigi-las com um computador na frente delas. Estamos à procura de processo, eles tentam a pergunta, como chegam às suas respostas.
Quando entramos na entrevista, examinamos a questão com eles e respondemos a quaisquer perguntas que possam ter, o que também pode levá-los a obter a resposta correta. Também nos permite perguntar como eles obtiveram as respostas que chegaram.
Combinamos com o trabalho anterior, descobrimos, as melhores maneiras de filtrar os candidatos.
ATUALIZAÇÃO 15/06/2016
Mudamos significativamente nosso processo na maneira como contratamos desenvolvedores.
Fase 1: uma entrevista por telefone de 15 minutos, onde fazemos 7 perguntas. Os dois primeiros são "Qual foi a coisa mais divertida em que você trabalhou?" (não precisa estar relacionado à programação) e "O que você codifica para se divertir no seu tempo livre?".
Fase 2: um mini projeto que eles concluem em seu próprio tempo. Em seguida, fazemos um compartilhamento de tela com eles e eles nos mostram o que construíram. Durante o compartilhamento de tela, também fazemos com que eles façam duas alterações em seu projeto e, em seguida, os observam trabalhar com ele e fazê-lo funcionar.
Fase 3: Entrevista presencial.
Esse processo nos permite descobrir a cultura adequada imediatamente (fase 1). Se eles puderem fazer o trabalho e realmente acompanharem a conversa (fase 2). Por fim, verifique se seus valores estão alinhados com o que estamos procurando (fase 3).
fonte
Você pode querer conferir o fantástico Cyber-Dojo de Jon Jagger .
É um ambiente integrado baseado na Web, projetado para a prática deliberada de desenvolvimento orientado a testes e para aprender sobre a dinâmica da equipe. Possui muitas pequenas tarefas de programação (kata's) e suporta uma variedade de linguagens, desde Python e Ruby a Java e C ++.
Ao contrário dos IDE projetados para produtividade, não há conclusão de código, destaque de sintaxe ou refatoração automática, para que você possa ver o que seu entrevistado pode fazer sem eles.
A melhor coisa é que, depois de fazer um kata, você pode voltar e observar a progressão vermelho / verde (ou talvez não, se não fizerem TDD * 8 ') de cada um dos kata. Toda compilação / teste confirma as alterações em um repositório git junto com os resultados do teste.
Acho que usar isso para testes de codificação de entrevistas pode dizer muito sobre não apenas a capacidade dos candidatos de resolver um problema, mas também sua abordagem para a solução de problemas e o processo que eles usam quando não são limitados por fatores externos; basta selecionar um kata apropriado para o tempo que você deseja que o candidato gaste nele.
Se você deseja seu próprio servidor CyberDojo, todo o projeto pode ser encontrado no github e há até uma máquina virtual do dispositivo Turnkey Linux vinculada a partir daí, o que significa que, assumindo que você já possui o VMware player ou o VirtualBox instalado, você pode estar em funcionamento no alguns minutos para baixar o aparelho!
fonte
Eu só entrevistei uma vez uma empresa que fez isso. Eles deram uma folha de perguntas com 6 ou 7 problemas. As instruções eram para criar um método para resolver cada problema.
Uma parte da tarefa era perceber que era possível reutilizar o código. Problemas podem usar código de outras soluções. Também não foi seqüencial. Por exemplo, a pergunta 3 pode ser escrita usando o método usado para a pergunta 5.
Eu sugeriria tentar algo assim.
Quanto às perguntas? Algumas das perguntas iniciais no site do Project Euler são boas.
Você também pode tentar um jogo simples se quiser ver como eles podem montar um projeto.
Ou, se você não quiser criar algo, peça a eles que enviem algum código de um projeto final.
fonte
Para solicitar às pessoas que concluam um projeto, você deve ter um conjunto específico de habilidades que deseja avaliar em mente e projetar o projeto para testar essas habilidades.
O que você está procurando com esta pergunta? Quantas maneiras existem para resolvê-lo e o que cada abordagem diz sobre a pessoa que escreveu a resposta? As habilidades demonstradas por uma resposta eficaz a essa pergunta são as mesmas que são mais importantes para o seu negócio?
Eu não quero as respostas para essas perguntas; Eu só quero que você tenha pensado nas respostas antes de submeter um grupo de candidatos ao seu processo. Se você souber quais habilidades está procurando, não é difícil criar uma pergunta para procurá-las. Se você usar a pergunta de outra pessoa sem entender completamente o que ela foi projetada para avaliar (se houver), estará realmente apenas se enganando e desperdiçando o tempo de todos.
fonte
Em que idioma eles escreveriam isso? Se eles estão saindo de uma escola que se concentra muito em C, isso não seria tão rápido de escrever quanto aquele que ensina Python / Perl / Ruby etc ... Ou mesmo Java ou C #. No entanto, é um bom pequeno teste.
Sugiro alguns mais fáceis, na verdade, durante a entrevista. Sem perguntas complicadas. Estou com a TMN nesta. Dê a eles algumas funções que executam tarefas básicas e pergunte o que fazem (lendo o código de outras pessoas). Em seguida, dê a eles algumas tarefas básicas (<20 linhas) para escrever no idioma de sua escolha. Isso deve ser suficiente para um nível de entrada saber se eles podem codificar ou não (em uma posição de nível de entrada). Isso, juntamente com a entrevista e o GPA, deve lhe dar uma boa idéia do que você precisa saber.
fonte
Faça com que eles implementem o Jogo da Vida de Conway para qualquer idioma que você esteja usando, usando os paradigmas de design desse idioma.
Um jogo da vida de Java ou C # Conway deve ser orientado a objetos, o LISP ou F # seria funcional etc.
fonte