Amostras de código e entrevistas? [fechadas]


23

Eu tenho visto várias perguntas desde que estive aqui, onde, na resposta, alguém afirmou que nunca usaria portfólios ou amostras de código codificadas fora do processo de entrevista para julgar um candidato, porque existe a possibilidade disso. código que foi escrito por outra pessoa. Eu me surpreendo com isso.

Do jeito que eu vejo, se eu pedir para alguém entrar e resolver um problema simples no local, há muito pouco que eu possa aprender com ele. Não trabalho para uma empresa como o Google, onde são procurados empregos e posso exigir um dia do tempo de alguém. Mas uma parte substancial do código escrito por hobby pode me dizer muito.

Sim, existe a possibilidade de plágio, mas eles terão que ser muito bem treinados para passar uma hora de discussão sobre esse código. E, se for esse o caso, eles terão que ser aprendizes muito rápidos para concluir sua liberdade condicional de três meses (durante os quais eu posso me livrar deles sem motivo e sem aviso prévio). Se eles se tornarem bons programadores tão rapidamente, justamente, eu fui enganada, mas ainda tenho um bom programador.

No final, o custo para nossa empresa e o benefício para o candidato a plágio são muito mínimos.

Isso me levou a pensar em outras indústrias. Artistas, fotógrafos, designers usam carteiras e ninguém se preocupa muito com plágio por lá. Um autor será financiado por um livro baseado em capítulos que ele escreveu em seu próprio tempo. Você não pediria para um arquiteto entrar e desenhar especificações de design para uma casa na entrevista.

Então, o que nos torna diferentes? Por que é tão importante colocar alguém na frente de um computador e fazê-lo codificar uma mesclagem de dados ou uma calculadora fatorial, às vezes sem acesso às mesmas ferramentas que usamos no dia-a-dia, como a Internet? O que há de errado com a ideia de um portfólio de códigos?

Estou realmente interessado em saber, caso esteja cometendo um grande erro que ainda não me queimou.

Respostas:


14

Minha objeção a um portfólio não tem nada a ver com o risco de a empresa ser enganada por alguém que está copiando código da Internet ou, mais provavelmente, passando código escrito por uma equipe de desenvolvedores como seu trabalho. Como você aponta corretamente, você pode aprender pelo menos o máximo que um desenvolvedor fala sobre um projeto com o qual eles geralmente estão familiarizados por uma hora, assim como você pode fazer com que ele codifique uma calculadora fatorial do zero.

Minha objeção a um portfólio é que exigir um portfólio elimina muitos desenvolvedores talentosos da consideração. Como eu, diferentemente de um artista ou fotógrafo, não retenho os direitos autorais do código que produzo - ele pertence ao meu empregador e / ou à empresa que contratou o meu empregador - não posso mostrar a grande maioria dos " código interessante que eu escrevi. Se eu estou codificando no meu próprio tempo, geralmente será um projeto paralelo no trabalho que facilita a minha vida ou que me incomoda, o que novamente eu não serei capaz de mostrar em um portfólio. Tenho vários posts em vários fóruns, mas a maioria deles é relativamente superficial. Existe uma população substancial de desenvolvedores sólidos que estão em uma posição semelhante - seu código interessante pertence a outra pessoa. E se você'

Uma entrevista técnica, na qual todos os candidatos são solicitados a codificar algo do zero, pelo menos, oferece condições equitativas. Supondo que você faça um trabalho razoável na tela do telefone e que possa restringir os candidatos a uma lista razoável, prefiro que um candidato tenha um problema para resolver que você sabe que serão necessários 8 horas de esforço do que criar um portfólio coerente de aplicativos de brinquedos sem problemas de direitos autorais.


1
+1 boa resposta. Pergunta de acompanhamento: se eu pedir um exemplo de código, o que impede o candidato que você descreve de optar por passar 8 horas resolvendo um problema artificial, em vez de um problema artificial da minha escolha? Eu respeitaria muito isso.
quer

