Por que as entrevistas de engenharia da SW são desproporcionalmente difíceis (vs. entrevistas de pesquisa)? [fechadas]

40

Primeiro, algumas informações sobre mim. Eu tenho um doutorado em CS e tive trabalhos tanto como engenheiro de software quanto como cientista de pesquisa e desenvolvimento, ambos em empresas muito grandes que você conhece muito bem. Recentemente, mudei de emprego e entrevistei os dois tipos de cargo (como fiz no passado).

Minha observação: as entrevistas de emprego de engenheiro de SW são muito, muito mais difíceis do que as entrevistas de pesquisador de CS, mas o trabalho de pesquisador é mais bem remunerado, mais competitivo, mais gratificante, mais interessante e tem uma vantagem maior.

Aqui está um ciclo de entrevista típico para o pesquisador:

  • Entrevista por telefone para ver se minha pesquisa está alinhada com a pesquisa do laboratório
  • Pessoalmente: faça uma apresentação sobre minha pesquisa recente por uma hora (o que representa um trabalho de talvez 9 meses) e responda a perguntas da platéia
  • Entrevistas individuais com cerca de 5 pesquisadores, nas quais eles me fazem perguntas razoáveis ​​sobre meu trabalho / publicações / patentes, incluindo: perguntas técnicas, onde meu trabalho se encaixa em trabalhos relacionados e como posso estender meu trabalho para novas áreas

Aqui está um loop de entrevista típico para o engenheiro de software:

  • Entrevista por telefone, onde são feitas perguntas sobre algoritmos e talvez fazer alguma codificação. Bastante padrão.
  • Entrevistas presenciais no quadro branco, onde eles analisam o F *** em minúcias esotéricas em C ++ (por exemplo, como funciona uma chamada de função virtual polimórfica), algoritmos (fazem o algoritmo de caminho mais curto de todos os pares funcionar para vértices 1B) , design do sistema (projetar um balanceador de carga de banco de dados) etc. Isso ocorre por seis ou sete entrevistas. Ridículo.

Por que alguém estaria disposto a suportar isso? Qual o sentido de perguntar sobre trivialidades em C ++ ou escrever código para provar a si mesmo? Por que não tornar a entrevista SE mais parecida com a entrevista do pesquisador, onde você fala sobre o que fez?

Como são as entrevistas técnicas de trabalho para outros campos, como física, química, engenharia civil, engenharia mecânica?

stackoverflowuser2010
fonte
12
Vou adivinhar e dizer que você entrevistou no Google?
Pemdas
2
@ Ethel: se você procurar no glassdoor.com, onde as pessoas publicam seus salários anonimamente, você pode ver que uma posição de pesquisador paga cerca de US $ 10 mil a US $ 20 mil / ano a mais do que um engenheiro de SW comparável (mesmo local, mesmo campo). Curiosamente, eu sei que meu salário é cerca de US $ 25 mil / ano a mais do que meus outros amigos que se formaram com um diploma de mestrado em ciências da computação da minha escola na mesma época. E não é apenas o salário; Vi que os doutores têm trajetórias de carreira mais altas do que aqueles sem. Não tenho evidências diretas, mas vi que os PhDs são mais facilmente contratados nos níveis de CTO / VP.
stackoverflowuser2010
3
É uma loucura, mas aparentemente não se estende às profissões de engenharia 'reais'. Conheço uma tonelada de engenheiros civis e eles ficam chocados com o que lhes contei sobre algumas de minhas entrevistas anteriores ... muitos disseram exatamente o que você fez: "por que você toleraria isso?"
red-dirt
3
@el fuser - Depende do empregador. As entrevistas de engenharia elétrica que tive me pediram para olhar o código do PLC, escrever o código do PLC e / ou fazer algo com diagramas elétricos. Por um lado, a primeira pergunta era: "O que é a lei de ohm?" Foi o equivalente ao teste do fizzbuzz ... se você fez 4 anos de engenharia elétrica e não conseguiu acertar, a entrevista acabou.
Scott Whitlock
1
Scott: "Se você fez apenas 4 anos de engenharia elétrica e não conseguiu acertar, a entrevista acabou." Receio ter sido reprovado em alguns deles porque ri ou fui insultado. Eu acho que, vindo do ambiente de pesquisa, você tem competência básica como garantida.
Omega Centauri

