Como fazer uma boa entrevista técnica?

  • Administrar bem o tempo
  • Adaptabilidade das perguntas (ajuste ao nível)
  • Iniciar com um objetivo
  • Continuar evoluindo

Administrar bem o tempo

É muito importante conseguir administrar bem o tempo de uma entrevista, tanto do candidato, quanto o seu. Geralmente, agendamos uma hora nessa etapa de contratação, e para isso é essencial otimizar a condução da conversa. Alguns entrevistados podem começar a divagar, assim como outros podem ficar quietos boa parte do tempo.

Podemos dividir uma entrevista técnica em três etapas:

  • Apresentação: onde você representando a empresa, fala sobre a empresa de forma resumida, mostra qual o desafio, fala sobre a vaga, o momento de mercado (motivo de estar contratando), conta o seu papel e se apresenta. E depois pede para a pessoa contar sobre ela, legal aqui pedir um resumo dos pontos altos da carreira, pedir para focar nas tecnologias usadas nas empresas, pedir para falar apenas sobre as 2 últimas (visto que você já terá visto o cv ou linkedin), etc.

  • Conversa: aqui deve ser uma troca, onde avaliamos o conhecimento, a capacidade de resolução de problemas e a linha de raciocínio. Através de pergunta direcionadas, que deixem margem para interpretação, mas da mesma forma dêem liberdade na resposta. Não devemos dar a resposta na pergunta, queremos saber quais problemas a pessoa já enfrentou antes e o que ela já estudou. E dai então, podemos reforçar a pergunta perguntando os porquês, criticando as escolhas, complicando os cenários propostos, colocando mais dificuldades técnicas, até entendermos em qual nível o candidato está. Um padrão que já observei aqui, é que alguns candidatos anotam os assuntos que não souberam responder para estudar depois, o que é super positivo e mostra bastante sobre essa soft skill.

É uma conversa. A condução depende das pessoas na sala, o entrevistador pode assumir uma postura agressiva, onde pode querer avaliar como a pessoa reage sobre pressão, fazendo uma pergunta em cima da outra, antes da pessoa terminar de respoder, assim como pode ser leve, e transformar num bate papo entre duas pessoas técnicas, como se estivessem num corredor de um evento com palestras técnicas.


  • Encerramento: abra espaço para perguntas, geralmente 5~10 minutos são mais do que suficientes, então administre o seu tempo, e use a primeira etapa para evitar dúvidas corriqueiras como: “Como é a equipe? quem é vc?”. Nesse momento avaliamos o interesse do candidato em fazer parte do time, e podemos entender pq ele sairia da empresa atual, as vezes até sem ter que fazer essa pergunta de fato. Aqui cabe, caso tenha gostado, perguntar quanto tempo a pessoa precisaria para começar a trabalhar na empresa nova, caso fosse aprovada, e ai não estamos estamos avaliando a quantidade de dias ou semanas, mas sim a preocupação em não deixar a empresa anterior na mão, o quanto ela é importante e responsável com o projeto atual, pois também não queremos que no futuro ela saia sem nos dar satisfação e sem termos chances de tentar retê-la. Dessa forma conseguimos intercalar de forma natural avaliações de algumas soft skills durante uma entrevista técnica das hard skills.

Adaptabilidade das perguntas (ajuste ao nível)

Nesse ponto mesmo que a pessoa não saiba responder, esperamos que ela consiga questionar e peça por maiores explicações. Queremos entender o racicionio e o potencial, e não apenas a hard skill pura.

Da mesma forma que não adianta continuar insistindo numa linha de entrevista avançada, se as respostas forem negativas ou vagas, dai em diante ajustamos ao nível demonstrado e tentamos explorar os pontos fortes, pode ser que um frontend não seja muito bom de lógica de programação, mas tenha uma veia de UX, pixel perfect, conhecimento sobre SEO, e vai do entrevistador conseguir adaptar a linha de perguntas para conseguir conhecer mais do entrevistado. Não há porquê fazer perguntas super básicas como equals e hashcode para um especialista java que demonstra boa profundidade na linguagem, sabe a diferença entre List e Set. Assim aproveitamos o tempo para explorar temas como arquitetura, preocupação em passagem de conhecimento e treinamento de equipe.

