Teste de codificação antes da triagem - Quanto tempo é razoável? [fechadas]

22

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?

Aston
fonte
Seu comentário é justo. No entanto, estou interessado no que você pensa sobre o quanto é razoável esperar que alguém gaste 4 horas em uma tarefa de pré-triagem.
Aston
1
É uma proposição econômica com razoabilidade sendo definida pelo que o mercado suportará. Isso varia de acordo com as condições. Se é o mercado de um funcionário (ou seja, muitas empresas buscam poucos candidatos), haverá menos tolerância para esse tipo de coisa do que quando é o mercado de um empregador. Passei um total de doze horas entrevistando para o cargo que ocupo agora, porque os benefícios potenciais de fazê-lo foram esclarecidos com antecedência. Dez anos depois, eles estavam certos, e cada minuto que gastei nele foi um investimento valioso.
Blrfl 31/07
3
Se você entrevistar alguma das principais empresas de software, geralmente viaja de avião para o local delas (que era de 10 horas para mim) e depois passa 8 horas por dia (ou dois, não é desconhecido) de programação / design / entrevistas. Suspeito que o problema seja se você percebe ou não a empresa que tem a influência necessária para exigir isso.
Steven Evers
1
Minha experiência com 'grandes empresas de software' foi que a primeira etapa foi uma entrevista por telefone de 1 hora, e isso é justo. O que estou perdendo aqui é que eles me esperam 4 horas de trabalho sem nenhuma contribuição deles. Pensei um pouco mais e imaginei que talvez eles não tivessem muito tempo e, se gostassem de alguém, o contratariam nessas 4 horas de trabalho. Nesse caso, eu posso entender a abordagem deles (isso se refere à resposta de Dunk).
Aston

Respostas:

24

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.

Karl Bielefeldt
fonte
Além disso, o OP disse que o teste não deve demorar mais de 4 horas. Estou pensando que, se o teste leva um candidato = <4 horas, eles provavelmente não estariam interessados ​​de qualquer maneira.
Tombatron
Obrigado pela resposta. Talvez eu seja o segundo tipo que não tem facilmente 4 horas de sobra em uma tarefa como essa; portanto, talvez eles estejam procurando por outra pessoa que tenha. E sim, fornecer um problema da vida real é benéfico pelas razões mencionadas, e eu me deparei com essas tarefas, como quando entrevistei uma empresa de TV e precisava criar uma calculadora de assinatura de canal, quando uma empresa de FX precisava resumir moeda de um arquivo CSV, e isso é justo, mas essa empresa foi um pouco longe demais na expectativa deles para mim. Talvez só para mim.
Aston
3
Eu acho que isso é um pouco simplista. Nem todas as soluções precisam se integrar a outros sistemas - isso pode ser um processo de análise de dados, por exemplo. E embora o código não possa ser usado diretamente pela empresa, o design pode muito bem ser usado. O processo de teste deve ser superficial por design, e eu acho que mais de uma hora é demais.
precisa
2
Tratar uma procura de emprego como um emprego em período integral só é razoável se você estiver desempregado. Se você estiver trabalhando, mas testando o mercado para ver se há algo melhor disponível, esse nível de comprometimento não é prático, exceto no curto prazo, porque você acabará se esgotando.
Dan Neely 31/07
11

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.slnuma 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.

Jon Raynor
fonte
Obrigado pela resposta. Seus métodos parecem ser justos. Gosto da ideia de perguntas fáceis e difíceis, porque dá ao candidato uma boa noção de como está indo, mesmo sem maiores explicações. Digamos que eu execute as 3 tarefas fáceis e não possa executar a última, não me sentiria um fracasso, mas também seria capaz de reconhecer que preciso melhorar. O que realmente estava me incomodando no meu caso são as 4 horas de expectativa fora do local, mesmo antes de a empresa falar comigo.
Aston
@ Asti - Além disso, se você não concluiu a última pergunta, ela não foi desqualificada automaticamente. Talvez você não seja contratado como programador, mas talvez em outro lugar. Em algumas ocasiões, os candidatos foram contratados para outros cargos (suporte, controle de qualidade). Entrevistamos as pessoas primeiro, seguidas pelo questionário. Suponho que você possa questionar primeiro e imediatamente afastar essa pessoa, mas talvez você perca alguns potencialmente bons candidatos técnicos, mas não de programação.
31413 Jon Jonnor
8

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.

gbjbaanb
fonte
1
Lamento não ter sido claro, mas me referi a um teste que ocorre antes da entrevista, para que eu possa fazer sozinho em casa.
Aston
1
no entanto, eu faria o pseudo-código de qualquer maneira. Eles querem meus pensamentos sobre como resolver um problema ou querem trabalho livre de você. Neste último caso, não será o local em que você deseja trabalhar.
gbjbaanb 31/07
@gbjbaa: OU o cenário mais provável é que eles querem ver o tipo de trabalho que você faz. Nesse sentido, tarefas triviais não são suficientes. O pseudo-código não é suficiente. Além disso, aposto que demorou mais de 4 horas para definir o problema, revisá-lo, refinar e aprovar. Então, considerando que eles poderiam ter implementado isso sozinhos em menos tempo do que o necessário para perguntar, por que você acha que eles estão atrás do trabalho livre? Se a tarefa durasse uma semana ou duas, eu poderia entender o seu ponto, mas quatro horas? Além disso, entrevistei muitas pessoas que eram boas em expressar pensamentos e acabaram sendo muito ruins na solução de problemas.
Dunk
1
Sempre fico um pouco desconfiado se a tarefa está muito perto de uma situação do mundo real. Ouvi histórias em que os gerentes estavam organizando entrevistas apenas para obter dicas de pessoas cada vez mais inteligentes sobre como resolver um problema específico. Não é que eles mesmos não tenham resolvido o problema, mas eles estavam ansiosos para ver como alguém o resolveria. No final, eles não quiseram contratar ninguém, mas essa é uma história diferente.
Aston
3

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.

Dunk
fonte
Obrigado pela resposta. Após um pouco de auto-reflexão, sua resposta e uma tentativa de desviar o foco de mim da empresa, posso ver como isso pode ser razoável da perspectiva deles. Talvez o processo deles seja praticamente o mesmo, receba as 4 horas de trabalho e, se eles gostarem de alguém, convidariam e ofereceriam uma oferta. Talvez eles tivessem experiências ruins anteriores de que as pessoas eram boas em pequenas, mas não em tarefas maiores, ou passavam muito tempo entrevistando pessoas que não acabavam sendo boas candidatas. Eu ainda acho que 4 horas um pouco demais, mas eu poderia fazê-lo ...
Aston
1

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.

Meredith Poor
fonte