Ir para o conteúdo principal

Entrevistas de Engenharia — Um Guia para Gerentes de Contratação se Destacarem

Engineering job interview best practices

Publicado: 22 de janeiro de 2020

Cultura9 min de leitura

Pergunte a qualquer líder de engenharia em uma empresa em crescimento qual é sua principal prioridade, e eles provavelmente dirão contratação. Quando pensamos na importância de aceitar um emprego para a empresa e para o candidato, as poucas horas de entrevistas parecem muito pouco tempo. Queremos garantir que nosso processo de entrevista de emprego aproveite ao máximo esse tempo para ajudar candidatos e a Databricks a entender se a função é adequada. Queremos aprender sobre você e garantir que você receba as informações necessárias para tomar a melhor decisão. Uma das melhores maneiras de fazer isso é projetar entrevistas que enfatizem a conversa e a colaboração. Problemas do mundo real são complexos e cheios de nuances. Queremos entender como os candidatos resolvem desafios abstratos mais do que queremos ver uma solução específica.

O que você quer que os candidatos entendam sobre a equipe de dados da Databricks antes de iniciar o processo de entrevista?

Apesar da escala da infraestrutura que a Databricks opera, temos uma organização de engenharia relativamente pequena. Operamos milhões de máquinas virtuais, gerando terabytes de logs e processando exabytes de dados por dia. Nessa escala, observamos regularmente falhas de hardware, rede e sistema operacional na nuvem, e nosso software deve proteger nossos clientes de qualquer um dos itens acima de forma graciosa. Fazemos tudo isso com menos de 200 engenheiros.

Nosso tamanho significa que temos a flexibilidade de adotar ou criar a tecnologia que acreditamos ser a melhor solução para cada desafio de engenharia. O outro lado da moeda é que muitas partes de nossa infraestrutura ainda estão amadurecendo, então o conjunto de preocupações para muitas iniciativas se expande além do escopo de um único serviço. Ainda é uma startup, então as fronteiras de propriedade e responsabilidade nem sempre são claras. Isso significa que é fácil fazer alterações e ter um impacto fora de suas áreas de foco principais, e que você será responsável por muito mais de um projeto do que seria em outro lugar.

Em que você se tornará um mestre após trabalhar na Databricks? Você será capaz de criar sistemas escaláveis nos campos de Big Data e Machine Learning. A maioria dos engenheiros não faz ML aplicado em seu trabalho diário, mas entendemos profundamente como ele está sendo usado em uma variedade de setores para nossos clientes.

Como você pode se preparar para perguntas técnicas de entrevista?

Nossas entrevistas de engenharia consistem em uma mistura de avaliações de habilidades técnicas e comportamentais, com duração entre 45 e 90 minutos. Embora algumas de nossas entrevistas técnicas sejam mais tradicionais, com perguntas de algoritmos focadas em estruturas de dados e fundamentos de ciência da computação, temos nos voltado para a resolução de problemas prática e avaliações de codificação. Mesmo nas perguntas de algoritmos, os candidatos são bem-vindos para resolver o problema em um laptop em vez de um quadro branco, se preferirem. Isso nos ajuda a ter uma ideia de como eles escrevem código em um ambiente mais realista. Para nossas perguntas de codificação, focamos menos no conhecimento de algoritmos e mais em design, estrutura de código, depuração e aprendizado de novos domínios. Por exemplo, algumas de nossas perguntas técnicas provavelmente usarão uma linguagem/framework com a qual você não está familiarizado, então você precisará demonstrar a capacidade de ler documentação e resolver um problema em uma nova área. Outras perguntas envolvem a construção progressiva de um programa complexo em estágios, seguindo uma especificação de funcionalidade.

Também adaptamos nossas entrevistas com base no histórico do candidato, experiência de trabalho e função. Para funções mais fullstack, dedicamos mais tempo aos fundamentos da comunicação web (http, websockets, autenticação), fundamentos do navegador (caching, tratamento de eventos js) e modelagem de dados e APIs. Para engenharia de sistemas de baixo nível, enfatizaremos multithreading e primitivas do sistema operacional.

