Devo dar a resposta a um exercício de codificação de entrevista com falha? [fechadas]

14

Tivemos um candidato a nível sênior da entrevista reprovado em uma nuance da pergunta 1 2 do FizzBuzz .
Quero dizer, realmente, completamente, completamente, falhei na pergunta - nem mesmo perto.
Eu até treinou-lo através de pensamento sobre usando um loop e que 3e 5foram realmente vale a pena considerar como casos especiais.

Ele estragou tudo.

Apenas para fins de controle de qualidade, fiz a mesma pergunta exata a três colegas de equipe; deu a eles 5 minutos; e depois voltou para coletar seu pseudo-código. Todos eles acertaram em cheio e não tinham visto a pergunta antes. Dois perguntaram qual era o truque ...

Em um exercício lógico diferente, o candidato mostrou alguma compreensão de alguns dos recursos disponíveis no idioma que ele escolheu usar (C #). Portanto, não é como se ele nunca tivesse escrito uma linha de código. Mas sua lógica ainda fedia.

Minha pergunta é se eu deveria ter dado a ele a resposta para as perguntas lógicas.

Ele sabia que estragou tudo e reconheceu isso mais tarde na entrevista.
Por outro lado, ele nunca pediu a resposta ou o que eu esperava ver.

Eu sei que exercícios de codificação podem ser usados ​​para configurar candidatos a falhas (novamente, veja o segundo link acima). E eu realmente tentei ajudá-lo a responder ao cerne da questão. Mas esse era um candidato de nível sênior e o Fizz-Buzz é, francamente, ridiculamente fácil, mesmo depois de considerar o nervosismo das entrevistas.

Eu senti que deveria ter mostrado a ele uma maneira de resolver o problema para que ele pudesse pelo menos aprender com a experiência. Mas, novamente, ele não perguntou.

Qual é o caminho certo para lidar com essa situação?


1 Ok, esse não é o link para a pergunta real do FizzBuzz, mas é uma boa discussão sobre a P.SE em torno do FizzBuzz e os links para os vários aspectos dela.

2 Para ajudar a esclarecer, esta é a nuance do Fizz-Buzz que perguntei e é do primeiro problema do Project Euler . Impressão substituta Fizz | Buzz para somar os números e você tem a mesma pergunta fundamental.
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Write a function that finds the sum of all the multiples of 3 or 5 below 1000.

3 Essa pergunta atraiu mais atenção do que eu esperava e aprecio todas as respostas. Algumas das respostas posteriores chegaram realmente ao cerne da minha pergunta, portanto, permitirei que a comunidade analise e vote antes de atribuir a "resposta".

4 Selecionei "a" resposta com base nos votos da comunidade naquele momento. E acho que a resposta de Yannis é apropriada para entrevistas com desenvolvedores mais recentes. Eu acho que a resposta coletiva focada na falta de pedir a resposta também é clara.

Comunidade
fonte
34
Solte-os e continue com o seu dia. Para mim, falhar no FizzBuzz no "nível sênior" está proposital e maliciosamente desperdiçando meu tempo.
Steven Evers
6
Recentemente, entrevistei várias posições na minha área e as que exigiam código me indicaram que estavam tendo problemas para encontrar candidatos de nível sênior que pudessem passar nos seus próprios testes "FizzBuzz". Em todos os casos, minha reação foi "você não pode estar falando sério". Aparentemente, existem muitos programadores terríveis por aí, disfarçados de nível sênior, que nem chegam perto.
Joel Etherton
6
@ JoelEtherton - A mesma coisa por aqui. Procurei telas de telefone em todos os lugares que vou. Se você está se candidatando a um Sênior usando C # e não pode nos dizer a diferença entre um tipo de valor e um tipo de referência, não está recebendo uma entrevista.
Telastyn
3
@ 0A0D, liderar uma equipe é um tipo de habilidade diferente de ser um bom desenvolvedor. Vi também líderes de equipe que também eram maus desenvolvedores.
21812 Kyralessa #
4
@ JoelEtherton, não fique surpreso. Eu pensei que "199 de 200 candidatos não sabem codificar" era mero exagero até eu começar a ajudar na triagem e entrevistar os candidatos. Anos de experiência (alegada) simplesmente não importam. Os cargos não importam. A maioria dos candidatos é de fato incrivelmente jovem, sabendo ou não.
Anthony Pegram

Respostas:

15

A maioria das minhas entrevistas foi com estudantes que procuravam uma vaga de estágio e, na maioria das vezes, estragaram exercícios simples (?). Eu queria uma maneira fácil e amigável de comunicar os erros deles, e o que surgiu foi bem simples: resolvi os exercícios sozinho e mostrei minhas soluções depois que eles terminaram com os deles.

Tive algumas discussões extremamente interessantes e reveladoras com os candidatos que começaram comparando nossas diferentes abordagens para resolver o mesmo problema. Depois de um tempo, eu até antecipei alguns dos erros, apenas verificando qual escola o candidato estava frequentando (alguns "professores" são ... idiotas). E, bem, nos poucos casos em que um candidato não conseguiu encontrar nenhuma solução, eu já havia dado um para a próxima vez.

yannis
fonte
Faz sentido; Eu estava procurando um novo emprego recentemente e descobri que a maioria dos entrevistadores fazia a mesma coisa quando dava respostas erradas (ou levemente "fora de questão") para suas perguntas. Esta é realmente uma boa prática. Principalmente porque abre o candidato (por exemplo, eu) e torna a entrevista em si mais envolvente dos dois lados. Mas é claro que estávamos discutindo modelos, RAII e multithreading em C ++. A questão é o que você diz a uma pessoa que não pode resolver o efervescimento?
Chani
11
@RitwikG Honestamente, se o candidato está entrevistando para uma posição de programação e não consegue lidar com o fizzbuzz, provavelmente eu ... ria (ei, nunca disse que era um bom entrevistador;). Dito isto, há alguns meses, perdi alguns dias lutando contra o que era um OBOE extremamente trivial no meu código. Todos nós temos nossos momentos de folga, e eu realmente não me fixaria no candidato que estava estragando um exercício, provavelmente passaria para o próximo rapidamente. Se eles falhassem no próximo também, eu provavelmente agradeceria pelo tempo e seguir em frente.
22412 yannis
1
@YannisRizos Essa é provavelmente uma boa abordagem; sempre há uma chance de a pessoa não se sair bem em situações de entrevista ou de alguma forma evitar a operação do módulo em seu trabalho (embora isso não seja um bom presságio, para dizer o mínimo). Na minha experiência, um número significativo de candidatos fica perplexo quando solicitado a escrever qualquer loop simples (em qualquer idioma de sua escolha), mesmo para cargos de nível superior. Agora que , eu acho completamente impossível de justificar.
Daniel B
Essa também é uma boa ideia do processo. O candidato estava compreensivelmente nervoso, e eu estava mais do que disposta a dar uma margem para isso. Quando ele finalmente começou a falar sobre sua tentativa de solução, isso foi apenas complicado e criou condições de contorno que ele perdeu.
15

Dando a resposta

Eu diria que, se o candidato não estiver interessado o suficiente para perguntar, não perderia o fôlego, mas a resposta @Yannis_Rizos é muito melhor.

As entrevistas são bastante rápidas. Eu sei que muitas vezes procuro as coisas por dias após uma entrevista.

Pessoas que não podem codificar o FizzBuzz Classic

Eu imagino que um grande ponto de discórdia é estar ciente do operador%. Você esperaria que alguém pensasse em comparar, (myInt / 3) == (myDouble / 3.0)mas talvez com o estresse de uma entrevista ... Ainda assim, o FizzBuzz Classic força uma abordagem de força bruta, colocando-a na categoria dos problemas de algoritmo mais fáceis de resolver. Como sugestão, você já tentou pedir às pessoas que codificassem "Fizz" como meio crédito e talvez adicionassem "Buzz" posteriormente como aprimoramento?

Acho que a resposta final para sua pergunta é que é realmente muito difícil encontrar bons candidatos.

Perguntas da entrevista em geral

Muitas vezes, achei mais fácil e produtivo pedir aos candidatos que descrevessem o último projeto de programação que eles estavam entusiasmados. Eu tive 100% de sucesso com essa pergunta, o que significa que as pessoas que falaram animadamente sobre um projeto de programação e puderam responder perguntas técnicas sobre ele foram ótimas contratações e aquelas que não puderam, não foram. Isso tem os bons efeitos colaterais de deixar o candidato à vontade e incentivar discussões abertas. Com esta pergunta, o candidato, na verdade, informará para o que eles são mais adequados.

Talvez em um algoritmo do think tank também sejam necessárias perguntas, mas eu as abandonei em favor da questão do "projeto favorito".

Soma (Filho) de FizzBuzz

Sua pergunta da entrevista não é equivalente ao FizzBuzz:

Se listarmos todos os números naturais abaixo de 10 que são múltiplos de 3 ou 5, obtemos 3, 5, 6 e 9. A soma desses múltiplos é 23. Escreva uma função que encontre a soma de todos os múltiplos de 3 ou 5 abaixo de 1000.

Onde o FizzBuzz Classic obriga a realizar n iterações (para imprimir todos os números ou Fizz / Buzz), seu problema pode ser resolvido em n / 5 + n / 3 + n / 15 iterações, ou mesmo sem iterações - uma conexão direta direta. cálculo de pontos é possível. O programa a seguir compara esses três métodos:

public static void main(String[] args) {
  long n = Long.valueOf(args[0]).longValue();
  long sum = 0;
  long ms = System.currentTimeMillis();
  // Brute force method  Performance: cn
  for (long i = 1; i <= n; i++) {
    if ((i % 3) == 0) { sum += i;
    } else if ((i % 5) == 0) { sum += i; }
  }
  System.out.print("Brute force sum:    " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Second solution: iterate through only numbers we are
  // interested in.  Performance: c * (n/3 + n/5 + n/15)
  // We counted multiples of 15 twice, so subtract one of them
  sum = countSum(n, 3) + countSum(n, 5) - countSum(n, 15);
  System.out.print("Only multiples sum: " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Third solution: Use high school algebra.  Performance: c
  sum = sumSeries(n, 3) + sumSeries(n, 5) - sumSeries(n, 15);
  System.out.print("Sum of series:      " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
}

// Iteravely sum all multiples of skip
private static long countSum(long n, long skip) {
  long skipTotal = skip;
  long grandTotal = 0;
  while (skipTotal <= n) {
    grandTotal += skipTotal; skipTotal += skip;
  }
  return grandTotal;
}

// Thanks to @Caleb for pointing this out!  High school algebra
// tells us that the sum of a series is: (n * (a1 + an)) / 2
// where a1 is the first term and an is the nth term.  E.g. The
// sum of a series of 3 is: (n/3 * (3 + n - (n % 3))) / 2
// Since we are thinking about performance here, we'll shift
// right one instead of dividing by 2 for style points.  ;-D
private static long sumSeries(long n, long skip) {
  return (n/skip * (skip + n - (n % skip))) >> 1;
}

Saída (soma do FizzBuzz <1000):

$JDK_HOME/bin/java FizzBuzzNot 999
Brute force sum:    233168 time: 0
Only multiples sum: 233168 time: 0
Sum of series:      233168 time: 0

Com um n maior para comparação de desempenho:

$JDK_HOME/bin/java FizzBuzzNot 1000000000
Brute force sum:    233333334166666668 time: 4744
Only multiples sum: 233333334166666668 time: 818
Sum of series:      233333334166666668 time: 0

Nota para aqueles que votaram negativamente como off-topic

O objetivo de apresentar uma solução para esta pergunta é mostrar que, embora a solução de força bruta do Sum of FizzBuzz seja semelhante ao FizzBuzz Classic, melhores soluções para o problema Sum estão disponíveis, tornando-o um problema fundamentalmente diferente. A soma do FizzBuzz é extremamente complicada se você não se lembrar da fórmula apropriada para a soma de uma série ou se não perceber que ela se aplica ao passar por 3 ou 5.

Se você deriva a fórmula da soma de uma série dividindo-a ao meio, revertendo uma metade e combinando-as, obtém (n + 1) (n / 2) que pode levá-lo a um caminho realmente confuso no que diz respeito à divisão inteira e aos restos truncados. A versão (n (a1 + an)) / 2 desta fórmula é absolutamente crítica para uma resposta simples para todos os valores de n.

GlenPeterson
fonte
3
Isso pode ser calculado diretamente (Ruby): t = { |i| (i * (i+1)) / 2 }; fizzbuzz = { |n| 3 * t((n-1)/3) + 5 * t((n-1)/5) }
kevin cline
1
@ GlenH7 Sim, eu apaguei o meu comentário porque era uma brincadeira. Glen merece adereços para sua análise, mesmo se ele não responder à pergunta AT ALL: D (Além disso, eu totalmente codificado e tentou meus próprios momentos solução atrás)
Andres F.
2
Você está procurando a soma de uma série, uma vez que essa série é de módulo = 0, a fórmula n / 2 * (m + nm) pode ser usada. Onde m = o número do módulo en = número de elementos da série (também conhecido como piso (x / m)). Depois disso, é fácil S (3) + S (5) - S (3 * 5) [para que alguns números não seja contado duas vezes].
jmoreno 15/11/2012
3
Uma razão para você estar tendo um problema é que você está contando alguns números duas vezes (aqueles divisíveis por 15). Para um programa de exemplo ver ideone.com/clone/oNWrhJ
jmoreno
8

Eu senti que deveria ter mostrado a ele uma maneira de resolver o problema para que ele pudesse pelo menos aprender com a experiência. Mas, novamente, ele não perguntou. Qual é o caminho certo para lidar com essa situação?

Eu não me importo com o nível da entrevista, nem mesmo se é uma pergunta de nível "FizzBuzz" ou uma pergunta avançada. Se você pedir a um candidato para resolver uma pergunta, e ele não puder, mas nem se importa em pedir a resposta certa , eles não valem o seu tempo. Como no mundo você pode ser tão intelectualmente preguiçoso?!?

E mesmo se você fede totalmente como programador e está apenas tentando convencê-lo a conseguir um emprego, por que você não seria tão pragmático a ponto de obter a resposta certa agora, para conhecê-la na próxima entrevista?

Portanto, não, você não deve "dar" a resposta, mas deve esperar que o candidato insista em ouvir a resposta certa depois que falharem. Se não, é uma enorme bandeira vermelha no meu livro.

Se alguém estragou o FizzBuzz em uma entrevista Dev de nível júnior, porque não conseguia se lembrar do operador do módulo e simplesmente não conseguia seguir em frente sem ele, mas eles se apaixonaram por refazê-lo depois de explicar a resposta certa, ou pelo menos conversando com o código certo com você, é quase tão bom quanto respondê-lo corretamente.

Graham
fonte
1
Por quê? Você pode apenas pesquisar no Google a resposta mais tarde. O FizzBuzz é bastante popular. Eu ficaria sinceramente preocupado se alguém não conhecesse a divisão de módulos.
Brian #
Eu teria dado crédito a ele por tentar inventar alguma coisa em vez do operador de módulo, mas ele nem chegou a esse ponto. Eu acho que você tem razão em se concentrar no fracasso dele em pedir a resposta. Sua observação está alinhada com alguns dos outros desafios que surgiram durante a entrevista.
Fico realmente opinativo sobre o FizzBuzz ... mas esta é a resposta certa. Se o candidato não pedir a resposta, não a dê.
James P. Wright
@ JamesP.Wright - Eu concordo até certo ponto e, ao entrar na entrevista, fiquei um pouco envergonhado de usar isso como a principal questão de codificação. Foi suposto ser ridiculamente fácil, e eu até prefaciou-lo com um aviso para não over-ler a pergunta. Eu tinha um acompanhamento que também deveria ser fácil e, em seguida, um terceiro que lhe permitiria demonstrar habilidades de desenvolvimento / design de nível superior. Nós nunca chegou à terceira questão ....
1
@ 0A0D, a "matemática" envolvida no FizzBuzz está simplesmente verificando se uma determinada variável é divisível por 3 e / ou por 5. Esse nível de matemática está presente em praticamente todos os aplicativos que você escreve. Até "desenvolvedores de negócios" como eu, que apenas implementamos o mesmo tipo de projetos repetidamente, usam esse nível de matemática. GlenH7, nem tenho certeza se o uso da recursão no FizzBuzz me impressionaria ou me assustaria ... Certamente parece um exagero perigoso.
Graham
4

Eu digitei fizzbuzz enquanto estava no telefone com o entrevistador durante uma pré-tela. Isso é algo que, mesmo que todo mundo nunca tenha ouvido falar, você deve ser capaz de se reunir depois de um semestre de trabalho, mas definitivamente depois de adquirir o status "sênior".

Realmente não há recuperação de não ser capaz de fazer isso. É um daqueles incômodos necessários que você precisa evitar no caminho.

Eu diria que faz sentido exibir como uma pré-tela para que você não perca tempo com todo mundo trazendo-os ao local para uma entrevista.

Michael Brown
fonte
Para nossa pré-tela, solicitamos algum código de amostra, que foi fornecido. Esse código tinha alguns recursos intermediários a avançados da linguagem C #, então eu realmente esperava que ele analisasse as questões lógicas em apenas um minuto ou dois.
7
Quando o código de amostra fornecido não corresponde ao conhecimento demonstrado em uma entrevista, meu cérebro imediatamente suspeita do código de amostra.
Graham
@Graham: contratá-lo como um temporário por 6 meses ..
Brian
@ 0A0D Infelizmente, nunca trabalhei em um local que permitisse esse tipo de flexibilidade. Se a posição anunciada fosse um show em período integral, isso é tudo que poderíamos oferecer à pessoa.
Graham
3
Não há cerca nesse cenário. Se o seu "código de amostra" demonstrar um forte conhecimento e ele não conseguir codificar o efervescente, retire a amostra e pergunte a ele detalhes. Se ele não puder fazer o backup, é hora da minha frase favorita "ainda temos alguns candidatos para revisar, entraremos em contato com você".
Michael Brown
4

Eu até o treinei a pensar em usar um loop e que 3 e 5 realmente valiam a pena considerar como casos especiais.

Seria interessante saber qual é a resposta "correta" para sua pergunta no FizzBuzz. De onde estou, uma boa (em C) escrita na letra da sua pergunta é:

int f(void) {
    // sum the multiples of 3 and of 5 and subtract multiples of 15 so we don't count them twice
    return ((1000/3)/2)*(999+3) + ((1000/5)/2)*(995+5) - ((1000/15)/2)*(990+15);
}

Um melhor pode ser:

Por que diabos você escreveria um programa para fazer isso quando puder calculá-lo diretamente?

O ponto é que há mais de uma maneira de esfolar um gato, e o fato de o candidato em questão não começar imediatamente a escrever forloops e modoperadores não significa que ele é estúpido. Se você quiser saber o que o candidato sabe, discuta o problema - descubra o que ele está pensando. Se ele está preso ou confuso, descubra onde e por quê. Ele pode levá-lo a uma abordagem que você nunca considerou.

Minha pergunta é se eu deveria ter dado a ele a resposta para as perguntas lógicas.

Como entrevistador, não é seu lugar ensinar uma lição ao candidato . Se eles realmente não sabem escrever código, não há absolutamente nenhuma necessidade de constrangê-los, insistindo no quanto eles não sabem. Se eles estão interessados ​​o suficiente para perguntar, então, sinta-se à vontade para compartilhar. Caso contrário, termine a entrevista, agradeça pelo tempo dispensado e passe para o próximo candidato.

Caleb
fonte
+1 para a resposta sólida em seu último parágrafo. E você levanta um bom ponto em que eu deveria ter dito "uma resposta" em vez de "a" resposta. Existem várias maneiras de resolver essa em particular. Quanto a discuss the problemesse elemento, surgiram outras questões durante a entrevista. Lamentavelmente, o candidato foi ... menos do que próximo em responder. Não adicionei esse aspecto à pergunta original, pois estava realmente tentando manter as diretrizes da P.SE para "uma boa subjetividade".
1
"não é seu lugar ensinar uma lição ao candidato" - eu discordo. Um bom programador está sempre aprendendo. Se eles responderem à sua lição, agradecendo por aprender coisas novas, é um sinal de que são um bom programador. Se eles ignoram sua lição, provavelmente são um programador de merda.
Nbv4 17/11/2012
Se eu fosse seu entrevistador e você me desse esse tipo de resposta, eu o encaminharia para um distrito escolar que precisa de professores de álgebra. O FizzBuzz consiste em demonstrar um conhecimento básico de programação para que o entrevistador possa passar para perguntas que o diferenciarão de outros programadores basicamente decentes. Suas respostas são inteligentes, mas elas não estabelecem que você entenda looping, aritmética modular etc., deixando a entrevista avançar sob o pressuposto de que as pessoas que conhecem álgebra também sabem programar (errado) ou simplesmente apertar sua mão e seguir em frente (mais provável).
user1172763
@ user1172763 Esse é o ponto - ao contrário do FizzBuzz, a pergunta da entrevista do OP pode ser respondida com um único cálculo. Portanto, é uma má escolha se o objetivo é ver se o candidato pode escrever um loop. Você não pode esperar que um candidato escolha uma solução mais lenta e muito mais detalhada, supondo que você esteja fazendo a pergunta por um motivo específico (e não declarado). De fato, o entrevistador pode facilmente ser uma pergunta "enganosa" para ver se o candidato percebe que o loop é completamente desnecessário. Ler sua mente não é responsabilidade do candidato.
Caleb
2

Seu "problema" é que você é um ser humano empático, por isso é difícil assistir alguém se debater com um problema que você conhece a resposta (isso também é um problema se você executar estudos de usabilidade). Do ponto de vista dos deveres como entrevistador, você não é de nenhuma maneira obrigado a ensinar o entrevistado como programar ou resolver problemas, ou a solução para um problema que você pergunta.

Quando você treina um entrevistado, não é para que ele possa obter a resposta certa. É para que você possa ver se eles realmente não conseguem resolver o problema ou se acabaram de ficar com um ou dois erros ou mal-entendidos.

Portanto, se você quiser dar uma solução ao entrevistado após o fato, estará fazendo isso puramente por si mesmo. Em geral, prefiro usar esse tempo para permitir que o entrevistado tente outro problema. Mas um programador "sênior" que não pode responder ao FizzBuzz provavelmente está fora da lista. Se você decidir dar soluções, certifique-se de não se iludir pensando que a entrevista foi melhor do que aconteceu (se você estiver pensando "ele não conseguiu resolver o problema, mas quando expliquei, ele entendeu bem", você está em um caminho perigoso).

E sim, eu fui um entrevistado que estava enlouquecido e nem consegui fazer a primeira tentativa de resolver um problema de entrevista. Isso significava simplesmente que eu precisava aprender muito mais para conseguir um emprego nesse campo.

Tom Panning
fonte
2

Obter a resposta certa não é a parte importante deste teste. O que você está medindo é a abordagem de alguém para a solução de problemas, como eles se envolvem com a pergunta, qualquer coisa criativa ou interessante que surgem ao longo do caminho; esse tipo de coisa. Mesmo que recebam a resposta errada, eles ainda podem ser viáveis ​​por esses critérios.

OK, não sabendo que o operador de mod é indesculpável, e pelas métricas que dei a esse candidato ainda parecem uma anulação, mas não acredito que dar a resposta certa a ele seja de alguma forma benefício.

Isso se resume à sua opinião pessoal daqui. Deseja dar feedback à entrevista com o objetivo de ajudar o candidato a se sair melhor em futuras entrevistas (e para que futuros entrevistadores não precisem sofrer o que você acabou de passar)? Nesse caso, divida seus comentários nos termos que acabei de descrever acima: diga a eles que não é apenas a resposta certa, mas como eles trabalham para chegar à resposta é um fator crítico.

Maximus Minimus
fonte
+1 no comentário de how they work to arrive at the answer is a critical factor. Embora eu esperasse que um operador de módulo fosse usado, isso é apenas porque é assim que eu o teria resolvido. Eu estava muito aberto a ver qualquer outra abordagem que resolvesse o problema sem criar erros gritantes de condição de limite (veja meus vários comentários sobre a abordagem com recursão ....).
2

Eu senti que deveria ter mostrado a ele uma maneira de resolver o problema para que ele pudesse pelo menos aprender com a experiência. Mas, novamente, ele não perguntou. Qual é o caminho certo para lidar com essa situação?

Do meu ponto de vista, não há situação para lidar. Supondo que você tenha rejeitado sua inscrição, a (aparente) falta de interesse do candidato não é algo que você precise se preocupar.

De fato, mesmo que ele tenha perguntado, você não deve uma explicação a ele. E se você conversou com seu pessoal de RH sobre isso, eles podem aconselhá-lo que discussões adicionais com o candidato são desaconselháveis ​​por razões legais.


Também é importante notar que o problema do FizzBuzz tem diferentes "melhores" respostas, dependendo de como você o pergunta. Se você pedir a solução "mais simples" e a "mais eficiente", as melhores respostas serão radicalmente diferentes. E isso pode colorir seu julgamento de maneira injusta ... se você não estiver claro da maneira que fez a pergunta. (Por outro lado, um candidato bom / experiente teria a capacidade de esclarecer isso antes de começar a codificar ...)

Stephen C
fonte
2

Para responder sua pergunta, não, eu não daria a resposta. Se a pessoa quiser ser um engenheiro de software melhor, encontrará a resposta. Se você lhes der uma resposta, estará roubando essa oportunidade.

A questão mais relevante é quando você pode se chamar desenvolvedor sênior? Isso varia entre organizações e países. Por exemplo, uma empresa com a qual trabalhei considerou Engenheiros de Software com 5 anos de experiência como idosos. Não houve ênfase na qualidade da experiência, apenas no comprimento.

Até chegarmos a um padrão que categorize todos os engenheiros de software, independentemente do idioma, resta o indivíduo decidir o nível de suas habilidades. E continuaremos ouvindo os "Engenheiros seniores" reprovados no teste de habilidades mais rudimentar.

Algumas semanas atrás, a pergunta foi feita "Quando você deve se chamar desenvolvedor sênior" . Também escrevi uma postagem no blog sobre o assunto.

Chuck Conway
fonte
Você gentilmente revisaria o link do seu blog?
André
@ André link atualizado.
amigos estão dizendo sobre chuck