Se existem conhecimentos específicos e obrigatórios, apenas pergunte. Também não é produtivo tentar criar cenários indiretos para tudo. Se você quer saber se candidato sabe Orientação a Objetos, pergunte a diferença entre uma interface e uma classe abstrata, se quer saber se ele têm nocões de Programação Funcional, pergunte sobre conceitos, onde ele usa no dia a dia, e por ai vai.

Tente intercalar as perguntas mostrando o que é usado hoje na empresa e na equipe para o qual a posição está aberta, assim ele terá um panorama natural e um contexto do porquê as perguntas estarem sendo feitas. Situando onde ele aplicará aquele conhecimento que está sendo cobrado. Dessa forma você deixa o candidato interessado e com os olhos brilhando para trabalhar com uma equipe bem organizada, com tecnologia avançadas e que incentiva o aprendizado.

Iniciar com um objetivo

Temos que entrar na sala com isso claro, para conseguir conduzir o candidato de acordo com o que é realmente necessário ser avaliado. Existem diversos perfis de pessoas, desde as mais quietas, introvertidas ou tímidas, que respondem de forma monossilábica, até aquelas falantes que podem tornar a entrevista improdutiva e sem foco. Depende do entrevistador conseguir deixá-las confortável,saber como fazê-las se expressar, expondo pontos de vista, conhecimentos e experiências, sempre guiando a conversa para o objetivo.


Há aqueles super técnicos que respondem de forma seca e direta, o que torna o tempo de entrevista muito curto e dinâmico, desde que o entrevistador consiga aprodundar nos temas de interesse e dê espaço para que o candidato/candidata consiga se expressar, a entrevista pode ser muito rica para ambos os lados.


Há aqueles mais prolixos que se vc não souber como conduzir, irão divagar sobre assuntos alheios aos que você precisa saber sobre, ou te deixando com menos tempo para fazer uma avaliação completa.


Há aqueles que tentam esconder deficiências e não admitem que não sabem tal assunto, mas tentam enrolar, complicar, por não saber responder, e aqui é importante saber identificar esse perfil.


Temos que sempre criar um ambiente acolhedor, de respeito e propício para que sejamos capazes de medir as habilidades que queremos observar de forma fluida. Fazer afirmações como: “não existe certo e errado”, “não é um conhecimento obrigatório”, ajudam a deixar o clima mais leve e a pessoa aberta a errar.

Também temos que levar em consideração como foi a participação da pessoa dentro da equipe e dos projetos que ela contou, se foi tomadora de decisão, se realmente contribuiu escrevendo código e resolvendo problemas, etc.

E aqui as perguntas de aprofundamento são importantes para entender o dia a dia, não precisamos perguntar diretamente se ela escreve testes unitários ou utiliza TDD, pois podemos ter uma viés de confirmação, perguntamos como ela resolve um bug, duas ótimas respostas seriam: escrevo um teste que reproduza o bug, corrijo o cenário e sigo o fluxo, ou corrijo o cenário e depois escrevo um teste unitário ou de integração para evitar que aconteça novamente.

Perguntas como conhece SOLID? cite alguns Design Patterns e mostre um caso de uso, não chegam a ser inválidas, mas devem ser usadas com cautela, caso realmente precisemos confirmar um ponto, que não conseguimos identificar nas outras dinâmicas.

Continuar evoluindo

