Recrutando na Microsoft: Minha experiência como entrevistadora técnica
Tags: computerscience, microsoft, recrutamento
Published: 2020-11-07 20:29:35

Recentemente eu aceitei o desafio de realizar entrevistas técnicas na Microsoft. Como eu sempre gostei de resolver desafios no Hackerrank e Codility, achei que seria uma experiência interessante para poder entender e absorver mais a cultura da empresa. Um fato que admiro na cultura da Microsoft é observar o candidato/candidata como uma pessoa que possui sonhos e planos e não apenas como mais um candidato/candidata. Diferentemente de outras entrevistas técnicas, eu percebi que na Microsoft o principal objetivo é ajudar o candidato/candidata a ser aprovado com sucesso, algo que não observei em outras entrevistas que realizei para **big techs**. 

Para ser entrevistador/entrevistadora, você deve realizar um treinamento para entender os principais conceitos de inclusão e **bias**. A finalidade desse treinamento é diminuir o nosso **bias** inconsciente e analisar o candidato de forma justa, baseado nos seus conhecimentos. Muitas vezes o nosso inconsciente não nos permite analisar alguém pelo que ela/ele sabe e o pre-conceito que temos, baseado nas nossa experiência de vida, muitas vezes impede uma análise justa das *skills* de um candidato/candidata. Como por exemplo, eu evito fazer entrevistas técnicas de amigos e pessoas de mesma nacionalidade que a minha. Assim eu evito o **bias** de beneficiar alguém só porque eu o conheço ou me sinto confortável por ter a mesma cultura que a minha.

Um entrevistador *padawan* começa acompanhando outros entrevistadores seniors para adquirir experiência. No meu caso foi o oposto, fui enviada diretamente a realizar a minha primeira entrevista técnica sem realizar nenhum *shadowing* com outros entrevistadores. Confesso que foi assustador e demandou uma preparação antecipada de 3 dias. A preparação consiste em escolher questões compatíveis com o tempo e nível da entrevista e resolvê-las com o objetivo de adquirir entendimento aprofundado no desafio. Embora tenha sido desafiante, tudo ocorreu como esperado.

Conforme as minhas experiências em entrevistas técnicas na Microsoft, eu gostaria de compartilhar como funciona todo o processo. Primeiramente, um/uma entrevistador/entrevistadora irá contactar você por vídeo chamada e ele/ela analisará suas *skills* para entender se os conhecimentos são suficientes para os requerimentos da vaga. Essa entrevista é chamada de *phone screen*. Em seguida, você deverá resolver três problemas de code challenge. Para treinamento, sugiro criar uma conta no Codility como desenvolvedor e resolver os principais problemas do site. Dessa forma, você ficará familiarizado com a ferramenta e como são os desafios.

A entrevista técnica chamada de *onsite* consiste em quatro etapas: entrevista de codificação realizada por engenheiros da Microsoft, design e arquitetura de sistemas realizada por engenheiros de nível senior, design de software feita provavelmente pelo seu futuro manager e entrevista comportamental realizada pelo manager do manager da vaga.

Na entrevista de codificação ou *code interview* o candidato/candidata é desafiado a resolver alguns desafios que envolvem algoritmos e estrutura de dados. O principal objetivo dessa entrevista é analisar o candidato/candidata baseado nos conceitos básicos de ciências da computação e verificar suas habilidade de cooperação em time quando são desafiados com problemas do dia a dia. Espera-se também que o candidato/candidata saiba notação Big O e os principais algoritmos de otimização computacional como o algoritmo de Floyd-Warshall, programação dinâmica, algoritmo guloso, divisão e conquista, etc. Eu indico realizar treinamentos no Codility, Hackerrank e principalmente no Leetcode. Este último (Leetcode) possui um fórum com os principais desafios e perguntas requeridas pelas **big tech companies**, incluindo Microsoft.

A entrevista de design de sistemas vai muito além de modelar um software. Conceitos de computação em nuvem, DevOps, microserviços e escalabilidade, *serveless*, arquitetura orientada a eventos, padrão publisher-subscriber, proxies, algoritmos de load balancing e caching são apenas alguns dos requerimentos que os entrevistadores esperam de um/uma candidato/candidata. Espere também perguntas básicas de redes de computadores, banco de dados e sistemas Linux.

Os requerimentos de design de software abrangem conhecimentos de princípios SOLID, clean code, injeção de dependência, design patterns e refatoração. 

A última entrevista é baseada na análise comportamental do candidato/candidata. São esperados que o candidato pense fora da caixa, demonstre a capacidade de aprender e saiba lidar e aprender com as falhas. Os projetos pessoais também são bastantes cobrados, assim um GitHub com alguns projetos de relevância, como contribuições em projetos open source aumentarão as suas chances de receber um **hire** nessa etapa da entrevista. 

Em todas as entrevistas são esperados do candidato/candidata espírito de liderança, boa comunicação principalmente em inglês, facilidade de trabalhar em time, objetivos de carreira bem definidos e principalmente a habilidade de aprender. Essa última eu considero a mais importante, pois raramente alguém será 100% compatível com os requerimentos de uma vaga.

Finalizando, posso dizer que a oportunidade de colaborar com o processo de recrutamento da Microsoft proporcionou-me um conhecimento que até então eu não tinha vivenciado. A cada candidato/candidata entrevistado, eu aprendo mais um pouco sobre novas tecnologias e novos pensamentos, conforme absorvo suas experiências e conhecimentos. Uma vantagem única que me faz crescer não apenas tecnicamente mas também como pessoa. Como diz um amigo: é sempre um prazer conversar com pessoas inteligentes.