Entrevista técnica e capacidade do programador [fechado]

14

O que direi pode ser um pouco controverso por natureza, mas estou muito desanimado hoje - e por isso vou perguntar isso.

Acabei de ter uma entrevista com uma grande empresa de tecnologia para uma posição de estágio, onde me pediram muitas perguntas típicas de entrevistas orientadas a algoritmos. Agora, considerando meu histórico, considero-me forte em algoritmos (também obtive boas notas em algoritmos de nível de pós-graduação - material envolvendo a completude do NP e além (algoritmos de aproximação e aleatórios), mas, infelizmente, fui reprovado na entrevista. pense em um método muito eficiente de resolver um problema de cordas em aproximadamente ~ 10 minutos.Quando a entrevista terminou, tomei um copo de água, comi uma banana e relaxei por um tempo e tentei o problema novamente.Vola! resposta: eu poderia chegar em menos de 5 minutos, e o pior de tudo - eu estava na pista e o entrevistador deu dicas, mas muita pressão me cozinhou. Toda a minha experiência me fez pensar em entrevistas técnicas. Eu tinha algumas perguntas e queria colocá-las neste fórum -

  1. É realmente possível julgar a capacidade técnica de alguém em meia hora? Honestamente? Ou é apenas um lançamento de dados?

  2. As perguntas técnicas da entrevista medem a capacidade de resolução de problemas? Este ponto é muito discutível? Como um estudante de doutorado, eu sei que a resolução de problemas matemáticos envolve resolver algo que você nunca ouviu falar antes. Por outro lado, questões como - a fusão de duas listas vinculadas em ordem classificada ou a impressão de todos os elementos de uma árvore binária no k-ésimo nível tornam-se "meros exercícios" quando alguém vê a solução ou resolveu o problema de antemão?

  3. As pessoas que se destacam nessa entrevista continuam a se tornar grandes programadores? Eles desenvolvem mecanismos de jogos elegantes, bibliotecas de gráficos, escrevem estruturas de junção rápida? Existe alguma evidência para apontar para uma relação positiva entre se sair bem em entrevistas técnicas e a capacidade real de programação? Ou essas entrevistas são mais voltadas para encontrar o tipo de pessoa "fazendo as coisas" (Spolsky)?

Posso apostar que muitos acadêmicos que publicam idéias inovadoras - ICML, VLDB, Mobicom - serão reprovados nessas entrevistas. Mas posso garantir que elas são algumas das pessoas mais inteligentes que você encontrará neste planeta.

Eu estou principalmente na academia (estudante de graduação) - então eu aprecio muito a percepção de alguém do outro lado da cerca. Alguém que realmente conduz essas entrevistas?

[Ok pessoal. Obrigado por todas as respostas agradáveis ​​e atenciosas. Como não quero fazer outra pergunta, pedirei que você responda a essa pergunta para mim.

Suponha que o candidato X tenha um bom portfólio público de obras em que ele contribuiu para algum projeto conhecido de código aberto onde - você pode realmente verificar seus patches, verificar os bugs que ele fechou e dar uma olhada nos projetos que ele criou. Nesse caso, a pergunta é: quanto de peso você está disposto a atribuir ao seu trabalho publicamente disponível / verificável versus o quão bem ele se sai ao responder a uma pergunta de entrevista em árvore binária muito artificial em menos de 15 minutos?]

user396089
fonte
11
Quando entrevisto pessoas para trabalhos, não procuro bons programadores. Estou à procura de bons engenheiros. Um programador analisa um problema e codifica uma solução. Um bom ENGENHEIRO analisa um problema e pergunta "este é o verdadeiro problema que preciso resolver?" e, se não for, descobre qual é o problema certo, projeta uma solução que equilibra todos os fatores em jogo (cronograma, dinheiro, habilidade) e depois entrega a um programador para codificá-lo.
PlayDeezGames
2
Hummm, faz sentido. Qualquer pessoa pode adquirir habilidades de codificação bruta em C ++ / Java / python em 6 a 12 meses. Mas, na verdade, projetar coisas que exijam uma compreensão muito cuidadosa do desempenho, problemas de encadeamento, memória e compensações são a chave. Concordo. Desculpe! mas não posso votar em você, não tenho representantes suficientes.
user396089

Respostas:

11

Tenha em mente que...

  1. O principal objetivo de um processo de entrevista não é chegar à verdade absoluta sobre a capacidade pessoal de cada entrevistado, mas selecionar poucos candidatos dentre um grupo de muitos.
  2. É MUITO, MUITO mais caro contratar um desenvolvedor ruim do que repassar um bom desenvolvedor.

Muitas vezes, durante a entrevista, atalhos imperfeitos (como testes técnicos) são utilizados porque, como você mencionou, não há um processo perfeito para julgar uma pessoa em 30 minutos. Mas como a maioria não tem o luxo de trabalhar com você lado a lado, você deve simplesmente aceitar que é isso que é, um jogo de probabilidades que todos jogam.

DXM
fonte
"É MUITO, MUITO mais caro contratar um desenvolvedor ruim do que repassar um bom" - sim, eu entendo o argumento aqui que parece ser de um ponto de vista puramente utilitário, como se a probabilidade de contratar um desenvolvedor Se um desenvolvedor ruim estiver próximo de zero, o custo negativo associado a ele pode arrastar o valor total esperado do utilitário de positivo para negativo.
user396089
5
@ user396089, no meio acadêmico, as pessoas prestam um serviço de boca em boca para fornecer um serviço para você: treinamento, orientação, crescimento pessoal etc. etc. Pelo menos nominalmente, isso faz parte da missão deles. No setor privado, o relacionamento é 97% utilitário. As empresas estão interessadas apenas em oferecer a você uma oportunidade, na medida em que haja um benefício para elas.
Charles E. Grant
Para acrescentar ao que Charles disse, quando você entra pela porta, você é, exatamente como outros 50 candidatos, um completo estranho para a empresa e para o gerente de contratação. Portanto, você pode ser a melhor pessoa de todos os tempos, em nível profissional e pessoal, mas, dadas as circunstâncias, os objetivos da empresa nesse momento são realmente maximizar seu valor futuro, ao mesmo tempo em que minimiza os custos de pesquisa enquanto procura essa maximização.
DXM
Você sabe que é engraçado pensar sobre o simples problema de cordas que não consegui resolver hoje durante a entrevista, mas resolvi depois; mas, mesmo depois de tentar por quase três semanas, ainda estou para resolver um problema relacionado a um dos meus projetos de hobby. Os detalhes podem ser encontrados aqui - stackoverflow.com/questions/9056108/…
user396089
1
@ Antonio2011a: "quão válido" é um termo engraçado e não é preto e branco. Pessoas diferentes usam táticas diferentes para julgar a qualidade dos funcionários em potencial. Cada uma dessas táticas é algum tipo de atalho, porque o único teste verdadeiro é deixar a pessoa trabalhar com você e permitir um tempo de aceleração. Então, qual a validade dessa pergunta? ou quão válido perguntar sobre O grande, ou quão válido perguntar sobre o que ele trabalhou. Estas são apenas áreas cinzentas e nenhuma delas é perfeita.
DXM
9

É realmente possível julgar a capacidade técnica de alguém em meia hora?

Não exatamente. É possível eliminar as pessoas que não conseguem programar e as que não conseguem explicar as coisas em seu currículo. Além disso, geralmente estou apenas tentando avaliar a inteligência geral e o interesse no campo. É difícil comentar mais a sua situação sem saber o problema que você foi solicitado a resolver.

As perguntas técnicas da entrevista medem a capacidade de resolução de problemas?

Esse não é o objetivo das minhas perguntas técnicas. Em vez disso, estou tentando descobrir se o candidato tem uma compreensão dos fundamentos da ciência da computação. Para avaliar a capacidade de resolver problemas, peço a um candidato que conte sobre um problema interessante em que trabalhou.

As pessoas que se destacam nessa entrevista continuam a se tornar grandes programadores? Ou essas entrevistas são mais voltadas para encontrar o tipo de pessoa "fazendo as coisas" (Spolsky)?

É sobre isso. A grandeza é rara. Fico feliz em encontrar alguém competente.

Kevin Cline
fonte
O problema era uma variação do KMP (quando você faz uma passagem pela cadeia de caracteres, armazena o número de ocorrências de alguns caracteres que você tinha visto anteriormente). No final, dependendo do comprimento da string e da contagem que você possui - você pode responder à pergunta real. Tudo em uma passagem - tempo O (n) e usando espaço constante O (1)
user396089
2
"Estou feliz em encontrar alguém competente."
AProgrammer
2
A aprovação na entrevista deve-se a (pelo menos!) Tanta sorte quanto grandeza. Depois de atingir um certo nível de conhecimento, o acaso desempenha um papel muito (!) Maior do que quase todas as pessoas imaginam. Sugestão de leitura: The Drunkard's Walk, de Mlodinow .
21912 Konrad Rudolph
Sim, eu li esse livro e também o ainda mais interessante e sarcástico "Fooled by Randomness" de Nassim Nicholas Taleb. Escusado será dizer que fiquei em depressão por um tempo depois de ler os livros - se você entende a premissa básica dos dois livros e isso é - "sim, tudo isso é sorte! Sorte! E tudo sobre sorte!" O mundo é aleatório e temos que lidar com isso.
user396089
5
  1. Sim. Sim, honestamente. Isso não quer dizer que 30 minutos são tempo suficiente para obter uma imagem completa do que uma pessoa é capaz. O trabalho do entrevistador é fazer o melhor possível para ter uma ideia de quem é o entrevistado e o que ele pode fazer. Encontrar as pessoas que colocaram algo em seu currículo que realmente não conheciam é direto. Descobrir exatamente o que o entrevistado pode fazer, incluindo todas as suas habilidades e pontos fortes, não é.

  2. Sim. Eles permitem que você veja como o entrevistado pensa. Obter a resposta correta nem sempre é necessária. Ver alguém lidar com um problema com o qual enfrenta problemas é tão benéfico quanto ver alguém responder a um problema corretamente, sem muitos problemas. Sempre faço uma pergunta que acho que o entrevistado talvez não consiga responder.

  3. Não conheço nenhuma prova empírica que diga que as entrevistas técnicas encontrem os melhores candidatos, mas é a melhor coisa que tentei. Pessoas diferentes são boas em coisas diferentes e obter respostas técnicas corretas não é a única coisa que decide se alguém será contratado. Ser uma boa opção para a empresa também é muito importante.

Com base na sua pergunta, acho que a maior coisa que você precisa entender é que os dias que definiram claramente o feedback como uma nota terminaram. Obter a resposta certa é apenas parte do resultado. Escrever um bom código, comunicar suas idéias e ouvir os outros também é importante. No entanto, essas áreas são mais subjetivas e precisam ser tratadas como tal.

Assim como você resolveu o problema, dê um passo atrás e limpe sua cabeça. Muito entra em uma entrevista e o entrevistador sabe que não é um sistema perfeito. Eles estão tentando fazer o melhor que podem pela empresa, assim como você está tentando fazer o melhor por você.

unholysampler
fonte
2
Esse é um ótimo ponto @unholysampler - "Obter a resposta certa é apenas parte do resultado". Não importa se você entrega um portal de vendas on-line perfeito um dia após o Natal. Muito tarde. O tempo é tão importante quanto ter a resposta certa.
jasonk
+1 "Eles estão tentando fazer o melhor para a empresa, assim como você está tentando fazer o melhor por você."
Burhan Ali
5

Em meia hora, você pode julgar que a capacidade técnica de uma pessoa é pelo menos tão boa quanto x. Ou seja, a capacidade deles pode ser maior do que demonstraram, mas você pode ter certeza de que não é pior. Se x for maior que seus requisitos, você os contratará. Sim, é injusto se você demonstrar abaixo de sua capacidade real. Tudo o que posso dizer é melhorar na demonstração.

Se alguém apresentasse uma resposta praticamente memorizada, eu daria a eles um problema mais difícil. Na academia, a memorização é uma habilidade importante. Em um trabalho, é principalmente redundante quando você tem o Google ali.

Vendo como a maioria dos grandes programadores são empregados, é seguro assumir que eles passaram por uma entrevista de emprego em algum momento. Não, você não pode dizer se alguém será um ótimo programador a partir de uma entrevista de meia hora. Felizmente, a maioria das empresas não precisa de grandes programadores. Eles se dão muito bem com programadores sólidos e confiáveis ​​que não têm medo de realizar tarefas fora de sua zona de conforto.

A razão pela qual pensadores inovadores podem reprovar as entrevistas de emprego é que as oportunidades para resolver problemas chamativos e inovadores são muito raras, e você só será confiável para resolvê-los depois de provar que pode resolver problemas mundanos e difíceis que seus colegas não pode, por exemplo, por que o software falha quando fica acima de 16% da carga.

Karl Bielefeldt
fonte
2
+1 "... problemas mundanos, mas difíceis, que seus colegas não podem, como por que o software falha quando fica acima de 16% da carga."
21412 Jaydee
3

Muito poucas pessoas sabem se suas técnicas de entrevista realmente funcionam, porque nunca aprendem mais sobre aqueles que falharam. Mas quando nada desaprova sua hipótese, eles a tomam como confirmação de que são verdadeiras. Portanto, há um elemento definido de jogar os dados.

Se as teorias econômicas afirmando que os mercados são racionais e eficientes fossem verdadeiras, as empresas procurariam contratar pessoas que eram más em entrevistas, de maneiras que não as tornariam ruins em seu trabalho. Então, alguém que usava um terno inadequado, suava, parecia muito nervoso e tinha problemas para resolver problemas técnicos sob a pressão de uma entrevista - se houvesse evidências externas, eles poderiam resolver problemas técnicos e as pressões do trabalho não eram como aquelas. de uma entrevista (como geralmente não são) - representaria a melhor chance de uma empresa obter um candidato melhor do que poderia atrair e agiria de acordo. (Pense na bola do dinheiro para o mundo corporativo). Eventualmente, os vieses da entrevista desapareceriam.

Na prática, isso vai contra a natureza humana. Os entrevistadores gostam de extrovertidos confiantes, não importa qual seja a posição, e mesmo que a entrevista técnica forneça informações piores que o currículo e as referências (como talvez seja verdade no seu caso), eles levarão em consideração.

Quanto às suas perguntas:

  1. Um pouco. Os testes têm uma baixa relação sinal / ruído, mas podem ser ajustados para eliminar os completamente desqualificados às custas das entrevistas qualificadas, mas ruins na técnica.

  2. Veja # 1. Parte do barulho vem da variação de se as pessoas já viram o problema antes.

  3. Veja # 1. Provavelmente existe uma pequena correlação positiva entre esses testes e se tornar um ótimo programador.

Meu conselho - Estude algumas amostras de perguntas técnicas para obter uma familiaridade básica. Lembre-se de que é um pouco dos dados, então, durante a entrevista, tente ser confiante. Se você puder explicar o que está pensando sem se distrair do pensamento, faça-o. Se realmente estiver indo mal, admita que você fica nervoso nas entrevistas e diga que parece que algo com o qual você normalmente não teria problemas - possivelmente dando um exemplo de um problema semelhante, mas mais difícil, que você resolveu.

psr
fonte
1
"Entrevistadores gostam de extrovertidos confiantes" ... isso é um pouco desconcertante para mim, meu tipo de Myers Briggs é INTJ (supondo que MB seja um pouco representativo do tipo de personalidade real).
user396089
2
Muitos desenvolvedores de software são introvertidos como eu. Consequentemente, muitos entrevistadores também. Claro, a confiança ajuda. Mas respostas sensatas ajudam muito mais.
Kevin cline