EDITAR
Após uma boa quantidade de reflexão e auto-reflexão sobre o assunto, percebi que a maioria dos problemas que levantei nesta questão vinha apenas de uma perspectiva pessoal, e não profissional. Portanto, os moderadores colocaram essa questão em espera por causa da natureza altamente pessoal e subjetiva do problema sobre o qual tentei falar. Eu estava pensando em reformular a pergunta, mas não consegui realmente encontrar uma maneira possível de manifestar a pergunta de maneira mais objetiva, para que possa ser o assunto de uma discussão em que as respostas possam ser apoiadas com algum tipo de evidência ou referência.
Em nome daqueles que ainda estão interessados, estou tentando fazer um resumo da discussão que surgiu dessa pergunta:
- uma pré-entrevista de 4 horas, o teste de programação externa não é usual, mas
- muitas pessoas apontaram que, para algumas empresas, você entrevistaria por muito, muito mais tempo do que isso, todas juntas
- é nossa decisão pessoal fazer um teste ou não, e podemos avaliar isso com base em nossas circunstâncias e nos benefícios percebidos de ser contratado pela empresa
- todas as empresas são diferentes, assim como as pessoas, e pode ser perfeitamente razoável para uma empresa empregar um teste externo pré-entrevista mais longo, se é isso que se adapta às suas necessidades ou circunstâncias
Eu queria que minha pergunta original fosse sobre o quão razoável esperar 4 horas de mim e como ético dar um problema para que a solução (não o código, mas o design) possa ser usada para a empresa. Como agora posso ver, essas duas perguntas podem apenas (na melhor das hipóteses) ser exploradas em uma discussão no fórum, em vez de usar uma ferramenta de comunidade do tipo pergunta-resposta, como stackexchange.
No entanto, achei todas as suas respostas valiosas e obrigado por compartilhar.
POST ORIGINAL
Estou entrevistando para várias posições, e a maioria delas inclui uma fase de pré-triagem, na qual tenho que enviar um teste de codificação antes da entrevista por telefone ou da entrevista no local. Eu já me acostumei com essa idéia e acho bastante razoável que as empresas esperem que eu faça isso para que possam verificar que tipo de trabalho eu posso produzir por conta própria.
Geralmente, minha experiência é que esses tipos de exercícios de codificação são principalmente pequenas tarefas de programação. Faça alguma lógica, talvez implemente um pequeno algoritmo, abra um arquivo e leia / escreva dados, coisas assim. Mesmo a tarefa mais simples pode ser implementada com uma boa separação de lógica, componentes testáveis, etc., para ver como o candidato está codificando, geralmente o quão bem ele está preparado para o tipo de trabalho que uma empresa deseja preencher.
Recentemente, deparei-me com uma empresa que me enviou um teste de codificação com uma descrição completa do exercício para toda a página, pedindo que eu resolvesse um problema da vida real dos negócios (não quero dizer detalhes específicos para proteger a empresa, mas o teste era basicamente sobre o que eles fazem). Eles descreveram um sistema bastante complexo para implementar, incluíram dados reais e, no final, concluíram que o teste de codificação não deveria levar mais de 4 horas .
É razoável que uma empresa espere que eu gaste 4 horas trabalhando em suas tarefas fictícias no meu tempo livre, mesmo antes de dizerem oi para mim? (o recrutador me enviou o teste de codificação)
Não me interpretem mal, estou motivado a encontrar um novo emprego e novos desafios, mas a maioria das empresas espera que eu gaste no máximo 1-2 horas em uma tarefa como essa, e essas tarefas sempre foram muito menos complicadas.
O que eu cheguei a uma conclusão com esta empresa é que:
1) Minha motivação não é boa e provavelmente eles estão procurando por outra pessoa
2) Eles não respeitam seus futuros funcionários e esperam que esses testes de codificação sejam longos, mesmo sem dizer um oi.
3) Eles só querem apresentar um dos problemas em que trabalham e ver se há um jovem entusiasmado que resolveria isso de graça (novamente, não me interpretem mal, eu não sou um teórico da conspiração, mas tenho ouviu essas histórias ...)
Quanto você acha razoável que uma empresa espere que os candidatos passem algum tempo em seus testes fictícios de codificação sem falar com eles? Qual é a sua experiência em geral?
Respostas:
Deixe-me ficar do lado da empresa por um momento, já que as outras respostas ainda não foram divulgadas. Seria quase impossível construir uma base de código utilizável a partir de um conglomerado de submissões de testes de codificação de 4 horas de pessoas cujas qualificações são completamente desconhecidas. Criar uma especificação suficientemente detalhada, verificar as respostas e integrá-la ao restante do seu código levaria mais de 4 horas. Sem mencionar os projetos de software de nível empresarial mais úteis, que requerem milhares de horas de trabalho. O pensamento de construir um negócio dividindo isso em incrementos de 4 horas com semanas de tempo de resposta é francamente ridículo.
Dar um problema da vida real aos negócios é uma das melhores maneiras de determinar se alguém será bom, surpreendentemente, em resolver os problemas da vida real dos negócios. Faço isso com frequência em entrevistas (apesar de pedir princípios gerais de design e não 4 horas em código), e toda vez que isso tem sido um problema que já resolvi. Se eu ainda não o tivesse resolvido, o teste perderia quase todo o valor probatório.
Se um teste de 4 horas vale a pena para você é uma decisão pessoal. Eu sempre fui ensinado a tratar a procura de trabalho em período integral como um emprego em período integral. Quando você está desempregado ou subempregado e passa 8 horas por dia procurando trabalho, um teste de codificação de 4 horas não é nada. Passei muito mais tempo do que isso em tarefas como aprimorar idiomas enferrujados, escrever programas de portfólio e personalizar currículos para posições específicas.
Por outro lado, alguns dos melhores trabalhadores já estão empregados de maneira lucrativa, e apenas casualmente procuram melhores oportunidades. É improvável que as pessoas nessa situação passem pelo rigamarole de um teste de 4 horas, a menos que a oportunidade seja estelar. No entanto, esse é o problema da empresa, não o seu.
Quanto a discernir o que isso significa sobre a atitude da empresa em relação aos funcionários, não acho que você possa dizer algo de qualquer maneira, exceto que eles provavelmente estão cansados de lidar com candidatos não qualificados, na medida em que desejam fora alguns dos bons com os maus.
fonte
Não, não é típico , por que você está resolvendo os problemas deles de graça? (4 horas)
1 hora é típica para um teste de programação. No passado, nosso teste de programação era de 4 perguntas. As três primeiras perguntas levaram meia hora, e a última meia hora. Também testamos as contratações existentes internamente para garantir que estivéssemos no prazo esperado e que o teste fosse justo e ajustado de acordo.
As primeiras perguntas foram do tipo "Fizz Buzz" para eliminar pessoas que não podem programar. Eles ficaram progressivamente mais difíceis. A última pergunta foi um exercício de resolução de problemas. Em geral, tentamos limitar a quantidade de código gravado em algumas centenas de linhas (total) e não exigir truques inteligentes. Também classificamos pessoas no tratamento de erros, estilo, sintaxe, organização etc. As perguntas não estavam relacionadas ao nosso negócio, mas às habilidades e tecnologia nas quais a plataforma atual foi escrita.
Normalmente, ótimos candidatos terminavam em menos tempo do que o previsto. Às vezes, as pessoas solicitavam um tempo extra, o que permitíamos devido ao estresse envolvido em fazer um teste, mas limitamos todos a um certo limite. O questionário estava no ambiente de desenvolvimento atual e as pessoas tinham acesso à Internet para obter informações de referência. Também superamos as expectativas do questionário para todos os candidatos.
Houve um tempo em que discutimos a incorporação de nossa base de código (mundo real) ao questionário, mas acabamos descartando isso devido a preocupações de que o código fosse copiado / roubado / etc (nosso chefe era um pouco paranóico). Por fim, acabamos de separar
quiz.sln
uma máquina de desenvolvimento isolada.Por fim, descobrimos que era difícil fazer um teste que fosse justo, mas nem muito difícil nem muito fácil. Sempre perguntamos aos nossos candidatos sobre o questionário depois que o fizeram e obtivemos seu feedback para refiná-lo para futuros candidatos.
fonte
Acho que os testes de codificação na entrevista são uma merda de qualquer maneira. Ninguém codifica nada além da rotina mais simples sob pressão, sem o ambiente e as ferramentas usuais, para que os resultados obtidos sejam duvidosos.
O que eu achei realmente bons testes da capacidade de um programador é fornecer a ele algum código do projeto e pedir que ele o revise; isso funciona muito bem se o código tiver vários erros óbvios, vários problemas óbvios de código e algumas práticas questionáveis. Um bom codificador lhe dirá todos eles e se envolverá com você na discussão sobre por que algum código não está 'errado', mas poderia ser melhor para facilitar a manutenção. Um programador ruim encontrará um bug e parará.
Qualquer trabalho que espere que você faça um teste que leva mais de meia hora apenas não passou tanto tempo elaborando um bom teste direcionado que lhes oferece mais do que uma vaga idéia de suas habilidades. (a maioria das empresas acha muito difícil gastar algum tempo trabalhando na configuração pré-entrevista).
Se eu recebesse um teste como você, escreveria a resposta em pseudo-código. Isso deve ser suficiente para demonstrar minha compreensão de codificação e design, sem passar por todas as fases de compilação, compilação e teste que você faria em um projeto de trabalho normal.
fonte
Você pode não ter 4 horas, mas alguém mais interessado em sua empresa certamente terá. Fui essencialmente contratado com base em uma tarefa semelhante que uma empresa me pediu para realizar antecipadamente apenas na tarefa. Aparentemente, escrever código limpo e compreensível, casos de teste completos e documentação de design compreensível e coerente é uma anormalidade. Na verdade, ver alguém fazer isso impressionou as pessoas. De qualquer forma, todos com quem falei na entrevista me elogiaram pelo que fiz e senti que não precisava impressionar ninguém na entrevista, porque eles já haviam se decidido. Era simplesmente uma questão de eu não lhes dar uma razão para dizer não, fazendo algo estúpido.
Portanto, embora eu concorde que 4 horas seja um investimento de tempo bastante grande, isso também significa que a tarefa é de tamanho suficiente para que você tenha a oportunidade de realmente mostrar do que é capaz. Seu trabalho muito bem pode falar muito mais do que você jamais poderia ter em uma situação real de entrevista.
Como uma observação lateral: ultimamente, tentei algo semelhante, mas usando um problema muito menor e não fiquei satisfeito com os resultados. Pequenos problemas são triviais para demonstrar o suficiente do conhecimento da pessoa. Além disso, problemas triviais tendem a exigir que a pessoa reconheça algum truque / detalhe necessário para resolver o problema. Portanto, existe algum equilíbrio entre dedicar muito tempo à pessoa e não obter benefícios reais, porque a tarefa é trivial. Eu acho que uma tarefa de 4 horas é provavelmente a quantidade certa de tempo para ser complexa o suficiente para que os candidatos demonstrem suas habilidades e não seja tão longa que ninguém se incomode.
fonte
Fiz um teste de codificação de 6 horas em um ponto. Quando fiz esse teste, tinha uma confiança bastante alta de que seria contratado - embora isso se tornasse realidade, não estava tão satisfeito com o resultado.
Obviamente, ter muitos empregadores pedindo cada 4 horas é excessivo. O que a pessoa estava procurando no teste que fiz foi meu estilo de codificação - fui contratado porque o meu era "o mais próximo" dele. Nesse contexto, observe o problema sob essa perspectiva: primeiro, é um problema interessante que a solução vale a pena para você? Afinal, você pode aprender algo valioso.
Segundo, se você pode "passar" no teste, isso significa que você foi contratado? Se isso não for bastante óbvio, você deverá decidir se há outras razões para fazê-lo.
Terceiro, eles podem estimar que leva "4 horas", mas você pode descobrir de maneira diferente. Eles realmente sabem quanto tempo isso deve levar? Provavelmente a resposta é não. Portanto, eles continuarão testando as pessoas nos prazos de 4 horas até perceberem que não caberá em quatro horas. Nesse caso, você está perdendo seu tempo. A melhor abordagem, então, é ser agressivo com o gerente de contratação e descobrir se você deve parar às quatro horas e fornecer o que possui, ou continuar até que esteja pronto e dizer a eles quanto tempo levou. Em suma, pode haver um teste de personagem envolvido nisso, e simplesmente tentar aceitá-lo nos termos deles pode revelar inexperiência.
fonte