Parlons des entretiens sur tableau blanc et des alternatives possibles

Ce n'est une nouvelle pour personne que de nombreux ingénieurs détestent les questions d'entrevue basées sur un tableau blanc.

Que ce soit sur Twitter, Medium ou LinkedIn, il est facile de trouver quelqu'un qui se défoule. L'expression «le processus d'embauche est cassé» est utilisée si souvent qu'elle est devenue un cliché.

Malheureusement, une grande partie de cette frustration tombe dans l'oreille d'un sourd.

Malgré le chœur de colère qui l'entoure, le «tableau blanc» est toujours un aliment de base dans les entrevues en génie logiciel. Cela est dû en partie au fait que les développeurs sont rapides à exprimer leur ressentiment, mais lents à proposer de meilleures alternatives.

Existe-t-il de meilleures alternatives?

Cette question m'a beaucoup préoccupé récemment. Il y a quatre semaines, j'ai décroché mon premier emploi d'ingénieur logiciel à temps plein. Bien que je ne sois pas encore impliqué dans le processus de recrutement, je le serai éventuellement.

Ayant été de l'autre côté de la table il y a à peine un mois, je comprends à quel point les entretiens peuvent être imprécis. Quand c'est à mon tour de poser les questions, je veux m'assurer que j'évalue mes collègues potentiels avec exactitude et équité.

Cette situation difficile m'a conduit à deux questions:

  1. Les entretiens sur tableau blanc sont-ils le meilleur choix?
  2. Sinon, quelles sont les meilleures alternatives?

Dans cet article, je vais tenter de répondre à ces questions. Gardez à l'esprit que ce sont mes opinions personnelles qui ont été façonnées par ma propre expérience d'entrevue.

J'essaierai d'être le plus objectif possible en abordant cette tâche à la manière d'un véritable génie logiciel: examiner toutes les options et peser leurs compromis.

Les interviews sur tableau blanc sont-elles les pires?

La première étape de ce processus consiste à examiner le tableau blanc.

Avantages:

  1. Effort rapide et faible
  2. Ne dépend pas de la langue ou du domaine
  3. Vous savez (généralement) à quoi vous attendre
  4. Support communautaire (Glassdoor, LeetCode, Pramp, etc.)

Les inconvénients:

  1. La chance est un facteur important (loterie algorithmique)
  2. Ne teste pas nécessairement l'aptitude à l'ingénierie
  3. Favorise les jeunes ingénieurs et les jeunes diplômés

Pour les entreprises qui exigent que les ingénieurs aient une bonne maîtrise des principes fondamentaux de la CS, des algorithmes de bas niveau et qui ne dépendent pas des bibliothèques, l'entretien de tableau blanc est parfait.

SpaceX, MacOS / Windows et React de Facebook ont ​​tous été conçus par des ingénieurs possédant ces connaissances. Il faut s'attendre à obtenir une interview de tableau blanc de l'une de ces entreprises.

En tant que candidat à un poste, j'adore les entretiens sur tableau blanc. Je sais à quoi m'attendre. La plupart des questions d'algorithme relèvent de ces sujets généraux:

  • Tableaux / chaînes
  • Arbres binaires
  • Listes liées
  • DFS / BFS
  • Retour en arrière
  • Programmation dynamique

Sachant cela à l'avance, je peux étudier pour cela. Et il y a une pléthore d'outils d'étude parmi lesquels choisir. La préparation aux entretiens techniques est une industrie à part entière.

C'est pour cette raison que les entretiens sur tableau blanc ne sont pas la meilleure option pour chaque entreprise. Cela dépend en grande partie de la chance, de la mémorisation et de celui qui a passé le plus de temps à étudier.

Tout le monde ne peut pas étudier pendant de longues périodes pour maîtriser les algorithmes.

J'ai eu la chance de pouvoir le faire et j'ai battu d'autres ingénieurs qui ne le pouvaient pas. Suis-je un meilleur ingénieur que tous? Peut-être, mais je ne suis pas sûr qu'une interview sur tableau blanc soit le meilleur moyen de le révéler.

Donc, s'il y a un doute sur le fait que l'entretien sur tableau blanc est le meilleur outil pour le travail, quoi de mieux?

Jetons un coup d'œil à certaines des alternatives.

Défis de codage via ordinateur

Avantages:

  1. Utiliser un ordinateur et un environnement de développement familier
  2. Peut être fait à distance via le partage d'écran
  3. Tous les autres avantages des entretiens sur tableau blanc

Les inconvénients:

  1. Plus strict sur la syntaxe et la capacité d'exécution.
  2. L'environnement de programmation et les plugins peuvent jouer un rôle important
  3. Mêmes inconvénients des entretiens sur tableau blanc

Les défis de codage sur un ordinateur portable sont le cousin le moins rigoureux de l'interview de tableau blanc.

Les candidats ont l'avantage d'utiliser leurs propres ordinateurs. Ils peuvent être effectués à distance ou dans un environnement de programmation par paires.

