Perguntas que todo desenvolvedor sênior deveria saber responder

0

Recentemente precisei procurar sobre perguntas à serem feitas em um processo seletivo para desenvolvedores sêniores, pois estava procurando maneiras diferentes e melhores de como realizar o processo seletivo com desenvolvedores e tinha percebido que na contratação de devs sêniores, eu precisava entrar mais a fundo com perguntas técnicas e conseguir ter uma visibilidade maior do que o candidato possui de fortalezas e fraquezas.

Felizmente, encontrei vários assuntos e tópicos sobre o assunto, inclusive esse post do hanselman ( https://www.hanselman.com/blog/NewInterviewQuestionsForSeniorSoftwareEngineers.aspx ) que fala sobre perguntas para se realizar para sêniores e após a leitura deste post e outros, cheguei à uma conclusão ( e muito óbvia ) que as perguntas que eu faço na entrevista, são perguntas que todo dev que assume aquele posto deveria saber, obviamente para passar na entrevista.

Segue a lista de perguntas na qual eu julgo muito pertinentes todo desenvolvedor de software que se julga sênior, saber:

  • O que você fez para melhorar como desenvolvedor em sua carreira?
  • O que é o SOLID para você?
  • Por que o Princípio da Responsabilidade Única é importante?
  • O que é inversão de controle? Como isso se relaciona à injeção de dependência?
  • Por que as interfaces são importantes?
  • Conhece sobre o pattern Repository? O Factory? Por que os patterns são importantes?
  • Quais são alguns exemplos de antipadrões?
  • O você entende por Clean Architecture?
  • O que você entende por Clean Code?
  • Qual é a sua opinião sobre microserviços e monólitos?
  • O que é Gang of Four? Por que você deveria se importar? Consegue me citar alguns exemplos?
  • Como os padrões MVP, MVC e MVVM se relacionam? Quando eles são apropriados?
  • Você acabou de ser encarregado de um projeto de código legado com problemas de manutenção. Que tipo de coisas você gostaria de melhorar para colocar o projeto em uma base estável?
  • Quais são algumas maneiras alternativas de armazenar dados além de um banco de dados relacional? Por que você faria isso e quais são as vantagens e desvantagens?
  • O que você sabe sobre 12 factor app?
  • Discuta as diferenças entre Mocks e Stubs/Fakes e onde você pode usá-las
  • Você ainda está escrevendo código? O quanto gosta de fazer isso?
  • Você acabou de ser designado para um projeto em uma nova tecnologia, como você começa?
  • O que você faz para ficar a par das mais recentes tecnologias e ferramentas?
  • O que é CI e CD? Você já usou e por que é importante?
  • Como você reage às pessoas que criticam seu código/documentos?
  • Conte-me sobre alguns de seus projetos de hobby que você escreveu no seu tempo livre.
  • Qual é o último livro de programação que você leu?
  • Você conhece algum método de criptografia? Se sim, pode me falar sobre alguma vez que já utilizou algum?
  • Descreva, com o máximo de detalhes que achar relevante, o mais profundamente possível, o que acontece quando digito “google.com.br” em um navegador e pressiono “Ir”.
  • O que você faz quando fica com um problema que não pode resolver?
  • Se o seu banco de dados estava sob muita pressão, quais são as primeiras coisas que você pode considerar para agilizá-lo?
  • O que é SQL injection?
  • Qual é a diferença entre teste de unidade e teste de integração?
  • Diga-me três vezes que você falhou.
  • O que é refatoração? Você já usou? Acha importante? Cite três refatorações comuns.
  • Quando você sabe que seu código está pronto para produção?

Óbviamente, essas não são as únicas perguntas que um desenvolvedor precisa saber e também não desqualifica ninguém caso não saiba alguma.

Este post serve apenas como provocação para você que se acha desenvolvedor sênior, fazer um auto julgamento e para os mais inexperientes poderem ver como guia (na minha opinião) de pontos a evoluir.

Ainda ressalto, que o conceito de senioridade é algo muito complexo de ser tratado, ainda mais quando falamos de times de desenvolvimento onde uma pessoa pode ser sênior em assunto X e ser muito júnior em assunto Y e isso não é problema ou demérito nenhum, apenas prova o fato que somos humanos e não máquinas.

Também gostaria de deixar uma última provocação, que infelizmente, não acredito que uma pessoa pode se julgar sênior com 1 ou 2 anos de carreira. Adquirir conhecimento suficiente para responder todas aquelas perguntas acima, leva tempo, muito tempo! Pois exige além do conhecimento teórico, o conhecimento prático e preferencialmente com projetos diferentes.

Ainda poderíamos desdobrar MUITO sobre este assunto, mas escrevi esse post apenas como um ponto de reflexão, para servir de termômetro para que as pessoas façam uma auto avaliação de si mesmos.

Um grande abraço!

Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com