A codificação do quadro branco é inadequada durante as entrevistas? [fechadas]

30

Este é um questionamento um tanto subjetivo, mas eu adoraria ouvir comentários / opiniões de entrevistadores / entrevistados sobre o assunto.

Dividimos nossa entrevista técnica em 4 partes. Escreva Código, Leia e Analise Código, Sessão de Design e Código no quadro branco.

Na última parte, o que pedimos aos entrevistados é escrever um pequeno trecho de código (4-5 linhas) no quadro branco e explicar à medida que eles passam por ele. Deixe-me esclarecer que o objetivo não é capturar as pessoas. Não estamos procurando uma sintaxe perfeita. Inferno, pode até ser pseudo-código. mas o objetivo é dar a eles um problema muito simples e ver se o cérebro deles pode nos comunicar a solução. Por problemas simples, quero dizer "Inverter uma string", "FizzBuzz" etc ...

Observe que sempre solicitamos um idioma explícito primeiro. Somos uma casa .NET C #. dissemos apenas "pseudo-código" em que alguém está apagando / realmente lutando com o código.

Minha pergunta é "É inapropriado / irracional esperar que um programador escreva um trecho de código em um quadro branco durante uma entrevista?"

Eoin Campbell
fonte
13
IMHO bastante razoável (e teria impedido algumas contratações muito ruins no meu ex-empregador, se ao menos ele fosse implementado).
Piskvor 11/11/11
3
É algo realmente deprimente do ponto de vista do entrevistador. Como as pessoas que afirmam ter 5 anos de experiência em programação não possuem essas habilidades básicas? e 90% não. (que é de 90% após a capina 70% do CV é imediatamente, e uma taxa de insucesso de 70% em entrevista por telefone)
Michael Shaw
18
We're not looking for perfect syntax.torna razoável, na verdade eu diria recomendado! Não é razoável criticar erros de sintaxe na codificação do quadro branco.
Qwerky 11/11/11
16
também não espere caligrafia perfeita. A escrita no quadro branco é uma habilidade que a maioria das pessoas não tem, e a maioria dos programadores na minha experiência tem uma caligrafia atroz para dizer o mínimo, escrever verticalmente só piora as coisas.
jwenting
3
Apropriado, sim. Efetivo, não. O único desenvolvedor fraco que eu contratei pessoalmente fez brilhantemente em um quadro branco.
PDR

Respostas:

47

Na minha opinião, é muito apropriado. Se você deseja que um trabalho desempenhe uma habilidade específica, é inteiramente apropriado que se demonstre essa habilidade na entrevista.

O efeito dessa técnica no processo de recrutamento é muito perceptível. 90% dos candidatos falham nessa tarefa. mas os desenvolvedores recrutados são bons e os desenvolvedores serão respeitados dentro da empresa.

Se, como candidato a esta técnica, relaxe antes de tudo. Trata-se de avaliar você como programador e seus processos de pensamento. Não se trata da sua sintaxe perfeita. Se você cometer um erro de sintaxe, eu posso desempenhar o papel de um compilador e dizer que o código não é compilado em uma determinada linha, além de fornecer uma mensagem de erro e ver como você responde. Da mesma forma, se você adicionar um; em um loop ou em uma instrução if que seria compilada, eu tocaria o depurador e o explicaria em uma única etapa do código. Novamente, não é sobre o erro, é sobre como você lidaria com o erro, e seus processos de pensamento são bons.