Recomendo três coisas para se preparar:

  1. Encontre questões de codificação online e pratique resolvê-las completamente. Isso significa criar código funcional completo e testes sem olhar a solução. Criar testes é importante; algumas de nossas perguntas técnicas têm várias etapas, então você vai querer ser capaz de configurar rapidamente um ambiente de teste para um loop rápido de edição/compilação/depuração durante a entrevista, assim como faria em seu trabalho diário.
  2. Revise os fundamentos da ciência da computação. Conheça as estruturas de dados comuns, a utilização de tempo e memória de cada método e sua interface na linguagem que você planeja usar. Este manual de entrevistas técnicas no GitHub é uma boa visão geral das diferentes estruturas de dados, mas você também deve estudar conceitos de sistemas como multithreading, concorrência, locks e transações.
  3. Faça entrevistas simuladas. A pressão do tempo e o diálogo de uma entrevista de emprego simulada são uma ótima maneira de se sentir confortável antes do evento real. Peça a um amigo para fazer perguntas que você não sabe e dar dicas ao longo do caminho, se necessário.

Haoyi, de nossa equipe de Ferramentas de Desenvolvimento, escreveu um ótimo post sobre como entrevistar de forma eficaz, que oferece boas insights sobre como estruturamos nossas entrevistas e o que procuramos.

Webinar

Databricks: Uma Introdução Prática

Quais são os erros mais comuns que você vê durante as entrevistas?

Agora que cobrimos o que procuramos e como se preparar para as entrevistas, há algumas coisas que você deve conscientemente tentar não fazer durante uma entrevista de emprego de engenharia.

O principal é a falta de paixão ou interesse na função. Lembre-se, você também está entrevistando a empresa e é importante mostrar que você está investido em fazer uma combinação. Ter baixo entusiasmo, não estar familiarizado com o produto Databricks, não fazer nenhuma pergunta e, em geral, depender do entrevistador para conduzir toda a conversa são sinais de que você não está interessado. Assim como você quer um processo de entrevista que o desafie e mergulhe em suas habilidades e interesses, gostamos de um candidato que nos faça perguntas difíceis e reserve um tempo para nos conhecer.

Para entrevistas técnicas, se um candidato estiver buscando uma solução que não funcionará, tentamos ajudá-lo a perceber isso antes de gastar muito tempo na implementação. Se o entrevistador estiver fazendo perguntas, é provável que ele esteja tentando dar uma dica para um caminho diferente. Em vez de permanecer fixo em uma única solução, reserve um minuto para recuar e reconsiderar sua abordagem com novas dicas ou perguntas. Lembre-se de que seu entrevistador provavelmente fez a mesma pergunta dezenas de vezes e viu uma variedade de abordagens. Eles também querem ver como você responderia em um ambiente do mundo real, onde você estaria trabalhando com uma equipe que oferece ajuda de forma semelhante.

Para entrevistas focadas em histórico de trabalho e habilidades comportamentais, tenha exemplos específicos. Tudo bem começar com uma generalização ampla, mas conte uma história sobre como exemplos específicos em seu histórico de trabalho respondem à pergunta. Ao falar sobre sua experiência de trabalho, tente (1) definir claramente o problema, (2) sua solução, (3) o resultado e (4) quaisquer reflexões sobre melhorias. Uma boa maneira de fornecer uma resposta bem pensada é usando a Técnica de Resposta STAR para Entrevistas.

Quais são algumas qualidades que você viu em engenheiros bem-sucedidos e impactantes em suas equipes (tanto no presente quanto no passado)?

Em uma startup como a Databricks, a qualidade mais importante que vi em engenheiros bem-sucedidos é a propriedade (ownership). Estamos crescendo rapidamente, o que traz muitos desafios novos a cada semana, mas nem sempre está claro como as responsabilidades se dividem entre as equipes e as prioridades são determinadas. Grandes engenheiros lidam com essa ambiguidade identificando os problemas mais impactantes para trabalhar, não apenas aqueles limitados às responsabilidades de sua equipe atual. Às vezes, isso significa ajudar diretamente a construir a solução, mas muitas vezes é motivar outros a priorizar o trabalho.