Critique o processo, observe como desenrolou uma entrevista, e melhore para a próxima. Faça as entrevistas com pelo menos mais uma pessoa, assim você terá feedbacks ricos de mais um ponto de vista. Também evite trazer 5 entrevistadores, para não criar um clima intimidador.

  • faça perguntas com clareza, saiba explicar de maneira sucinta
  • dê espaço para interpretação (importante ver como o candidato analisa a situação)
  • evite questionamentos de cunho pessoal (estado civil, se tem filhos, etc)
  • evite perguntas com respostas booleanas. Ex: “Você sabe JavaScript?”, “Você já usou scrum/kanban?”
  • não formule perguntas com viés de aceitação. Ex: “Aqui não temos um time de QA, tudo bem pra você?”, “Gosta de trabalhar numa estrutura horizontal de gestão?”
  • faça questões que levem a conclusões e que sirvam de gancho para uma linha de raciocínio.

Eu gosto de propor um cenário problema, e dai ir evoluindo os requisitos funcionais e não funcionais, ao mesmo tempo em que apresento situações reais que podem acontecer com as escolhas. Por exemplo, para uma vaga de frontend:

  • Para fazer um backoffice, quais tecnologias vc escolheria? CRA, NextJS, StyledComponents, Material Design, assim temos ideia do que a pessoa conhece sem ter que perguntar item a item.
  • E para fazer o frontend de um ecommerce? Como a escolha muda, vista a preocupação com SEO, como vai fazer SSR, como deixar o site mais rápido, quais ferramentas medir, como newrelic browser, gtmetrix, google lighthouse, yslow, pagespeed, webpagetest. Técnicas como lazyload, como fazer css e js não bloquear com chamadas assíncronas, critical css, otimização de imagens com alguma cdn, atenção a resolver os pontos dos relatórios, se ja fez algo pensando em acessibilidade…
  • Já estudou ou conhece GraphQL? Quero analisar o interesse, a forma como o candidato vê tecnologia, sendo um assunto quente no momento, mesmo que não tenha tido espaço para usar, ter estudado e saber explicar vantagens, e mostrar que realmente sabe o que é, é um diferencial.

Para uma vaga de backend:

  • O que escolheria para fazer uma API RESTful de cadastro de pessoas, com cpf, email e telefone? Pode escolher java, kotlin, groovy com springboot, nodejs com fastify. Se vai usar um banco relacional como postgres ou não relacional como dynamodb, e pq escolheu um ou outro, qual a diferença entre eles. E dai vamos complicando o cenário aumento o throughput, dizendo que a API está lenta, demorando 2 segundos para responder uma request simples, onde avaliamos a experiência com modelagem, se seguiu formas normais, se sabe analisar necessidade de índices, se pensa em colocar uma read replica, se vai para uma estratégia de cache distribuido, se analisa o código da aplicação, em busca de leaks, procura erros de código. E como analisa isso, se além do log, têm vivência em alguma ferramenta de APM como newrelic, datadog, dynatrace. E dai em diante, como repassa isso para a equipe, se trabalha com code review, se pensa em melhorar o refinamento técnico durante a planning, se trás tech talks para elevar o nível dos devs, se propõe pair programming, ferramentas como lint, sonar, etc.

Tendo que fazer dois requests não dependentes para destinos externos, podem ser feitos em paralelo, e esperamos ouvir sobre CompletableFuture ou Promise.all por exemplo.

  • Qual foi o ultimo livro ou curso que vc fez? Assim consigo saber qual a frequência, e se a resposta sobre como estuda é verdadeira. Se consulta feeds de twitter, newsletter, medium, comunidades, livros, EADs, ou não.

A ideia é elevarmos o nível da entrevista. Em vez de ser uma roteiro lido de forma seca, onde preenchemos checkboxes. Ao querer saber sobre scrum/kanban, pergunte como ele trabalha com o time, se eles fazem dailys se há retrospectivas, assim teremos uma conversa e não um interrogatório da policia civil.


Acima de tudo: respeite e saiba criar um ambiente saudável para extrair o máximo possível de informações, assim como dar segurança e fazer o candidato se interessar e querer trabalhar com você.