Demandez à n'importe quel responsable de l'ingénierie dans une entreprise en pleine croissance quelle est sa priorité absolue, et il y a de fortes chances qu'il réponde l'embauche. Lorsque l'on réfléchit à l'importance d'une décision d'accepter un emploi pour l'entreprise et le candidat, les quelques heures d'entretiens semblent bien courtes. Nous voulons nous assurer que notre processus d'entretien d'embauche tire le meilleur parti de ce temps pour aider les candidats et Databricks à comprendre si le poste convient. Nous voulons en apprendre davantage sur vous et nous assurer que vous obtenez les informations dont vous avez besoin pour prendre la meilleure décision. L'une des meilleures façons d'y parvenir est de concevoir des entretiens qui mettent l'accent sur la conversation et la collaboration. Les problèmes du monde réel sont complexes et désordonnés. Nous voulons comprendre comment les candidats résolvent des défis abstraits plus que nous ne voulons voir une solution spécifique.
Malgré l'ampleur de l'infrastructure que Databricks exploite, nous avons une organisation d'ingénierie relativement petite. Nous exploitons des millions de machines virtuelles, générons des téraoctets de journaux et traitons des exaoctets de données par jour. À notre échelle, nous observons régulièrement des défaillances matérielles, réseau et de système d'exploitation dans le cloud, et notre logiciel doit protéger nos clients de manière transparente contre tout ce qui précède. Nous faisons tout cela avec moins de 200 ingénieurs.
Notre taille signifie que nous avons la flexibilité d'adopter ou de créer la technologie que nous croyons être la meilleure solution pour chaque défi d'ingénierie. Le revers de la médaille est qu'il existe de nombreuses parties de notre infrastructure qui sont encore en cours de maturation, de sorte que l'ensemble des préoccupations pour de nombreuses initiatives dépasse le cadre d'un seul service. C'est aussi encore une startup, donc les limites de propriété et de responsabilité ne sont pas toujours claires. Cela signifie qu'il est facile d'apporter des changements et d'avoir un impact en dehors de vos domaines de concentration principaux, et que vous posséderez beaucoup plus d'un projet que vous ne le feriez ailleurs.
De quoi deviendrez-vous un expert après avoir travaillé chez Databricks ? Vous serez capable de créer des systèmes évolutifs dans le domaine du Big Data et du Machine Learning. La plupart des ingénieurs ne font pas de ML appliqué dans leur travail quotidien, mais nous comprenons profondément comment il est utilisé dans un éventail d'industries pour nos clients.
Nos entretiens d'ingénierie consistent en un mélange d'évaluations de compétences techniques et interpersonnelles, d'une durée de 45 à 90 minutes. Bien que certains de nos entretiens techniques soient des questions d'algorithmes plus traditionnelles axées sur les structures de données et les fondamentaux de l'informatique, nous nous orientons de plus en plus vers des évaluations de résolution de problèmes et de codage pratiques. Même pour les questions d'algorithmes, les candidats sont invités à résoudre le problème sur un ordinateur portable plutôt que sur un tableau blanc s'ils le préfèrent. Cela nous aide à avoir une idée de la façon dont ils écrivent du code dans un environnement plus réaliste. Pour nos questions de codage, nous nous concentrons moins sur les connaissances en algorithmes et davantage sur la conception, la structure du code, le débogage et l'apprentissage de nouveaux domaines. Par exemple, certaines de nos questions techniques utiliseront probablement un langage/framework que vous ne connaissez pas, vous devrez donc démontrer votre capacité à lire la documentation et à résoudre un problème dans un nouveau domaine. D'autres questions impliquent la construction progressive d'un programme complexe par étapes en suivant une spécification de fonctionnalité.
Nous adaptons également nos entretiens en fonction du parcours du candidat, de son expérience professionnelle et du poste. Pour les postes plus orientés fullstack, nous passons plus de temps sur les bases de la communication web (http, websockets, authentification), les fondamentaux du navigateur (mise en cache, gestion des événements js) et la modélisation des API et des données. Pour l'ingénierie des systèmes de bas niveau, nous mettrons l'accent sur le multithreading et les primitives du système d'exploitation.
Je recommande trois choses pour vous préparer :
Haoyi, de notre équipe Dev Tools, a écrit un excellent article de blog sur la manière de mener un bon entretien de programmation qui donne un bon aperçu de la façon dont nous structurons nos entretiens et de ce que nous recherchons.
Maintenant que nous avons couvert ce que nous recherchons et comment se préparer aux entretiens, il y a quelques éléments que vous devriez consciemment essayer de ne pas faire pendant un entretien d'embauche en ingénierie.
Le principal est le manque de passion ou d'intérêt pour le poste. N'oubliez pas que vous interviewez également l'entreprise et qu'il est important de montrer que vous êtes investi dans la recherche d'une adéquation. Manquer d'enthousiasme, ne pas connaître le produit Databricks, ne poser aucune question et, en général, compter sur l'interviewer pour mener toute la conversation sont autant de signes que vous n'êtes pas intéressé. Tout comme vous souhaitez un processus d'entretien qui vous met au défi et explore vos compétences et vos intérêts, nous apprécions un candidat qui nous pose des questions difficiles et prend le temps de nous connaître.
Pour les entretiens techniques, si un candidat poursuit une solution qui ne fonctionnera pas, nous essayons de l'aider à s'en rendre compte avant de passer beaucoup de temps sur l'implémentation. Si l'interviewer pose des questions, il y a de fortes chances qu'il vous oriente vers une autre voie. Plutôt que de rester figé sur une solution unique, prenez une minute pour prendre du recul et reconsidérer votre approche avec de nouveaux indices ou questions. N'oubliez pas que votre interviewer a probablement posé la même question des dizaines de fois et a vu une gamme d'approches. Il veut également voir comment vous réagiriez dans un environnement réel, où vous travailleriez avec une équipe qui offre de l'aide de manière similaire.
Pour les entretiens axés sur l'historique professionnel et les compétences interpersonnelles, ayez des exemples spécifiques. Il est acceptable de commencer par une généralisation large, mais racontez une histoire sur la façon dont des exemples spécifiques de votre historique professionnel répondent à la question. Lorsque vous parlez de votre expérience professionnelle, essayez de (1) définir clairement le problème, (2) votre solution, (3) le résultat et (4) toute réflexion sur les améliorations. Une bonne façon de fournir une réponse bien pensée est d'utiliser la technique de réponse STAR pour les entretiens.
Dans une startup comme Databricks, la qualité la plus importante que j'ai observée chez les ingénieurs performants est la prise d'initiative. Nous nous développons rapidement, ce qui apporte chaque semaine de nouveaux défis, mais il n'est pas toujours clair comment les responsabilités se répartissent entre les équipes et comment les priorités sont déterminées. Les grands ingénieurs gèrent cette ambiguïté en identifiant les problèmes les plus importants à résoudre, pas seulement ceux qui sont limités aux responsabilités de leur équipe actuelle. Parfois, cela signifie aider directement à construire la solution, mais souvent, il s'agit de motiver les autres à prioriser le travail.
La deuxième qualité sur laquelle nous nous concentrons, en particulier pour ceux qui sont plus jeunes dans leur carrière, est la capacité d'apprendre et de grandir. La dérivée de la connaissance est souvent plus importante que les compétences techniques actuelles d'un candidat. Beaucoup de problèmes d'ingénierie que nous résolvons n'ont pas de modèles existants à suivre. Cela signifie constamment briser les couches d'abstraction pour considérer le système dans son ensemble - du niveau le plus bas des instructions du processeur, jusqu'à la façon dont les visualisations sont rendues dans le navigateur.
Comment ai-je vu ces qualités lors des entretiens ? Les ingénieurs qui font preuve de beaucoup d'initiative peuvent souvent parler en détail des systèmes adjacents sur lesquels ils se sont appuyés pour leurs travaux passés. Par exemple, ils connaissent les forces et les faiblesses d'une couche de stockage ou d'un système de construction spécifique qu'ils ont utilisé et pourquoi. Ils apportent également souvent des changements pour aider leur équipe à être plus efficace - que ce soit par des améliorations d'outils ou un changement de processus. La croissance se manifeste par la réflexion sur le travail passé. Aucune solution n'est parfaite, et les grands ingénieurs savent ce qu'ils feraient ensuite ou différemment. Beaucoup de candidats disent que l'opportunité de grandir est leur principal critère pour choisir leur prochain emploi, mais ils devraient être capables de parler de ce qu'ils font déjà pour grandir. Peut-être qu'il s'agit d'un projet parallèle, d'une nouvelle technologie qu'ils ont récemment apprise, d'une amélioration de leur environnement de développement ou d'une relation de mentorat qu'ils cultivent dans leur rôle actuel.
L'équipe Workspace a un ensemble assez large de cas d'utilisation de produits à prendre en charge et la plupart de l'équipe travaille en full stack. Nous recherchons des généralistes qui ont démontré leur capacité à apprendre rapidement de nouvelles technologies. Nous sommes également très orientés client et avons besoin d'ingénieurs capables de creuser en profondeur pour comprendre nos utilisateurs afin de formuler des exigences. Plusieurs membres de l'équipe ont eu leurs propres startups par le passé ou ont travaillé comme premiers employés dans des startups.
L'une des meilleures façons de comprendre un rôle est de se demander : « De quoi vais-je devenir un expert ? » Pour l'équipe Workspace, il s'agit de trois compétences principales.
Chez Databricks, nous recherchons constamment des ingénieurs logiciels qui incarnent les caractéristiques dont nous avons parlé. Si vous souhaitez résoudre certains des défis que nous relevons actuellement, consultez notre page Carrières et postulez pour un entretien avec nous !
Ted Tomlinson est Directeur de l'Ingénierie chez Databricks. Il dirige l'équipe Workspace, responsable du produit phare de notebooks collaboratifs de Databricks et des services utilisés pour permettre la science des données interactive et le machine learning dans différents environnements.
(Cet article de blog a été traduit à l'aide d'outils basés sur l'intelligence artificielle) Article original