A segunda qualidade em que focamos, especialmente para aqueles no início de suas carreiras, é a capacidade de aprender e crescer. A derivada do conhecimento é muitas vezes mais importante do que as habilidades técnicas atuais de um candidato. Muitos dos problemas de engenharia que estamos resolvendo não têm modelos existentes para seguir. Isso significa quebrar continuamente camadas de abstração para considerar o sistema maior - desde o nível mais baixo de instruções da CPU até como as visualizações são renderizadas no navegador.

Como vi essas qualidades em entrevistas? Engenheiros que demonstram muita propriedade geralmente falam em detalhes sobre os sistemas adjacentes em que confiaram para trabalhos anteriores. Por exemplo, eles conhecem os pontos fortes e fracos de uma camada de armazenamento específica ou sistema de build que usaram e por quê. Eles também criam frequentemente mudanças para ajudar sua equipe a se tornar mais eficaz - seja por meio de melhorias de ferramentas ou uma mudança de processo. O crescimento se manifesta através da reflexão sobre o trabalho passado. Nenhuma solução é perfeita, e grandes engenheiros sabem o que fariam a seguir ou fariam de diferente. Muitos candidatos dizem que a oportunidade de crescer é seu principal critério para escolher seu próximo emprego, mas eles devem ser capazes de falar sobre o que já estão fazendo para crescer. Talvez seja um projeto paralelo, uma nova tecnologia que aprenderam recentemente, alguma melhoria em seu ambiente de desenvolvimento ou um relacionamento de mentoria que estão cultivando em sua função atual.

Quais são alguns dos problemas em que sua equipe está trabalhando? Que habilidades você procura que tornarão os candidatos bem-sucedidos com esses problemas?

A equipe do Workspace tem um conjunto bastante amplo de casos de uso de produtos para dar suporte e a maior parte da equipe trabalha full stack. Procuramos generalistas que tenham demonstrado capacidade de aprender novas tecnologias rapidamente. Também temos muita interação com o cliente e precisamos de engenheiros que possam se aprofundar para entender nossos usuários e formular requisitos. Vários membros da equipe tiveram suas próprias startups no passado ou trabalharam como funcionários iniciais em startups.

Uma das melhores maneiras de entender uma função é perguntar: "Do que me tornarei um mestre?". Para a equipe do Workspace, são três habilidades principais.

  1. Aprender novas tecnologias rapidamente. A equipe do Workspace realiza muitas atividades exploratórias e de prototipagem. A equipe tem muitos generalistas que precisam combinar senso de produto e capacidade de adaptar a tecnologia existente a problemas novos. Um bom exemplo é adaptar o Jupyter de código aberto para rodar na nuvem hospedada pela Databricks com Databricks Clusters. Outro é criar uma infraestrutura de pub/sub para transmitir atualizações por meio de uma API GraphQL para clientes web em tempo real.
  2. Os fluxos de trabalho em ciência de dados, machine learning e análise de dados. Estamos construindo produtos para essas personas, então você entenderá intimamente o fluxo de trabalho diário de cientistas de dados e engenheiros de dados em uma variedade de clientes em diversos setores e tamanhos de empresas. Engenheiros nesta equipe têm exposição regular aos nossos clientes e campeões internos de clientes em Field Engineering.
  3. Design de serviço web escalável na JVM. Nossa equipe trabalha no backend principal para os notebooks stateful e Workspace, que muitas vezes enfrenta desafios de design exclusivos para um serviço em nossa escala. Todos na equipe desenvolvem um profundo entendimento de primitivas de recursos (cpu/memória/io/rede) e como otimizar seu uso em uma arquitetura distribuída tolerante a falhas.

Na Databricks, estamos constantemente procurando Engenheiros de Software que incorporem as características que discutimos. Se você estiver interessado em resolver alguns dos desafios que estamos enfrentando atualmente aqui, confira nossa Página de Carreiras e candidate-se para uma entrevista conosco!

Ted Tomlinson é Diretor de Engenharia na Databricks. Ele gerencia a equipe do Workspace, responsável pelo produto principal de notebooks colaborativos da Databricks e pelos serviços usados para habilitar ciência de dados interativa e machine learning em diversos ambientes.

(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original

Nunca perca uma postagem da Databricks

Inscreva-se nas categorias de seu interesse e receba as últimas postagens na sua caixa de entrada