Une bonne chose que j'ai remarquée à ce sujet est qu'ils seront généralement plus faciles que les questions de tableau blanc. La plupart des questions que j'ai posées concernaient la manipulation de chaînes ou des algorithmes simples que tout ingénieur expérimenté n'aurait pas besoin d'étudier.

L'inconvénient est que l'accent est beaucoup plus mis sur la fonctionnalité.

Au cours de ma recherche d'emploi, on m'a posé deux fois le problème du changement de pièce. L'un comme défi de tableau blanc et l'autre sur un éditeur.

Pour le défi du tableau blanc, je me suis débrouillé en expliquant principalement ma solution. Sur mon ordinateur portable, je devais écrire des tests de cas de pointe et garantir que ma solution fonctionnait.

Une partie de la raison pour laquelle j'aime le tableau blanc est due à la clémence. Personne ne va exécuter votre fonction écrite via un compilateur. Tant que l'intervieweur comprend ce que vous pensez et que l'écriture semble assez bonne, vous obtenez tout le crédit.

Ce n'est pas le cas avec les défis de code.

Certains peuvent affirmer que l'accent mis sur la fonctionnalité est préférable, car nous sommes payés pour écrire du code de travail. C'est vrai, mais nous ne sommes pas payés pour le faire en 30 à 45 minutes de sprints.

Espérons simplement que vous ne soyez pas nerveux pendant les interviews. Un petit bogue qui provoque des tests échoués et plusieurs minutes de débogage pourrait être la différence entre une «forte embauche» ou une réussite.

Les défis de code souffrent toujours des mêmes lacunes que le tableau blanc, car beaucoup d'entre eux sont basés sur des algorithmes.

Avec la pression supplémentaire de la fonctionnalité, cela peut rendre les questions encore plus difficiles malgré l'environnement confortable. Si vous n'aimez déjà pas les problèmes d'algorithme, les défis de code ne seront pas beaucoup mieux.

Faites des évaluations à la maison

Avantages:

  1. Peut travailler dessus en pyjama
  2. Habituellement donné plus d'une semaine pour travailler en mission
  3. Utilisez votre propre éditeur et environnement de développement
  4. Peut être un nouvel ajout au portefeuille
  5. Généralement plus amusant que le tableau blanc

Les inconvénients:

  1. Le niveau de difficulté peut varier considérablement
  2. Beaucoup plus d'efforts et de temps que les défis de codage
  3. Peut dépendre du domaine
  4. Peut entraîner un fluage des caractéristiques en raison de la concurrence
  5. Ne représente pas le travail quotidien

De nombreux ingénieurs préfèrent les missions à emporter. Les délais pour les rendre sont généralement flexibles et les candidats peuvent coder. Ce n'est pas un choc que les programmeurs préfèrent se tenir devant un tableau blanc tout en étant jugés en silence.

Cependant, les tests à emporter présentent des inconvénients majeurs.

Premièrement, ils sont faciles à manipuler.

De nombreuses entreprises hébergent leurs tests sur GitHub. Tapez "Challenge" ou "Test" dans la recherche GitHub et vous en trouverez beaucoup. Cela donnera au candidat avisé suffisamment de temps pour rechercher le défi de manière préventive.

Ce n'est pas vraiment une plainte. Juste plus d'un pro-tip.

Ce qui est un problème est qu'il est assez facile de trouver les réponses des autres à ces défis et de les copier. De nombreux ingénieurs conservent les réponses pour relever les défis à la maison sur leurs profils GitHub.

Vous pouvez même le tester vous-même. Tapez "Challenge" dans la recherche GitHub et voyez ce que vous trouvez.

J'habite à côté du siège Etsy à Brooklyn et j'étais curieux de savoir si je pouvais trouver les réponses à certains de leurs tests. «Etsy Challenge» en a révélé quatre. Il y en avait encore plus sous «Etsy Test».

Il est vrai que les entreprises peuvent modifier leurs évaluations. Cependant, il peut être difficile de modifier un processus d'entrevue tous les deux mois en raison de la fuite de détails.

Deuxièmement, le niveau de difficulté et le temps nécessaires pour terminer ces défis varient considérablement.

Lors de ma dernière recherche d'emploi, j'ai eu quatre missions à emporter. Trois des entreprises ont déclaré qu'elles ne devraient prendre que 3 à 5 heures pour terminer.

Ils m'ont tous pris plusieurs jours.

La raison principale en était que les défis étaient souvent spécifiques à un domaine. Ils ont nécessité plusieurs heures de recherche de documentation sur les API et de nouvelles technologies.

La quatrième entreprise a relevé un défi qui pouvait facilement prendre une semaine et m'a donné deux jours. J'ai dû créer une application de chat fonctionnelle prenant en charge les commandes slash.

C'était un projet amusant et intéressant, mais il m'a obligé à abandonner tout ce que je faisais pendant deux jours pour le terminer.

Si un candidat a la chance de s'entretenir avec plusieurs entreprises à la fois, il peut devenir un emploi à plein temps en travaillant simplement sur ces défis.