Michael Shaw
fonte
11
obrigado pelo ptolemy feedback. muito apreciado. sua resposta descreve exatamente o que estou procurando e como eu abordaria ajudar o candidato a resolver os problemas. Mas, como você também apontou, estou surpreso com o número de pessoas que se candidatam a cargos de mais de 5 anos que não podem fazer isso.
Eoin Campbell
11
O maior perigo disso é que a frustração se instala e você oferece um emprego a alguém que falhou na tarefa de programação, mas se saiu bem nos outros aspectos da entrevista como um teste técnico. A realidade é que esses candidatos leram um livro e têm boa memória. Você está recrutando pessoas para ler livros? ou para escrever programas?
Michael Shaw
@EoinCampbell, se as habilidades de comunicação são importantes para você, isso é totalmente apropriado.
11
então, como candidato, você comete um erro; então, um pouco mais tarde (não imediatamente), trago esse erro à sua atenção. Você se sentirá pressionado nesse momento. Esta é uma parte essencial da entrevista, vendo como você responde? Você consegue lidar com a pressão de um erro de digitação em uma entrevista? Se você derreter sob essa pressão, o que você fará quando nós, como equipe, estivermos sob pressão para entregar o software dentro de um prazo?
Michael Shaw
11
Eu usei a codificação do quadro branco, a parte positiva é que ele encontra realmente bons programadores juniores. O negativo da codificação do quadro branco é a alta taxa de falhas, mas essas pessoas não são muito boas para começar. Pedi às pessoas que escrevessem apenas uma linha de código no quadro e ainda tivessem taxas de falha muito altas. Por outro lado, me fizeram perguntas do quadro branco como entrevistado e sempre achei as perguntas razoáveis. Prefiro a codificação do quadro branco a listar os algoritmos favoritos das pessoas para problemas específicos.
precisa saber é o seguinte
15

Minha pergunta é "É inapropriado / irracional esperar que um programador escreva um trecho de código em um quadro branco durante uma entrevista?"

É muito razoável. Uma alternativa para um quadro branco pode ser um laptop e um beamer, pois os programadores estão mais acostumados a escrever código em um teclado do que em um quadro branco. Apenas verifique se um ambiente de desenvolvimento como Eclipse, VS ou Idle já está em execução com um projeto em branco quando o candidato iniciar, para que ele não precise perder tempo pesquisando nos aplicativos instalados.

nikie
fonte
Eu deliberadamente não uso um computador em entrevistas por causa do efeito intelisense. Um candidato inexperiente programas pressionando o. e selecionando algo da lista. Um quadro deixa isso muito óbvio ...
Michael Shaw
5
@Ptolemy: Você realmente acha? Para um exercício típico de quadro branco como "programe uma pesquisa profunda em uma árvore", qual seria o uso do Intellisense?
Nikie
2
Os quadros brancos / papéis não travam, e todo mundo sabe como escrever neles. Se você me der IDLE para resolver um problema, vou assumir que você é um idiota, e se você me der Eclipse, gastarei metade do meu tempo lutando contra as teclas padrão.
6
O Intellisense (e outros recursos de preenchimento automático de IDEs também, tenho certeza) pode ser desativado. Ou você pode dar a eles o bloco de notas (ou uma alternativa melhor, como o Notepad ++, que destaca a sintaxe, mas não possui preenchimento automático ou algo semelhante). Claro, ele pode travar, mas de forma realista: quantos erros de showstopper você encontrou no Bloco de Notas?
a CVn
3
Mesmo que seja apenas o notepad.exe, é muito mais fácil trabalhar com papel ou um quadro branco. Você pode inserir ou excluir linhas, o que é uma grande dor na mídia física.
CodesInChaos
10

Não é inapropriado, mas saiba que nem sempre pode revelar os verdadeiros insights sobre as habilidades de programação ou de resolução de problemas da pessoa que você está entrevistando. E acho que é exatamente isso que você procura.

Em segundo lugar, observe que sempre há o medo do fracasso, constantemente provocando o cérebro da pessoa. "E se eu estragar tudo?", "E se eu cometer um erro bobo". A maior parte do cérebro da pessoa está ocupada, inspecionando constantemente como está saindo - apenas poucos conseguem aguentar os nervos.

Portanto, nesse tipo de situação, até os melhores podem acabar vacilando.

Na última parte , pedimos aos entrevistados que escrevam um pequeno trecho de código (4-5 linhas) no quadro branco e expliquem à medida que eles passam por ele

Isso está ok. Mas, novamente, apenas porque alguém não pode explicar algo corretamente não significa que não o conhece bem. (Explicação é uma arte de falar).

Se eu fosse você, faria isso Pela última parte ...

Contrate-os para um projeto muito pequeno (mas realista). Veja como eles codificam, tomam decisões, assimilam as condições de trabalho e os membros da equipe etc., e depois, com base nisso, tomam a decisão final.