Respostas:

45

É relativamente fácil estabelecer se você é tecnicamente competente o suficiente para fazer a pesquisa - você tem publicações que os gerentes de contratação podem ler e essas publicações provavelmente sugerem outras pessoas com quem podem conversar para verificar você.

A engenharia de software, por outro lado, é uma disciplina tão cheia de desperdícios de espaço incompetentes que é preciso fazer muita diligência para garantir que o cara que você está contratando possa de fato escrever o código que planeja contratá-lo para escrever.

Wyatt Barnett
fonte
2
felizmente coisas como github e bitbucket estão facilitando a visualização do que essa pessoa fez. pode aliviar (ou reduzir bastante) a necessidade de fazer as perguntas de devida diligência.
Helloandre
3
exatamente no ponto. é muito difícil separar os bons dos programadores aspirantes. mesmo com o código a ser exibido, levaria muito tempo para lê-lo e compreendê-lo ao nível de poder julgar o autor. os documentos de pesquisa, OTOH, são escritos para os leitores, leva apenas algumas horas para realmente entender um, geralmente um ruim é reconhecível em alguns minutos.
Javier
3
O código a mostrar é um truque - como você sabe que o Joe Interviewee realmente escreveu esse código antes de fazê-lo realmente escrever o código?
Wyatt Barnett
Tenho um artigo publicado e um livro a caminho. Normalmente as telas técnicos se em curto-circuito, porque o meu conhecimento é bem documentada, eles querem ter certeza de que eu sou que Mike Brown
Michael Brown
1
Também existe um medo muito real por parte dos gerentes técnicos em contratar profissionais verdadeiramente inteligentes e experientes - aqueles que sabem algo melhor do que eles, portanto, podem argumentar a favor e contra uma solução em vez de apenas serem robôs de codificação. Por fim, contratar alguém que possa reverter uma lista vinculada em um minuto, em vez de contratar engenheiros verdadeiramente inteligentes, é a perda de todos aqueles que obtêm lucro financeiro com o produto. Como Bjarne Stroustrup disse: "Uma organização que trata seus programadores como idiotas em breve terá programadores dispostos e capazes de agir apenas como idiotas".
Leo Heinsaar
30

Sair em um membro aqui.

Como pesquisador com doutorado, você já provou para várias organizações reconhecidas seu valor e qualidades mínimas como pesquisador. Você defendeu com sucesso uma tese na frente de um conselho de seus colegas e convenceu pelo menos uma publicação revisada por pares a publicar seu trabalho.

O desenvolvimento de software, por outro lado, não possui padrões de qualificação. As pessoas costumam inflar sua base de conhecimento. Como resultado, as entrevistas de desenvolvimento de software precisam fazer todo o trabalho que a defesa de PhD e a revisão por pares fazem na academia. Eles fazem você provar que realmente sabe do que está falando.

Ryan Michela
fonte
17

Considere isso por um momento.

Se eu tentasse me candidatar a este trabalho de pesquisador em CS, não veria meu currículo / currículo. Eu não chegaria a uma entrevista em primeiro lugar. Recebia uma carta padronizada de "sem diploma avançado" dizendo que eu nem estava qualificado para examinar meu currículo.

Minhas perguntas são: "Por que é tão difícil conseguir um doutorado?" E "Por que eu preciso de um PhD para ser pesquisador de CS?" "Por que tantas barreiras e obstáculos?"

Por que alguém estaria disposto a suportar isso?

