“Teste” do quadro branco durante uma entrevista: maneira legítima de fazer backup do seu código (quadro branco)? [fechadas]

15

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]

mlvljr
fonte
23
Se eu quisesse que alguém escrevesse código em um quadro branco ou papel durante uma entrevista, não esperaria que fosse 100% sintaticamente correto - isso está colocando-o sob muita pressão. Sim, deve estar amplamente correto, mas a falta de ponto-e-vírgula ou até mesmo a obtenção de um nome de método / perfil de parâmetro ligeiramente errado está (ou deve estar) OK.
ChrisF
17
Sou um grande fã da codificação do quadro branco nas entrevistas, mas quem espera que o código do quadro seja sintaticamente perfeito está fazendo errado. O objetivo é ver como você ataca um problema, não como produzir código sintaticamente perfeito em um ambiente totalmente irreal.
Tim Goodman #
3
você deve saber qual é qual, solicitando que eles comentem o que estão fazendo, por exemplo, ou discutindo a solução com eles depois que terminarem.
ChrisF
6
Estar excessivamente preocupado com a sintaxe e a ortografia exatas custará os pontos do entrevistador em meu livro.
precisa saber é
2
é para isso que serve o código psuedo
jk.

Respostas:

49

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.

Kate Gregory
fonte
2
Parece ser uma ótima resposta (e para ser honesto, muito mais interessante que eu inicialmente esperava receber). Muitíssimo obrigado.
mlvljr
9
@KingOfHypocrites você realmente leu a resposta? Eu não ligo para perder um ponto e vírgula. Olha o que diz que eu me importo. 20 minutos no quadro me dizem muito sobre você.
18712 Kate Gregory
7
Estou curioso para saber se alguma pesquisa validou a entrevista no quadro branco. Divulgação completa: Fiquei curioso depois de apenas falhar em uma entrevista no quadro branco, difícil. Eu não entrevistei há alguns anos, nunca fui um bom artista / apresentador e praticamente congelou. Suas idéias são excelentes e, se eu tivesse lido isso primeiro, teria pensado sobre essa parte do processo de entrevista de maneira muito diferente (e falado mais). Dito isto, muitas pessoas têm opiniões fortes sobre esse tópico, mas isso parece ser tudo. Suponho que haja uma justificativa objetiva para essa prática, apoiada em dados de suporte. Existe?
Suboptimus 30/07/2013
3
+1 Para ser sincero, eu abordaria o quadro branco como um proxy para um exercício de programação em pares, na esperança de manter um fluxo de conversas sobre a tarefa, como sugere Kate - embora eu prefira ter uma máquina e realmente emparelhar um programa com o candidato (ou seja, o candidato em dupla programação com o entrevistador). Como você codifica em conjunto é tão importante quanto como codifica sozinho, em uma organização de qualquer tamanho.
Julia Hayward
4
Sei que isso é antigo, mas acabei de me vincular a ele e gostaria de salientar: uma das características de um distúrbio do processamento visual é a falta de capacidade de estimar o espaço em que você está escrevendo e, portanto, ficar sem espaço. . Se a pessoa que você está avaliando não apenas fica sem espaço para mais linhas, mas também tem caracteres menores no final de uma linha à medida que percebem que começaram muito grandes, eles podem ter apenas uma dificuldade de aprendizado em vez de não entenderem quanto tempo o código será. Peça-lhes para estimar algo não espacial e você poderá obter um resultado melhor.
Yamikuronue 12/12
17

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 :-).

Martijn Verburg
fonte
2
Eu falhei em uma entrevista porque, como eles disseram, eu não havia escrito um código perfeitamente otimizado na primeira passagem em um teste de caneta e papel (pertencendo à escola de trabalhar com testes de unidade e depois otimizar ) Por outro lado, eles não tinham uma estrutura de teste em funcionamento, apenas supunham que tinham codificadores que fizeram isso corretamente da primeira vez!
Julia Hayward
3
@JuliaHayward - Uma fuga de sorte para você pelos sons! Não posso acreditar que as pessoas ainda fazem isso.
Martijn Verburg
7

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.