codificador de árvore
fonte
6
Se parte do seu processo de recrutamento oferecer um contrato de prazo fixo por três meses, quantas pessoas realmente se demitiriam de uma função permanente para aceitar sua oferta?
Michael Shaw
11
Eu quis dizer o último, no sentido de que era o último item da minha lista. Eu confundo a ordem das coisas na entrevista, dependendo de como a parte da conversa progrediu e onde eu acho que estão seus pontos fortes e fracos. Quanto a oferecer a eles um contrato de curto prazo ... isso não é realista em uma pequena empresa do mundo real. Não tenho tempo / recursos para arriscar punt-risk de três meses em pessoas que podem não dar certo e, como Ptolemy apontou, duvido que os candidatos também fiquem atentos.
Eoin Campbell
"A maior parte do cérebro da pessoa está ocupada, inspecionando constantemente como está saindo - apenas poucas conseguem aguentar os nervos". Eu sempre senti que isso é importante notar, especialmente com algumas pessoas novas dentro ou saindo da faculdade. Eu sei que eu estava arruinada nas minhas primeiras entrevistas, me preocupando com o fato de que eu errei algumas das perguntas mais fáceis só porque eu estava tão nervosa. Concedido, não há muito que você possa fazer. Tudo o que eu pude fazer foi passar para a próxima entrevista, eventualmente me sentindo confortável com o processo.
The Jug
11
@TheJug concorda completamente e seremos muito mais gentis com Juniors e Graduados para garantir que eles não sejam sobrecarregados pelo processo, mas tivemos desenvolvedores seniores (de 7 a 8 anos) enfrentando isso.
Eoin Campbell
11
"Contrate-os para um projeto muito pequeno (mas realista) ..." - você sugere que "contrate", por exemplo, três dos candidatos que se candidataram a um cargo, mesmo se você planeja apenas manter um? Isso me parece muito injusto! Provavelmente também não melhoraria o espírito de equipe.
Nikie
8

Não é inapropriado, mas lembre-se de que algumas pessoas (e talvez uma parcela maior da multidão de programadores) podem estar muito estressadas em uma entrevista. Acho que a maioria de nós conhece o cara do escritório que é um programador brilhante e uma pessoa muito confiável, mas ele se derreteria em tal situação. Seu desempenho não pôde ser medido em um teste como esse; portanto, não faça disso um teste de aprovação / não aprovação.

Tamás Szelei
fonte
7
Não conheço esse cara, porque ele não foi contratado.
kevin Cline
4
@kevincline em detrimento da empresa, a menos que você ganhe dinheiro fazendo com que as pessoas fiquem nervosas.
21413 JayPea
11
@ JayPea: como eu sei que uma pessoa é um codificador brilhante se eu não consigo parecer que ela codifica? A única alternativa seria uma recomendação de alguém que já faz parte da equipe. Todo mundo gosta de contratar recomendações confiáveis, mas esse é um grupo bem pequeno.
Kevin cline
11
@kevincline Leia minha resposta, não estou dizendo que você não deve codificar o quadro branco na entrevista do desenvolvedor.
Tamás Szelei
@JayPea Tenho certeza de que ter funcionários que não ficam nervosos em situações de alto estresse é um fator importante no sucesso financeiro de muitas empresas.
Kry Strand
4

Pessoalmente, acho que essa é uma das melhores coisas que você pode fazer. Como você disse que não procura a sintaxe correta ou algo semelhante, a parte mais importante aqui é ver se alguém pode se comunicar ... Eu já vi tantos desenvolvedores bons que só podem trabalhar sozinhos dentro de seu próprio espaço ... Infelizmente isso não é possível em uma grande quantidade de casos, portanto, ter um cara habilidoso que também é capaz de DIZER o que pensa de maneira clara e concisa é um membro mais valioso da equipe do que alguém que pensa: "Eles não vão entender de qualquer forma, eu mesmo faço e demonstro mais tarde ".

Comunicação, comunicação, comunicação é a base de todos os projetos de médio e grande porte (até menores, quando necessário)

Ivan Crojach Karačić
fonte
bem, é mais do que comunicação. eles precisam ser capazes de se comunicar, com certeza, mas também precisam me dizer sua solução para o problema simples.
Eoin Campbell
4

