Preciso de uma maneira de filtrar currículos de pessoas que simplesmente copiam e colam o código e depois esperam que funcione, e, se funcionar, fazem o check-in. Tudo isso acontece sem ter um entendimento (ou cuidado) para entender o restante do código no sistema.
Claro que sei que copiar e colar código faz parte do aprendizado de um novo objeto, controle, etc ... mas como saber se isso representa 70% (ou mais) da carreira de desenvolvimento?
Encontrei alguns caras de nível sênior, talvez cujas habilidades sejam tão desatualizadas ou irrelevantes para o projeto, que tudo o que eles fazem é o google, copie e cole algum código sem pensar na solução como um todo. Como resultado, temos uma quebra de JSON, AJAX, retornos de chamada, ASMX, WCF e postbacks no mesmo projeto. É claro que não há coerência ou lógica por trás de onde cada tecnologia está sendo usada.
Na pior das hipóteses, esse tipo de desenvolvedor cria problemas de segurança e vetores para ataque.
Questão
Como você recomendaria que eu filtrasse pessoas que têm um histórico de programação ruim? Posso fazer isso no nível do currículo? Caso contrário, como faço isso durante a entrevista.
fonte
Respostas:
Não acho que as habilidades de seus desenvolvedores sejam o problema. Seu problema está em outro lugar, talvez um líder de equipe ou arquiteto que não tenha autoconfiança para "incentivar" melhores disciplinas de codificação ou uma equipe de gerenciamento que não entenda a importância do gerenciamento da dívida técnica e não desenvolvedores o tempo e os recursos para fazer isso. Sua empresa possui revisões de código?
Liderança pode ser o problema, não copiar e colar desenvolvedores.
fonte
Leadership may be the problem, not copy-paste developers.
Essa foi precisamente a minha interpretação.A maneira de eliminar programadores que não podem programar é defini-los como um exercício prático de programação como parte da fase de triagem ou entrevista. (O último é provavelmente melhor porque você pode controlar o ambiente para evitar trapaças.)
Mas não acho que isso realmente resolva o seu problema.
Na IMO, o verdadeiro problema aqui é que sua equipe não está revisando o código interno o suficiente e não está desenvolvendo um "manual de instruções" de soluções preferidas para problemas conhecidos. Isso é parcialmente um problema de cultura, parcialmente um problema de comunicação e (provavelmente) parcialmente um problema com os prazos do projeto.
Outra questão é que o projeto normalmente tem uma vida útil longa e, durante essa vida útil, novas tecnologias / técnicas aparecerão e as antigas provavelmente cairão em desuso. Se você deseja evitar o uso de tecnologias / técnicas "café da manhã para cães", é necessário:
fonte
Contrate pessoas em estágio de 3 meses. Demita-os se sugam.
Se você não inspeciona, não pode esperar. Revisões de código, ferramentas de auditoria. Um servidor de IC pode executá-los automaticamente.
Faça perguntas reais em suas entrevistas, como nas perguntas do código real.
Faça com que eles escrevam código no quadro branco.
Se você é um gerente não técnico, não é qualificado para julgar isso.
Se você não for qualificado, procure um consultor profissional sênior respeitável para fazer o teste. Pergunte ao seu pessoal existente e aos concorrentes de negócios se eles conhecem uma pessoa 100x produtiva. Pague-os para fazer a entrevista.
Se você deseja administrar um hospital sem uma cirurgia, vá em frente.
fonte
Passei os últimos anos entrevistando pessoas e descobrindo que 90% dos candidatos simplesmente não podem programar. Minha técnica de entrevista para determinar a programação é fornecer ao candidato um resumo muito simples e deixá-lo resolvê-lo usando um marcador e um quadro branco.
Os modos de falha incluem:
criando um design e implementando algo diferente. Esses candidatos são rejeitados porque são perigosos para uma equipe. não seguir especificações, escrever bugs etc ...
Não ser capaz de inventar um design. Um número surpreendente de candidatos "experientes" precisa de uma especificação para incluir o design da implementação.
sem conhecer a linguagem de programação, apesar da experiência em reivindicar currículo
Não fazendo perguntas adicionais para extrair especificações mais completas.
Não ser capaz de explicar as decisões de design. Este é importante. Se alguém não pode explicar o porquê, cada vez que faz isso de maneira diferente, perde-se a consistência.
O resultado final foi que passei muito tempo entrevistando, e não recrutando com muita frequência. no entanto, a equipe de desenvolvimento era muito boa e tinha o respeito total de toda a empresa e foi entregue!
fonte
Eu sugeriria ao FizzBuzz que Jeff Atwood menciona no post em http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html .
fonte
Eu faço três perguntas da entrevista
Vi pessoas concluindo isso em 5 minutos e vi pessoas lutando por 30 minutos antes de desistir.
fonte
java.util.LinkedList l = new java.util.LinkedList()
não importa nada, mas certamente usa as coleções internas.Você não pode fazer isso no nível do currículo, pois eles têm essencialmente um tempo infinito para escrevê-lo, mas pode fazê-lo em uma entrevista por telefone se fizer algumas perguntas que exijam conhecimento técnico sobre o que eles fazem. Isso dá a você a resposta (boa ou ruim) e quanto tempo eles levaram para chegar lá.
Quando em uma entrevista, faça-os escrever código. É a única maneira de saber se eles podem programar de verdade. Simplifique o problema, forneça a eles um computador com conexão à Internet e o IDE que você usa instalado, faça qualquer pergunta (exceto gimme-hte-codez) e observe como eles funcionam.
EDIT: Para análise post-mortem, parece que o PMD possui um detector de copiar / colar para encontrá-lo: http://pmd.sourceforge.net/cpd.html
fonte
Simples
Editar:
Como criador das coisas7, como indicado, em termos práticos, pode-se fazer uma captura de vídeo (captura de tela).
fonte
Se você deseja "eliminar" os codificadores ruins, pode tentar, por exemplo, a Matriz de Competências para Programadores (útil, mas que não se aplica a todas as áreas possíveis - é claro que você pode criar suas próprias) ou codility.com (as tarefas são muito boas e Isto economiza muito tempo).
Geralmente, contratar bons codificadores é difícil e geralmente requer muitos anos de prática. Você pode iniciar seu próprio banco de dados de perguntas da entrevista, não apenas perguntando sobre codificação, mas também com matemática, lógica, para não mencionar questões de motivação.
fonte
Eu diria que o problema com seus candidatos não é que eles não podem programar, mas que não têm a menor ideia de usar a ferramenta certa para o trabalho. Minha sugestão é uma pergunta de ensaio em que seriam fornecidos requisitos de alto nível para um novo sistema e solicitados a fornecer uma arquitetura e justificar suas escolhas de componentes. Mas mantenha o FizzBuzz para os candidatos que não podem codificar sem um navegador.
fonte