Qual é o sentido de fazer todo esse trabalho do curso e imprimir pesquisas em periódicos e conferências? Por que não posso simplesmente fazer a pesquisa e receber mais do que pago pela engenharia?

Por que contar com escolas de pós-graduação e publicações para estabelecer credenciais? Por que não tornar a entrevista de pesquisa mais parecida com as entrevistas de SE, onde tudo depende do que você pode se lembrar agora durante a entrevista?

S.Lott
fonte
Eu meio que entendo o que você está dizendo. O tipo certo de entrevista deve se encaixar no tipo certo de trabalho? Essa é uma interpretação correta?
stackoverflowuser2010
5
@ stackoverflowuser2010: Não. Estou simplesmente reclamando que o mundo acadêmico é muito, muito mais difícil de invadir do que o mundo da engenharia de software. Você conseguiu uma entrevista como SE. Eu não conseguia nem entrar na academia. Sua perspectiva é tão distorcida que você não vê as diferenças. A academia é muito, muito mais difícil.
S.Lott 19/02/11
6

Bem, eu tenho uma teoria. A pesquisa normalmente é paga por doações, portanto a oferta de dinheiro é alta. Eles têm um balde de dinheiro para gastar e só precisam encontrar alguém para gastá-lo. Independentemente de você realizar algo nessa posição ou não, a empresa / instituição não registra uma perda líquida porque, de qualquer maneira, era apenas uma despesa contabilizada. Há pouco risco em contratar a pessoa errada. O pior cenário é que eles jogam fora tudo o que você fez.

Por outro lado, o sucesso ou fracasso dos produtos existentes repousa sobre os ombros dos desenvolvedores do dia-a-dia. Especialmente se você estiver no desenvolvimento de produtos, é um centro de lucro para a empresa. Desenvolvedores bons ou ruins têm um enorme impacto que está muito além do custo de seu salário. Um desenvolvedor ruim realmente causa danos. Eles podem atrasar uma equipe, lançar um produto etc. As consequências de contratar um engenheiro de SW ruim são muito maiores.

Scott Whitlock
fonte
4
+1 De fato, o dinheiro gasto em pesquisa é justificado por artigos publicados; portanto, se um candidato tiver uma boa lista dos do passado, é provável que ele possa produzir um pouco mais, o que provavelmente satisfará quem quer que seja. verificando o que a bolsa de pesquisa foi gasta.
Péter Török
@ Péter Török: Sim !!! Os fundos que concedem doações requerem o preenchimento de um relatório, e a principal coisa que eles observam é o número de artigos publicados.
Sharptooth
5

Nossa empresa também "faz muitas perguntas difíceis" e eu explicarei o porquê. Nós nos importamos se você realmente sabe como uma chamada de função virtual é feita, mas não porque é tão criticamente necessária para o trabalho que você fará.

Em vez disso, nos importamos porque precisamos saber com que rapidez você pode aprender coisas fundamentais. Você reivindica X anos de experiência? Ok, faremos perguntas difíceis para descobrir se você tem um conhecimento sólido.

Você não sabe como é feita uma chamada de função virtual, mas sabe tudo sobre criação de perfil e otimização? Ótimo, provavelmente o contratamos - você adquiriu conhecimento sólido em um campo e, com certeza, adquiriu conhecimento sólido em outro.

Você afirma X anos de experiência "desenvolvendo, depurando e corrigindo código C ++" e não pode explicar em palavras simples como um ponteiro aponta para um objeto? Desculpe, não podemos contratar você - se você não pode fazer isso, como explicará problemas mais difíceis quando precisarmos tomar decisões técnicas complexas?