Eu acho que não é uma coisa razoável. Tentamos encontrar candidatos que sejam bons na tarefa que queremos que eles façam. Escrever código em um quadro branco não é um deles e não acho que seja um filtro válido encontrar bons candidatos.

  • Um bom código não é gravado, é reescrito. Um quadro branco é praticamente imutável, pois é difícil mudar depois que você o escreve. Deve ser o mais fácil possível mudar de idéia assim que entender melhor o problema.
  • Estar em uma entrevista é uma situação estressante, pois não é necessário exercer pressão adicional sobre o candidato. Muitas pessoas de computador não têm uma boa caligrafia. Os IDEs modernos fornecem muitas ferramentas com as quais você está acostumado. E poder pesquisar no Google algo no minuto que você precisar também faz parte do estilo de trabalho da maioria dos programadores. Por que tirar todas essas coisas e criar um ambiente artificial, no qual elas nunca terão que trabalhar se você lhes fizer uma oferta?
  • Também estamos muito interessados ​​na capacidade de escrever bons testes, talvez até em TDD. Não é possível ver durante a codificação do quadro branco.

A maioria das pistas que você pode obter de uma sessão de codificação do quadro branco também pode sair de uma sessão de emparelhamento - e acredito que o emparelhamento é uma ferramenta muito melhor para ter uma sensação, como um candidato resolve um problema e como ele funciona. Ele pode trazer seu próprio computador e trabalhar em um ambiente com o qual se sinta confortável. E é muito mais fácil aplicar a tarefa que você deseja que eles façam quando ingressarem. Por exemplo, temos uma grande base de códigos herdada, portanto, solicitamos que refatore algum código extraído para o projeto real. E, na verdade, combinamos o máximo possível em nosso trabalho diário, por isso é bem adequado.

Enquanto uma sessão de quadro branco provavelmente ajuda a filtrar candidatos ruins, provavelmente também filtra muitos bons programadores.

iGEL
fonte
11
Os quadros brancos são imutáveis? Você apenas limpa algo e o reescreve por um capricho, é o que os torna úteis, especialmente o ensino. Você deve viver em um universo alternativo.
Whatsisname
Talvez imutável seja a palavra errada (peguei em medium.com/dima-korolev/… - que acha que é uma vantagem). Ainda assim, comparado a um editor, é difícil adicionar algo para o qual você não deixou espaço.
iGEL
3

Pessoalmente, eu deixaria qualquer entrevistador me pedindo para fazer o FizzBuzz. Não sei quando isso se tornou o novo padrão da indústria, mas é realmente uma perda de tempo. O FizzBuzz é um filtro que pode ser usado antes de uma entrevista, embora pessoalmente eu pense que se eu tivesse que escolher entre N candidatos dos quais bastante código-fonte aberto ou um blog que eu pudesse ver, eu definitivamente preferiria isso como filtro .

Simplificando, acho que em uma entrevista para uma posição de programação (exceto talvez para juniores ou estágios), já deveria ter sido estabelecido / determinado que o entrevistado pode programar.

Mas sim, o quadro branco é perfeito, embora eu ache que você deva ter um conjunto diferente de problemas. Jogue para eles um problema do mundo real e peça para eles desenharem um monte de barganhas UML-ish para explicar sua estratégia geral para resolver esse problema. Dê a eles um computador com Internet, para que eles possam procurar bibliotecas de terceiros que possam ser usadas como caixas-pretas na paisagem de squibbles.
Dentro de alguns minutos, você realmente verá como eles lidam com os problemas. Você pode realmente tornar isso uma coisa muito interessante, escolhendo problemas que você não tem necessariamente uma solução em mente e tentando "resolvê-los" juntos, para ver se eles se comunicam e se podem incorporar informações (por mais que não force demais - algumas pessoas podem congelar se você o fizer). E depois adicione alguns requisitos em tempo real. É como o desenvolvimento de software sem implementação e, o mais importante, sem depuração, portanto, 15 minutos é muito tempo.