3
Um problema comum e artificial, como um problema específico do Project Euler, deve obter melhores resultados e ter mais consideração com os candidatos do que fazer com que eles apresentem seus próprios problemas. É gentil com os candidatos porque existe um ponto de parada bem definido - ninguém sentirá pressão para gastar muito tempo polindo uma interface do usuário ou adicionando "mais um recurso". É melhor para você, porque é muito mais fácil comparar candidatos quando eles estão resolvendo problemas semelhantes. Caso contrário, é difícil não ser influenciado por quem teve a idéia mais legal ou cujos visuais eram melhores.
Justin Caverna

É verdade que ter amostras de código é uma expectativa mais razoável para um desenvolvedor web do lado do cliente, mas o melhor formato de entrevista que já encontrei consistia em sentar e olhar o código que eu havia escrito, compartilhar pensamentos sobre o que eu gostava e desejava. Eu tinha feito melhor, etc ... e depois analisando o código que os desenvolvedores de entrevistas haviam escrito e fazendo o mesmo. Muito mais valor para ambas as partes do que uma entrevista no estilo de esquadrão de tiro, a IMO. A abordagem aceitável de falso-negativo do Google é a razão pela qual eu não gostaria de trabalhar para eles. É desajeitado, deselegante e inútil. Assim como o JavaScript deles.
usar o seguinte

6

Primeiro de tudo, somos engenheiros, não artistas. Trabalhamos em equipe, portanto, em nossa experiência real de trabalho, "nosso" código geralmente é o resultado do trabalho em equipe, porque é assim que o trabalho real geralmente é feito. Não existe muito código profissional para o qual eu possa reivindicar a propriedade exclusiva.

Segundo, a maioria dos códigos do meu portfólio hipotético seria um código que eu não poderia mostrar a ninguém, porque é confidencial. O código que criei para meus projetos pessoais de animais de estimação não reflete necessariamente todas as minhas habilidades e meu comportamento típico de trabalho.


4

Eu entrevistei muitas pessoas durante o meu tempo como profissional de software. Cheguei a um ponto em que acredito que testes e tarefas de programação de brinquedos são um desperdício de largura de banda valiosa. Testes e tarefas de programação de brinquedos servem apenas para testar o que o entrevistador sabe. Eles não são uma maneira precisa de avaliar o que um candidato sabe. Neste ponto da minha carreira, só aceito esse tipo de bobagem se, e somente se, tiver a oportunidade de administrar meu próprio teste no final da entrevista.

A melhor maneira de avaliar as capacidades de um profissional de software é conversar com ele em uma voz calma e tranquilizadora. Peça ao candidato para discutir o que implica sua posição atual. Quando o candidato abrir uma área de interesse, peça que ele elabore essa área. O objetivo aqui é fazer com que o candidato abaixe a guarda. Nenhuma quantidade de treinamento pode preparar um candidato para o interrogatório "soft touch". Mais cedo ou mais tarde, o laço vai apertar o pescoço de um candidato que está tentando passar por uma entrevista.


2

Peço um exemplo de código para os candidatos e ele é referenciado durante a entrevista. No entanto, geralmente dou mais peso à codificação do quadro branco feita durante a entrevista.

Toda entrevista de desenvolvedor que faço envolve ir ao quadro branco para implementar a solução para um problema simples. No entanto, existem regras:

O requerente precisa conversar sobre a implementação enquanto está fazendo isso.

  • Eu posso avaliar como eles abordam um problema.
  • Eu posso ver o quão bem eles podem se comunicar.
  • Eu posso avaliar o quão rápido eles estão com um alvo claro.

Eu tenho três problemas cujas implementações são todas semelhantes e eu sei que eles podem reutilizar ou refatorar o código que eles escreveram.

  • Eu posso ver se eles podem recuar para dar uma olhada na foto maior.
  • Eu posso ver se eles implementam e refatoram, ou saltam para generalização.
  • Posso ter uma idéia mais firme de quão bem a ordem de seus pensamentos.

O objetivo de tudo isso, em qualquer entrevista, é tentar ter uma boa idéia das capacidades dos candidatos e de como elas podem corresponder ao trabalho. A parte "prática" da entrevista em minha experiência ajudou bastante nesse aspecto. Isso também me ajuda a avaliar o código de exemplo, porque eu sei muito mais sobre a maneira como o programa.