FinnNk
fonte
2
Sua história parece provar que seu teste foi eficaz. Em vez de geralmente perguntar "Como você revisa o código?" eles te deram alguns para revisar. Você falou em voz alta e disse algo como "deve garantir que tudo implemente" e, mesmo que você não tenha encontrado o que falta, você mostrou a eles que realmente sabe revisar o código para erros, e não apenas responder a perguntas sobre ele . Você provavelmente também não apontou muitos erros que algumas pessoas podem ter, e talvez tenha visto outros erros também. E então você conseguiu o emprego. Parece-me eficaz para todos!
Kate
2
Além disso, o ponto e vírgula ausente continua sendo descartado como não sendo um negativo real. Digitar de forma consistente a sintaxe do seu idioma preferido significa que você é um desenvolvedor mais lento do que alguém que internalizou toda essa sintaxe. Você está constantemente voltando e consertando as coisas que esqueceu. Há uma boa chance de você perder o ritmo com as constantes críticas do IDE. Além disso, as pessoas que deixam todos os seus pontos e vírgulas no quadro branco e não percebem quando você as solicita não estão no mesmo nível dos bons desenvolvedores que, uma vez por semana, esquecem de digitar um ponto e vírgula no IDE e corrigem isto.
Kate
2
+1 é ineficaz. Não prova absolutamente nada. Tenho certeza de que muitas pessoas que reprovam no teste são melhores do que as pessoas comuns que passam no teste.
3
@ Kate - eu entendo de onde você vem, mas eu discordo - especialmente porque agora estou sentada do outro lado da mesa. Se alguém estiver faltando ponto-e-vírgula regularmente, quero ver isso no IDE, não em uma configuração artificial. É como o código-chave do meu escritório - eu posso digitar o número sem pensar, me pedir para anotá-lo com 100% de confiança e eu estaria lutando. Uma entrevista nunca será 100% realista, então eu não quero sair do meu caminho para torná-la ainda menos.
FinnNk
1
É muito menos provável que eu omita sintaxe importante no teclado do que no quadro branco, porque a digitação é reforçada pela memória muscular. No entanto, erros de digitação (e um incômodo do meu editor, ou do parceiro de pares), especialmente em uma situação de programação de pares, provavelmente me colocam em um ciclo de feedback em que os erros reforçam os nervos que causam erros. Acho que os poliglotas provavelmente serão prejudicados em relação aos candidatos monolíngues.
dcorking
5

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
4

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.

Nota para pensar em um nome
fonte
4

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.

James Bailey
fonte
3
Qualquer pessoa decente em um idioma específico deve ter a sintaxe memorizada, simplesmente usando muito. Se um cara escreve código C # o dia todo e não conhece a maior parte da sintaxe desde o início, ele será lento e terrível. Você também pode procurar o que é 2 ^ 8, mas qualquer desenvolvedor que se preze deve saber o que há de errado com isso, simplesmente por encontrá-lo com tanta frequência. O mesmo vale para a sintaxe.
Whatsisname
1
Isso simplesmente não é verdade. Memorizar a sintaxe nos dias de hoje não é necessário. Dizer que desenvolvedores que sabem codificar em várias linguagens como sql, vb, c #, javascript e usam json, angularjs, telerik e outros não vale a pena, porque não conseguem memorizar a sintaxe é bobagem. Há muito mais para ser um bom engenheiro de software do que operadores matemáticos como você lista. Que tal entender requisitos, estruturas de design, padrões e experiência no setor? Existe literalmente sintaxe suficiente em idiomas e bibliotecas para preencher a traseira de um caminhão.
James Bailey
Não é uma questão de ser "necessário". É que, se você usar algo com bastante frequência, vai se lembrar. Se um cara afirma ser um desenvolvedor de SQL, mas não consegue escrever uma declaração de junção no topo da cabeça, é porque ele é a) incompetente b) estava mentindo sobre suas qualificações ou c) tem um cérebro muito estranho, tudo três situações com as quais não quero lidar.
Whatsisname
1
Uma "junção" não é o que normalmente é solicitado em um quadro branco. Muitas vezes, são enigmas e coisas que não são relevantes para o trabalho. E se o candidato for certificado, tiver um diploma e um currículo sólido. Você ainda acha que ele é "incompetente" porque não codifica um quadro branco para viver? Não é pedido ao pessoal de marketing que forneça ao quadro branco uma estratégia de marketing trimestral nos pontos de entrevista. Isso é bobagem. Você deve poder conversar com o candidato e deduzir facilmente se ele pode codificar.
James Bailey
3

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
3
E quando perguntado?
Mlvljr 04/11
Durante a entrevista
3

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.

David
fonte
1
Obrigado pela entrada, ao que parece, está certo sobre o que eu estava pensando ao fazer a pergunta - pode-se realmente ficar preso em um código do quadro branco sem saber se (já) está correto e sem meios para "realmente" verificá-lo. Uma solução complicada - escreva um teste de quadro branco! ;)
mlvljr