Na minha opinião, ter um erro (mesmo um erro de digitação ou ";" ausente) no código do quadro branco geralmente custa alguns pontos de entrevista. Evitar isso inevitavelmente fará com que um código de revisão seja repetido (perdendo tempo e possivelmente energia / concentração neural) ou mesmo usando um algoritmo mais simples (e, portanto, menos eficaz) - e ambas as formas são "caras" novamente!
Então, por que não apenas escrever rapidamente um código tão elegante e eficaz como você teria uma estrutura de teste (unidade) à sua disposição e, em seguida, apenas testá-lo normalmente (apenas no quadro branco)?
Alguém já tentou / viu essa abordagem? Toda a ideia vale a pena?
[isso também se aplica ao estojo de papel e caneta]
Respostas:
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":
(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)
(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.)
(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:
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.
fonte
Acho que você fez uma suposição incorreta aqui. Não há como eu esperar que um candidato que escreva código em um quadro branco seja capaz de obter todos os ';' perfeitamente no lugar. Se você está entrevistando em um local que o penaliza por isso, sugiro que não seja uma organização para a qual você deseja trabalhar :-).
fonte
Os testes de papel ou quadro branco são extremamente ineficazes. Lembro-me de uma vez que tive uma entrevista em que tive que procurar erros em algum código no papel. Uma delas é que a classe herdou de uma interface, mas estava faltando a implementação de um membro. Eu sabia que era provável que esse fosse um dos erros, estava procurando e, por qualquer motivo no local, não consegui vê-lo (embora tenha mencionado que estava procurando isso como um dos problemas).
Por acaso, eu ainda consegui esse emprego, mas isso me fez pensar no que havia acontecido. Em um cenário realista para esse tipo de coisa, irei obter linhas irregulares no momento em que algo estiver errado (isso é C # no Visual Studio) e a coisa não será compilada. Eu nunca verifico isso na vida real porque nunca acontece (é impossível) e, portanto, não consigo ver esse tipo de coisa. Os pontos-e-vírgulas ausentes são um exemplo ainda mais extremo - totalmente irreal no mundo real, a menos que você esteja escrevendo no bloco de notas e enviando seu código por e-mail para outra pessoa para compilar!
Se alguém pede para usar um quadro branco durante uma entrevista para apoiar algo que eles querem dizer, ótimo, mas eu nunca faria o contrário.
fonte
Eu já fiz isso. Em uma entrevista, fui solicitado a implementar a codificação de execução no quadro branco e, enquanto atalho parte do código (explicando o que eu estava abreviando) para caber no quadro branco, eu ainda tinha uma coleção de testes para esta unidade, e percorri um deles para validar minha solução e mostrar como o teste ajudaria. Me ofereceram essa posição, então presumo que o teste foi útil ou, na pior das hipóteses, não é irritante.
fonte
Eu uso essa abordagem ao fazer testes na escola. Primeiro escrevo a função, depois para o lado escrevo uma pequena tabela de entradas, saídas e vars. Eu peguei alguns erros estúpidos dessa maneira. Testar, mesmo no papel / quadro branco, é sempre melhor do que não testar.
Mas eu discordo de surtar por ponto e vírgula em um ambiente profissional.
fonte
Pedir a um candidato que codifique em um quadro branco é bobagem. Existem ferramentas modernas como snippits, jsfiddle e intellisense. Além disso, nenhum engenheiro deve ser obrigado a memorizar a sintaxe. A sintaxe é pesquisada e referenciada. Se você estiver memorizando código, provavelmente não gastou nenhum tempo em sua carreira aprendendo a codificar em um ambiente multilocatário, otimizando a sintaxe ou mesmo em um ambiente hospedado.
fonte
Quando um restaurante quer contratar um chef, o proprietário não pede que ele cozinhe um "pot au feu" com um palito de dente e um boné.
Não peça a um desenvolvedor que codifique em um quadro branco em uma entrevista.
fonte
A codificação do quadro branco é difícil. Eu nunca fui apresentado a isso até que fui entrevistado pela Disney. Sem saber o que esperar e sem poder depurá-lo, eu tropecei falando e resolvendo o problema, mas de um jeito pseudo-código. Quando eles pediram, poderia funcionar.
Quero dizer, com certeza, você poderia apenas corrigir os erros de sintaxe, correto. Acredito que eles perderam um candidato muito bom se eu não fosse contratado por causa do quadro branco. Eu olho para as qualificações e parece que estou qualificado para a posição e posso fazer o trabalho. Eu me destaquei no emprego atual e desejei poder trabalhar com eles.
Obrigado pela sua contribuição Kate, eu li todas as palavras. Para mim, como programador, o quadro branco realmente não mostra suas habilidades. Sou um ótimo programador que trabalha em vários idiomas. Eu sabia o idioma em que me pediam para programar, mas de repente esqueci no quadro branco.
Eu construo uma integração complexa e processamento de cartão de crédito, mas no quadro branco não conseguia me lembrar de como fazer a sintaxe adequada.
Como empregador, gosto dos testes do quadro branco; no entanto, estou contratando um programador e quero ver suas habilidades reais se eles fizerem o trabalho. É ótimo que eles possam se comunicar, mas eu preciso vê-los capazes de resolver problemas.
fonte