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.
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.
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:
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.
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.
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.
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.
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