De plus, les développeurs professionnels doivent travailler sur des bases de code héritées et respecter les délais. Un nouveau projet d'une semaine n'évaluera pas à quel point la personne interrogée travaille dans un environnement au rythme rapide.

Dans l'ensemble, j'aime les travaux à emporter à la maison comme un premier écran de la capacité d'un candidat. Cela dit, ils devraient être liés à l'emploi pour lequel le candidat postule et ne devraient pas prendre un temps obscène pour terminer.

Basé sur un projet / contrat à embaucher

Avantages:

  1. Courez la chance de travailler avec le candidat / l'équipe
  2. Être payé pour travailler
  3. Travaillez sur de vrais projets
  4. Sont évalués sur la façon dont vous travaillez avec l'équipe et le code du navire

Les inconvénients:

  1. Engagement à long terme
  2. Travailler sans garantie d'emploi
  3. Aucun avantage pour la santé en tant qu'entrepreneur
  4. Peut mettre le candidat en mauvaise position de négociation
  5. Dépend de la langue

Les entretiens basés sur des projets sont rares. Mais de nombreuses entreprises les soutiennent, comme Basecamp et Automatic. Je peux comprendre pourquoi.

Ces entretiens sont probablement le moyen le plus précis d'évaluer les compétences d'une personne et de les évaluer en tant que membre de l'équipe. L'entreprise travaille directement avec eux et voit comment ils gèrent les tâches en équipe.

Le candidat a également la possibilité d'évaluer l'entreprise et de déterminer s'il s'agit du type d'environnement dans lequel il aimerait travailler.

Gagnant-gagnant. Ou alors il semble.

Cela dit, en tant que candidat à un poste, je ne participerais jamais à des entrevues basées sur des projets ou à des postes contractuels. Les inconvénients l'emportent de loin sur les points positifs.

Les premiers mois de tout travail sont généralement les plus difficiles. Vous vous acclimatez à une nouvelle équipe, une nouvelle culture, une nouvelle base de code. Imaginez maintenant travailler sur un projet sans savoir si vous aurez un emploi à la fin.

Un bon ami à moi a récemment interviewé chez Automatic et a confirmé à quel point cela pouvait être stressant. Tout est évalué, de la façon dont vous interagissez avec vos collègues aux questions que vous posez. Dans ces environnements, il existe une «question stupide».

Le pire, c'est qu'il a été licencié après le contrat de trois mois. Heureusement, il n'a pas laissé cela influencer son estime de soi. Il connaît ses capacités et va de l'avant. Je ne sais pas si moi, ou bien d'autres ingénieurs, pouvions faire de même si facilement.

De plus, les contrats mettent le demandeur d'emploi dans une position de négociation affreuse. La force des négociations vient de la volonté de se retirer.

À la fin d'une période de contrat d'embauche, le candidat potentiel n'aura plus de monnaie d'échange. Ils n'auront pas d'autres offres et ils ont déjà consacré des dizaines ou des centaines d'heures à leurs projets en fonction de la durée du contrat.

Ils seraient incités à prendre le poste même si ce n'est pas leur choix préféré. L'alternative est de rejoindre le marché du travail à la case départ.

The Sunk Cost Fallacy à son meilleur.

Bien que les entretiens sur tableau blanc ne soient peut-être pas idéaux, j'en ferais une centaine avant de faire une interview basée sur un projet.

Alors, quel est le meilleur?

Comme vous l'avez peut-être deviné: It Depends ™.

Les compromis semblent être entre la vitesse et l'effort par rapport à la précision. Chaque méthode sacrifie l'une pour l'autre. Il appartient à chaque entreprise de juger ces compromis par elle-même. SpaceX aura probablement un processus différent de celui de la petite startup new-yorkaise.

Ce qui est vrai, c'est qu'une entreprise SaaS ne devrait demander aux candidats d'écrire des algorithmes de programmation dynamique que si cela les aide à déterminer les compétences de l'ingénieur. Pas simplement parce que Google le fait.

Si je concevais le processus d'entrevue pour mon équipe chez DigitalOcean, j'utiliserais un mélange d'évaluations à emporter et de défis de code / exercices de jumelage. Je jaugerais également leur compréhension de la disponibilité et des systèmes distribués via une session de questions-réponses et un défi de conception de système.

La bonne nouvelle est que mon équipe le fait déjà. Le processus d'entrevue difficile mais juste de DigitalOcean a été l'une des raisons pour lesquelles j'ai accepté leur offre. Cela m'a prouvé qu'ils étaient déjà passés par ce processus d'auto-examen et avaient trouvé comment évaluer équitablement leurs candidats.

S'il vous plaît laissez-moi savoir quelle est votre méthode d'entretien préférée dans les commentaires ci-dessous!

Enfin, pour tous les ingénieurs qui souhaitent voir le processus d'entretien changer, commencez à proposer des idées. J'ai vu trop d'ingénieurs se plaindre des entretiens sur le tableau blanc pour continuer le processus une fois qu'ils ont été embauchés, car il y a trop de travail pour le changer.

Ne sois pas cette personne.

Arrêter de se plaindre.

Trouve des solutions.