dente afiado
fonte
Isso é justo, mas você lança uma rede bastante ampla ao fazer o componente técnico ou se concentra em uma determinada área?
rjzii
@Rob Z: Tentamos fazer perguntas muito simples sobre C ++ - principalmente sobre ponteiros e recursão, fornecemos trechos com cerca de cinco linhas de código bem formatado e pedimos detalhes sobre o que e como eles fazem. Certamente, nunca perguntamos sobre herança múltipla virtual e ordem de inicialização de classes base no caso de herança virtual.
Sharptooth
Por que as perguntas sobre funções virtuais são tão populares? Parece, por vezes, isso é tudo one'd tem que estudar ...
Jé Queue
@ Xepoch: Eu acho que porque eles são muito simples e o conhecimento de seu trabalho interno indica bem se você se importa com o que acontece dentro ou simplesmente cola linhas de código.
Sharptooth
Eu acho que tive sorte na minha carreira. Raramente eu já vi um codificador de cortar e colar. Conheço codificadores má prática (eu incluído), mas pelo menos era de seu próprio projeto :)
Jé Queue
5

Resposta curta: existem muitas pessoas no mercado que afirmam conhecer programação, mas não podem programar.

Observação: Estou surpreso que ninguém postou um link para o ensaio do FizzBuzz .

Nikita Barsukov
fonte
É verdade, mas você pode dizer rapidamente se alguém pode ou não pode programar com base em um ou dois problemas do quadro. Os problemas do quadro branco não são exatamente o mesmo que fazer as várias perguntas do livro que surgem durante algumas entrevistas.
rjzii
3

Vou seguir um caminho diferente e dizer que o problema pode não ser tanto que as entrevistas de engenharia de software sejam inerentemente mais difíceis, mas que setores diferentes estejam procurando coisas diferentes que sejam mostradas em seu estilo de entrevista.

Eu entrevistei em uma ampla gama de setores (por exemplo, empresa iniciante, pequena empresa, grande empresa, departamento interno de TI, empresa de software, organização de pesquisa) e todos eles têm uma maneira diferente de entrevistar que, geralmente, tende a siga o seguinte padrão:

  • As empresas iniciantes tendem a se preocupar em saber que você pode começar a escrever código agora e lidar com um ambiente de ritmo acelerado. Como tal, eles tendem a se preocupar com o quanto você sabe de antemão, pois aparentemente eles não querem que você gaste muito tempo procurando o que eles consideram ser o conhecimento "central". Admitir que você não sabe que algo pode não ser uma coisa tão boa nesse ambiente, se é algo que eles esperam que você saiba.
  • As pequenas empresas tendem a procurar as mesmas coisas que as start-ups em relação ao quanto você sabe, mas não estão tão preocupadas com o quão bem você lida com ambientes de ritmo acelerado (depende do trabalho) e mais com que tipo de habilidades sociais você trazer e quão bem você vai se encaixar na sagacidade da empresa.
  • As grandes empresas e os departamentos internos de TI parecem estar mais preocupados em garantir que você tenha um determinado padrão de conhecimento técnico, mas não estão tão preocupados se não souberem tudo o que está pensando, pois antecipam que haverá algum tempo envolvido em treiná-lo sobre o que a empresa espera. Portanto, este é um ambiente em que admitir que você não sabe algo, mas está disposto a aprender e estudar pode ser visto como um benefício.
  • No ambiente de pesquisa (isto é, suporte ao desenvolvimento de software para cientistas na minha experiência), eles tendem a se preocupar se você pode escrever software, mas mais ainda se você estiver disposto a fazer o que é necessário para garantir que você possa aprender o que eles estão fazendo. eles não precisam segurar sua mão enquanto você tenta resolver um problema. Como também é um ambiente de pesquisa, eles também parecem interessados ​​em saber como você está interessado em aprender coisas novas.

Agora, deixei de mencionar as empresas de software (ou seja, Google, Microsoft), pois elas tendem a fazer suas próprias coisas e, dependendo da maturidade da empresa e de qual grupo você está entrevistando, elas estão procurando coisas diferentes.