1

Uma amostra de código é uma maneira bastante eficiente de eliminar candidatos - eu posso julgar uma amostra de código em 5 a 10 minutos, mas mesmo uma tela de telefone leva 15 minutos e precisa de agendamento (e não é muito útil para eliminar qualquer coisa, exceto a própria fundo da pilha na minha experiência).

Eu acho que as principais objeções às amostras de código são duas vezes e são facilmente superadas:

  • que exigir uma amostra de código coloca uma barreira artificial para alguns desenvolvedores talentosos

Obviamente, isso é verdade. Qualquer barreira no processo de inscrição ou contratação pode eliminar potencialmente um candidato desejável. O importante aqui é conhecer o seu público - se você tiver 1000 currículos para sua única abertura, poderá pagar alguns negativos falsos a serviço da eficiência. Se você tiver cinco currículos, poderá ineficiências no processo de triagem.

O que eu acho que a maioria das pessoas sente falta, porém, é que entrevistar e contratar é basicamente um jogo de "encontrar uma razão para não para contratar essa pessoa". Para qualquer trabalho decente, há muitos candidatos qualificados - o último em pé é geralmente aquele que não exibiu bandeiras vermelhas ao longo do caminho. É fácil ver o melhor das pessoas ou não ser comprometido, mas isso não ajuda em nada na contratação, porque você terá 10 candidatos diferentes com os quais se sente confortável. Isso não te aproxima mais de uma decisão.

Cada petisco que você coletar ao longo do processo de revisão, triagem, entrevista etc. pode potencialmente desencadear uma decisão de não contratação. Você precisa equilibrar a sensibilidade do seu gatilho de não contratação com seus clientes atuais (e potenciais futuros). Se você está em um setor entediante, com muito código legado, burocracia e salário baixo (geralmente fora de controle), seu gatilho precisa ser menos sensível do que o Google. Caso contrário, você corre o risco de nunca contratar alguém.

Pessoalmente, acho que o compromisso mais fácil para mim foi solicitar, mas não exigiruma amostra de código. Se eu receber um, é apenas um ponto de dados adicional para avaliar o candidato. Da mesma forma, se eu tiver um conhecido que tenha trabalhado com o candidato no passado, atribuirei um certo peso às opiniões dele. Não ter trabalhado com ninguém que conheço certamente não desqualifica nenhum candidato - apenas significa que meu trabalho de avaliá-los é um pouco mais difícil (e provavelmente incluirá um exercício de codificação, se eles conseguirem uma entrevista). Se a sua amostra é ruim (ou o meu conhecido fala mal de você), é praticamente sem contratação. Aqueles que fornecem uma amostra podem ou não ter uma pequena vantagem sobre os que não fazem na triagem inicial - dependendo da qualidade e quantidade da pilha de currículos e amostras, mais informações podem ser melhores ou piores que nenhuma informação.

  • que as amostras são facilmente falsificadas

Bem, sim. O mesmo acontece com os currículos - mas ainda os coletamos. Por quê? Por três razões principais - um currículo ou amostra ruins é fácil de contratar, ser pego fingindo um currículo ou amostra é fácil e eles são bons tópicos de conversa em uma entrevista. Quanto mais rápido eu descobrir que o candidato é idiota, melhor para todos.

Se você for esperto o suficiente para plagiar uma boa amostra sem ser pego, fale de maneira inteligente e termine a entrevista - eu não tenho um problema específico em como você passou na triagem. Pode haver algumas preocupações éticas aqui, mas essa não é realmente minha área de especialização, por isso não estou me esforçando para avaliar o caráter moral durante uma entrevista. Para mim, é praticamente o mesmo que meu chefe me pedindo para entrevistar alguém que não passou pelo processo de triagem como um favor. Quando você está na fase de entrevista, realmente não importa como você chegou lá, pois há muito mais e melhores informações que serão exibidas durante a entrevista.

TL; DR - um exemplo de código é uma ótima ferramenta de triagem, mas você deve pensar cuidadosamente se pode ou não exigir isso. Após a triagem, ponderar a entrevista muito mais do que uma amostra.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.