Eu absolutamente quero que você teste o código do quadro branco que eu peço para você escrever. Quero que você fale em voz alta enquanto a escreve, examina, detecta a maioria dos erros de sintaxe que você cometeu e mostra como isso poderia ser mais eficiente. De fato, esse é o ponto de fazê-lo no quadro branco. É não um one-shot, write-it-all-out, uh-huh-you-get-70/100 tipo de coisa. É uma conversa, mediada por código e realizada no quadro branco em vez de do outro lado da minha mesa.
Aqui estão algumas ótimas maneiras de falhar no teste de "codificação do quadro branco":
- recusar
- não faça uma única pergunta esclarecedora (idioma, plataforma, algo sobre os requisitos) E não me diga suas suposições sobre nada disso e faça suposições muito diferentes do que eu teria respondido
(por exemplo: escreva no Fortran, interprete "display" ou "print" como "write to the log de eventos", esse tipo de coisa. Eu poderia permitir se você me dissesse com antecedência que essas eram suas suposições)
- pergunte-me em que idioma eu quero, receba uma resposta que esteja na descrição do trabalho e escreva-a em um idioma diferente, porque você não se sente à vontade no idioma que solicitei.
(Somos consultores aqui. Estou testando o comportamento do consultor tanto quanto a codificação. Pedir ao cliente está correto apenas se o cliente realmente tiver uma escolha. Controlar as conversas com as pessoas que pagarão a você é difícil. Esta é a lição 1. É uma lição. marcar contra você em qualquer tópico, mas para o específico "você está contratando um programador X, mas não quero escrever em X para você", agora você tem duas grandes marcas negras.)
- mostre-me como você é um astronauta de arquitetura, preenchendo dois quadros brancos com interfaces, padrões de fábrica, abstrações, injeções e testes quando eu queria que você "imprima os números de um a 5".
(você acha que estou exagerando, mas eu tinha um cara que generalizou meu problema dramaticamente - seguindo o exemplo acima, digamos que, em vez de 1 a 5, sua solução faria qualquer sequência arbitrária de números inteiros (foi de onde ?, perguntei-me) e tinha 5 vezes mais do que qualquer outra pessoa - e ele esqueceu de realmente chamar a função que executou o trabalho. Repetidas solicitações e sugestões de que ele a percorra como se fosse o depurador não o levou a perceber que a função nunca foi chamada.)
Eu sempre digo "você gosta disso?" "você pode melhorar isso?" "guie-me por isso" e coisas do gênero. Normalmente, o ponto e vírgula que falta é avistado, ou o ponto a ponto, nessa conversa. Caso contrário, costumo marcar até nervosismo.
Outras coisas que você pode achar que não importam para o quadro branco são importantes para mim:
- quando terminar, ainda posso ler? Você borrou, rabiscou, trocou de cor, desenhou flechas, riscou e geralmente deixou uma bagunça que não pode mais ser usada agora? Ou você sabe que os quadros brancos são apagáveis, apontam para as linhas de código no ar em vez de circundá-las / arremessá-las e me deixaram algo que eu poderia tirar uma foto e manter no arquivo de design?
- quanto você me perguntou como o fez? Você gosta de ficar sozinho e não discutir seu código, ou vê o código como algo colaborativo? Como você reagiu quando perguntei coisas enquanto você ainda escrevia?
- você zombou da tarefa "fácil" ou desmaiou na tarefa "difícil"? Você foi rude ao ser solicitado a mostrar que pode codificar? Você é facilmente intimidado por um problema técnico ou arrogante com sua capacidade de criar um bom algoritmo?
- você está trabalhando na sua cabeça ou se lembrando de uma solução que você lê em algum lugar? Eu normalmente posso dizer para os problemas difíceis.
- você planejou com antecedência sobre onde começou a escrever? As pessoas que ficam sem o quadro branco geralmente começam muito baixo ou escrevem muito alto - posso dizer que não sabiam que seriam 20 linhas de código e, portanto, sobraram apenas cinco - acredite ou não, esse pequeno detalhe é refletido tarefas de estimativa maiores também.
- você olhou antes de dizer que tinha terminado? Eu vi você apontando ou tocando nele e testando você mesmo antes de eu pedir? Quando eu lhe solicitei, ou fiz perguntas específicas sobre o assunto, você olhou para ele novamente ou simplesmente ficou sem memória? Você está disposto a considerar que seu primeiro rascunho pode não estar completo?
Eu recomendo praticar a codificação no quadro branco. Eu sempre aviso aos entrevistados que eles serão solicitados a fazê-lo. Se você tiver acesso a um quadro branco real, defina alguns problemas simples e pratique-os lá. Ajudará seu desempenho e sua confiança.
Desculpe, eu sei que estou no território TL; DR, mas aqui está a coisa: codificar no quadro é mais do que codificar . É um teste que vai além da sua compreensão da sintaxe. Muitos comportamentos de bons programadores são demonstrados em sua resposta a esta tarefa. Se você pensa que é apenas sobre codificação, está perdendo o ponto.
Em outras conversas sobre o teste do quadro branco, as pessoas me dizem que posso rejeitar um bom candidato. Honestamente, é um risco que estou disposto a correr. Cada rodada de contratação contém várias pessoas que eu poderia contratar. Algumas pessoas com ótimos currículos, que estão bem na parte de perguntas e respostas da entrevista, desmoronam no quadro branco e claramente não conseguem (com alguma quantidade de estímulo) escrever código simples no idioma que afirmam conhecer. Eu poderia ter contratado alguns deles. Qualquer ferramenta que impeça isso é uma ferramenta que continuarei a usar. Eu nunca acabei em ninguém para alugar um barco, porque todos os meus candidatos bagunçaram o quadro branco e eu não espero que jamais o faça.