back2dos
fonte
"já deveria ter sido estabelecido / determinado que o entrevistado pode programar" - como? Ou você tem uma pré-entrevista; nesse caso, a pergunta do OP se torna a codificação do quadro branco apropriada em uma pré-entrevista ou você aceita efetivamente a palavra do candidato, o que está convidando desastre. Recrutadores e currículos podem mentir, blogs e repositórios do github podem ser plagiados.
Julia Hayward
@JuliaHayward: Estabelecer as habilidades básicas de codificação de um candidato em uma pré-entrevista é uma coisa diferente. Você não precisa convidar alguém no local para fazer isso. Você pode enviar a eles um pequeno problema que eles podem resolver. Possivelmente discuta essa solução (ou código do github) pessoalmente. O mais importante: é altamente improvável que você encontre um candidato capaz de dominar graciosamente o tipo de problema que sugiro, embora não seja capaz de resolver problemas do tipo fizzbuzz. A entrevista deve ser usada para determinar a capacidade do candidato para lidar com a complexidade típica dos problemas do mundo real.
jan2
Talvez você não precise ter alguém no local, mas pelo menos deve estar ao telefone com o candidato falando durante o exercício de codificação, o que quer que você use. Apenas entregar uma pergunta e aguardar o envio de um arquivo zip ainda apresenta todos os riscos de representação; como exemplo extremo, fiz o teste para o FooCorp uma vez e depois, por interesse, pesquisei "Teste de codificação FooCorp" depois - e descobri que alguém havia publicado uma solução muito boa.
Julia Hayward
@JuliaHayward: Se você der a todos os candidatos o mesmo problema, é claro que a resposta se tornará possível no Google. Não é de surpreender, é? Mas, novamente, minha resposta permanece: não faça a codificação do quadro branco no nível do fizzbuzz em uma entrevista. Isso apenas mostra que você não se incomodou em preparar um problema bom e interessante. Como você mesmo disse, existem maneiras de estabelecer habilidades básicas de programação antes de convidar os candidatos para o seu quadro branco.
back2dos
3

Deixe-me responder com outra pergunta:

Escrever código em um quadro branco oferece alguma vantagem real na avaliação da capacidade de programação, em comparação com a digitação e execução do código em um computador?

Eu acho que é absolutamente apropriado pedir a um candidato que escreva código em uma entrevista. No entanto, para mim, poder executar o código é uma parte crítica do ciclo de feedback que compõe a programação. Em um quadro branco, você está amarrando uma mão nas minhas costas e não está tendo uma visão completa de como eu resolvo um problema.

Kevin C.
fonte
esta é apenas a sua opinião ou você pode apoiá-la de alguma forma?
gnat 21/02
2
@gnat Estou apenas fazendo uma pergunta. A segunda metade da resposta é minha opinião, sim, mas isso deve ficar bem claro pela linguagem usada. Além disso, a pergunta em si começa reconhecendo que é subjetiva e solicita especificamente opiniões sobre o assunto. Eu não acho que o voto negativo foi justificado.
Kevin C.
@ Kevin C. Eu acho que, independentemente da sua redação, você está fazendo um ponto muito bom aqui. A codificação do quadro branco é diferente da codificação do computador. Isso é uma opinião? Certamente não, desde que os quadros brancos não consigam executar o código.
Leandro Caniglia
2

Não, mas na IMO, uma abordagem melhor seria usar o quadro branco para a finalidade pretendida e usar UML / sketches / notes para algum projeto fictício, em vez do antigo "escreva-me uma consulta sql para obter todos os registros" ou "escreva um método que inverte uma string ".

Uma das melhores entrevistas que tive foi passar 20 minutos discutindo com o desenvolvedor principal a arquitetura (não software) da mansão de um cientista louco (completa com esconderijo secreto, raio da morte e canil). Ele conseguiu ver minha abordagem na solução de problemas, e o problema era algo divertido, não algo típico de programação mecânica 101 que foi resolvido pelas linguagens modernas milhares de vezes. Aliás, eu também fiz um código como esse antes, mas me senti muito mais "sob pressão" do que com a parte da arquitetura.

Wayne Molina
fonte
2

Hoje em dia, muita programação é feita em equipes. Para que as equipes trabalhem, as pessoas precisam ser capazes de se comunicar. Grande parte disso é poder se comunicar na frente de um quadro branco (brainstorming, mentoring, revisões de código, correções propostas etc.)