No final do dia, porém, e como na maioria das coisas na vida, tudo depende. Pessoalmente, descobri que algumas empresas se concentram muito no "conhecimento do livro", que pode custar a capacidade de realmente resolver os problemas de nível superior, enquanto outras empresas parecem estar muito preocupadas com a forma como você lida com os problemas de nível superior. (ou seja, você pode projetar um esquema para x ) e operar com a premissa de que eles estão dispostos a investir de três a seis meses para que você se mantenha totalmente atualizado antes que seja totalmente produtivo.

rjzii
fonte
3

Sou desenvolvedor de software (c / c ++) com mais de 20 anos em campo. O tipo de entrevista que costumamos ver agora (quebra-cabeças, implementação de estruturas de dados, algoritmos de busca etc. no quadro branco) não costumava ocorrer muito, exceto para os recém-formados. Se uma pessoa trabalhava para uma empresa respeitável por um período de tempo razoável, isso era considerado prova de sua capacidade de escrever código. Agora tornou-se muito escolar e não sei porquê. Realmente, as coisas típicas que eles pedem para codificar PODEM ser memorizadas, de modo que fazê-lo no quadro branco realmente não prova nada. Em um projeto de trabalho, você usaria a Internet para pesquisar alguma coisa e não estaria escrevendo btrees ou listas vinculadas do zero.

Eu acho que é outra moda de gerenciamento - assim como o scrum - com este provavelmente sendo iniciado pelo google, amazon e microsoft. Todos os outros copiaram exatamente como fizeram com o posto de Jack Welch e puxão ... lembra da GE?

Se você é um gerente de contratação que está lendo meus comentários, o que você DEVE estar perguntando aos candidatos é como eles resolveriam certos problemas. Em vez de pedir que codifiquem uma tabela de hash, dê a eles um problema envolvendo uma tabela de hash e pergunte como eles a resolveriam.

Também concordo com o desenvolvedor acima deste post, que disse: "dê a eles um problema do mundo real que a empresa teve que resolver"!

"mas eu tenderia a bombardear as perguntas de OOP / Herança. Por quê? Como uma vez que o suporte a modelos foi adicionado, usei C ++ quase exclusivamente para Programação Genérica".

Eu também concordo com o acima exposto. Quando você trabalha para uma empresa, escreve o código DA SUA maneira. Às vezes, ainda luto para lembrar da chamada C ++ por sintaxe de referência, porque o arquiteto sênior da empresa em que trabalhei 15 anos preferiu usar ponteiros, não referências. Ele era um velho programador C, você vê. Então é isso que todos nós usamos.

hóspede
fonte
2

Novamente, as entrevistas técnicas são arbitrárias e caprichosas.

Há uma grande diferença entre grelhar uma pessoa nas minúcias e ver se ela conhece o seu CS. Como eu disse acima, tenho mais de uma década de experiência com C ++, mas eu tenderia a bombardear as questões de OOP / Herança. Por quê? Como o suporte a modelos foi adicionado, usei C ++ quase exclusivamente para programação genérica. .

Eu entrevistei várias empresas BigHouseHoldNameTech na área de Bay e Seattle, e uma das melhores entrevistas envolveu perguntas reais com as quais eles tiveram que lidar no trabalho, envolvendo estruturas e algoritmos de dados [ou seja: você tem 300 bilhões de pontos de dados consistindo em XYZ. Como você armazena e pesquisa com eficiência?]

Isso mostra como um candidato pode intervir e ajudar a resolver os problemas reais que você está enfrentando. O pior foi também com outra empresa da BigHouseHoldNameTech, mas eles fizeram horas de perguntas incrivelmente misteriosas que você realmente deveria procurar em um manual [ ou seja, descreve as principais diferenças entre o PCB no Windows e o Linux - e isso não era ' t para uma posição no nível do kernel ]

Os fundos de hedge são bizarros com a intenção de torturar ... esperam 8 horas resolvendo problemas do tipo mochila em um quadro branco.

sujeira vermelha
fonte