Eu procuraria saber se o candidato explicou como solucionar a solução de um problema de programação usando o código do quadro branco para ajudar. Se a explicação for boa o suficiente, os outros bons programadores na sala corrigirão mentalmente automaticamente quaisquer erros / erros no quadro.

Para a maioria dos tipos de posições de equipe, não seria razoável NÃO esperar que um candidato seja capaz de explicar e rabiscar sua tentativa de solução.

hotpaw2
fonte
0

Não, é bom codificar para uma entrevista, mas você deve permitir o código em qualquer idioma razoável, pois geralmente é mais fácil treinar um competidor de codificador em outro idioma do que obter um codificador mais ou menos no idioma desejado. a um nível concorrente.

Paddy3118
fonte
0

Eu diria que é apropriado, mas na maioria dos casos não é uma maneira eficiente de descobrir quem é bom em programação e quem não é. Se você deseja que um trabalho seja feito (= contrate alguém que seja capaz), a entrevista deve se concentrar em medir as habilidades da vida real. Até agora, a melhor entrevista que eu havia trabalhado assim:

  • Saudações, bem-vindo pelo RH.
  • Poucas palavras sobre mim, sobre a empresa, etc ... e ela explicou o resto da entrevista.
  • Ela me deu um laptop com um programa que perdia poucas partes, que havia falhado nos testes de unidade por causa disso. As partes ausentes foram comentadas lá como textos, tratava-se de implementar uma tarefa básica, como criar conexão entre poucas classes e introduzir uma lógica de negócios simples.
  • Se tudo corresse bem, os testes de unidade ficariam verdes.
  • Dizer adeus e concordar em voltar em alguns dias.
  • Naquele dia, o líder se encontrou comigo e perguntou sobre o programa finalizado, o que eu fiz e por quê.
  • Este líder também perguntou sobre minhas experiências passadas e algumas outras perguntas.

Então, para resumir: se você está procurando força de trabalho em um código de produção, teste suas habilidades no ambiente real. Se você está curioso sobre o conhecimento teórico deles, é melhor perguntar a eles sobre essas coisas. Se você está despojado do IDE ou está nervoso porque precisa programar no quadro branco na frente de alguém, eu entendo, especialmente nas pessoas de TI às vezes são introvertidas e muitos de nós não conseguem lidar bem com essas situações, por exemplo nossa eficiência parecerá pior do que realmente é.

CsBalazsHungary
fonte
-1

Eu não acho isso irracional, a menos que o entrevistado tenha uma caligrafia ruim (ou devo dizer) :-). Além da única diferença na sua abordagem, é o uso de um quadro e marcador. Em alguns casos, os entrevistadores fazem isso, mas fornecem um papel e uma caneta. No caso de haver 3-4 pessoas conduzindo a entrevista, eu diria que sua abordagem será muito melhor e adequada.

Pankaj Upadhyay
fonte
11
"Principalmente ou todos os entrevistadores fazem isso" , é muito raro na OMI.
precisa
Eu acho que todo mundo faz isso. É raro que eles apresentem um PC ou laptop apenas para verificar se você resolve um problema de codificação específico. Mas talvez, as coisas sejam diferentes em seu lugar. Se você quiser, posso editar essa coisa na resposta?
Pankaj Upadhyay
veja, eu concordo que é muito raro ... Realizei 4 empregos nos últimos 9 anos e nunca fui solicitado a escrever código em papel / wb. Qualquer codificação está em um IDE. é por isso que me pergunto se é inadequado. Eu esperaria que um desenvolvedor fosse capaz de digitar o código "Reverse a string" em alguns minutos, no máximo, sem a assistência do IDE / Intellisense.
Eoin Campbell
Fiz a edição com base na sua experiência. Em duas entrevistas que eu também participei, eles me deram uma caneta e um papel para escrever como imprimir uma série de Fibonacci e um algoritmo para a combinação de cores. Então, eu pensei principalmente as coisas vão, desta forma :-)
Pankaj Upadhyay
Devo salientar que nunca tive que escrever código em um computador; Eu tive que escrever código no papel duas vezes (quando eu era júnior) e tive que desenhar um diagrama de arquitetura em um quadro branco uma vez . Isso está fora de cerca de 20 entrevistas ...
Kirk Broadhurst