Le recrutement technique est une phase dans la vie d’une entreprise qui va mêler intimement le besoin de comprendre en profondeur l’humain et la technique. De ma petite expérience, je m'aperçois que c’est un exercice de la plus haute difficulté :
Sans prétendre avoir la solution pour mener l’entretien parfait, je vais essayer de m’attarder sur ce que je pense être des motifs d’erreurs que j’ai pu percevoir au fil des années. J’insiste sur le fait qu’on est ici dans un écrit particulièrement subjectif, que mon avis s’est façonné au fil du temps par mon expérience personnelle, par les retours d’amis, de blogueurs. Impossible ici d’émettre des vérités immuables, avec preuves et statistiques à l’appui.
A défaut d’apporter cette solution miracle, l’article devrait permettre à un recruteur tech de se reconnaitre dans certains points, et peut-être se remettre en question sur certains aspects, ou au contraire se conforter dans manière de faire. Je m’adresse ici au recruteur en utilisant le “vous”.
Bonne lecture !
La règle est simple : si vous voulez recruter quelqu’un de meilleur que vous dans un domaine, vous ne pouvez pas être celui qui juge ses compétences.
Je distingue ce point sous deux formes :
L’erreur inconsciente :
L’être humain a par nature, une tendance à vouloir juger son prochain à tout prix, sans se rendre compte que son jugement n’est pas toujours fondé. Il confond parfois l’analyse (🧠Thinking) avec son intuition (Feeling 🫀).
J’ai entendu de nombreuses fois des personnes non techniques affirmer avec aplomb :
Ce dév c’est un tueur !
Peut être bien, mais comment en être certain ? Comment le prouver seul ? Que ce soit de manière générale en société, ou spécifiquement pendant un recrutement technique, basons tant que possible notre un avis sur des faits très concrets.
Par exemple, si vous voulez savoir si un scientifique est bon, demandez l’avis de ses pairs, plutôt qu’uniquement utiliser votre intuition basée sur un tas d’éléments fallacieux, comme sa réputation dans la presse.
Si vous voulez savoir si un dév est bon, demandez l’avis de bons autres dévs si vous n’en êtes pas un vous-même. En tant que personne non technique, acceptez que votre intuition n’est et restera qu’une intuition, même si l’expérience la rendra de plus en plus juste au fil du temps.
L’erreur volontaire :
Il y a aussi le recruteur qui est conscient de son manque, mais qui faute de mieux, concède qu’il n’a pas trop le choix car il ne dispose pas des compétences en interne (évidemment, sinon après tout il ne recruterait peut être pas s'il disposait déjà de la compétence !).
Dans ce cas, le recruteur accepte sciemment de prendre le risque de se tromper, en se fiant à son intuition. Ce risque peut être payant ou non, c’est un choix à faire.
Faites-vous aider par votre réseau, des amis, un freelance, ou toute personne en qui vous avez confiance.
Ne faites pas confiance aveuglément aux entreprises de mises en relation, puisque leur but est que le candidat soit pris pour toucher leur com, et parce qu’eux même ne connaissent pas en détail votre besoin.
Mesurez le niveau de risque que vous êtes prêts à prendre dans votre recrutement. Un mauvais premier recrutement technique en startup peut être très douloureux.
Continuez malgré tout à utiliser de manière complémentaire votre intuition, qui bien qu’insuffisante, reste nécessaire.
Attention, il reste malgré tout indispensable qu’une personne non technique participe au recrutement, de manière complémentaire pour donner son avis sur le côté humain, la personnalité du candidat, etc.
On cherche un ninja hacker du code pour notre super start-up en croissance
On a tous vu ce genre d’annonce complètement évasive, qui montre que vous ne vous êtes pas posé toutes les questions qu’il fallait pour bien définir votre recherche.
Certains pensent qu’une fois le choix fait entre full stack / back-end / front-end / mobile / devops, alors le boulot est fait.
Mais même au-delà de cette spécialisation, il existe de nombreux rôles très distincts, que certains profils ne maitrisent pas, ou ne souhaitent simplement pas avoir au sein de l’entreprise. Voici quelques exemples de rôles parmi beaucoup d’autres :
Tout développeur aussi talentueux soit-il, aura des rôles dans lequel est plus à l’aise, ou auxquels il aspire.
Pour votre défense, le vocabulaire associé aux différents rôles est loin de faire consensus, et les termes anglais et français se mélangent souvent.
Aussi, le terme développeur est un parfait exemple d’un vocabulaire pas assez inclusif. Software Engineer serait plus adapté selon moi car il couvre un spectre plus large, pouvant correspondre aux différents rôles vus ci-dessus.
Tu préfères partir d’une feuille blanche ou d’une solution existante ?
(builder VS runner)
Tu préfères faire 2 features avec du code bien ou 1 feature avec un code excellent ?
(feature-doer VS tech expert)
Tu prends plus de plaisir à aider un collègue ou à terminer une feature ?
(orienté équipe ou doing)
Tu te sens plus l’âme d’un compétiteur ou d’un collaborateur ?
(orienté performance ou collaboration)
Il est important que les réponses proposées soient toutes des bonnes réponses de manière générale, mais moins dans votre cas spécifique.
Par exemple pour la 2e question, les deux réponses me semblent parfaitement acceptables, mais si le time-to-market est crucial pour votre startup, vous préférerez développer vite à court terme.
Comme on l’a vu dans un point précédent, vous ne recrutez ni un pisseur de lignes, ni la future médaille Fields, mais une personne amenée à avoir différents rôles techniques au sein de votre entreprise, bien que tous axés autour du développement.
Pourquoi alors passer les 9/10e de l’entretien à ne parler que de code en détail ? Pourquoi les tests ne devraient juger que la capacité d’une personne à écrire du code ?
Ce genre d’entretien peut témoigner du fait qu’un recruteur n’a pas pris la mesure des caractéristiques qui font un bon software engineer, en résumant le travail du développeur à écrire des lignes de code.
Ne vous faites pas piéger, il y a de nombreuses personnes très fortes en développement pur, mais qui ne feront pas l’affaire dans votre cas car par exemple incapables :
Les tests techniques où le but est de faire un maximum d’exercices de code dans un temps imparti, n’ont pour moi que très peu d’intérêt, car c’est du travail sous stress dans lequel la créativité n’a pas sa place, et où la résolution de problème est orientée uniquement sur le code, ce qui ne correspond pas à la vraie vie, dans laquelle le code est un moyen de répondre à un problème réel.
Or, le développement d’un produit est rarement un sprint, mais plus souvent un marathon. Si à court terme un développeur rapide va donner l’impression d’avancer plus vite, à long terme, un développeur plus lent qui prend les bonnes décisions d’architectures et d’outillage, qui teste mieux, rattrapera forcément son retard.
Dans le même genre, les entretiens pour du développement web qui sont bourrés d’exercices mathématiques et algorithmiques sont pour moi des contresens absolus. Il s’agit d’exercices qu’on faisait tous à l’école pour former son esprit et sa logique. 10 ans après être sorti d’école, je n’ai quasiment plus eu à me servir directement de ces compétences dans ma vie professionnelle.
Pourquoi alors les demander en entretien ? Là encore on teste davantage la mémoire d’un candidat, que sa capacité réelle à réfléchir. Un candidat qui sort d’école va d'ailleurs sûrement être avantagé comparé à un meilleur développeur plus senior, ce qui est paradoxal.
Ce candidat a l’air bon mais il a bossé dans un langage/framework différent du nôtre, est-ce que ça vaut le coup de le prendre quand même ?
Comme souvent, ça dépend du contexte. Quelques erreurs courantes :
Là encore, on le redit, seule une personne technique pourra évaluer ce gap précisément.
Ce n'est pas un scoop, l’offre et la demande dans le milieu de la tech sont déséquilibrés. Les développeurs, même en poste, reçoivent de nombreuses offres par tout un tas de chasseurs en permanence.
A ce titre, vous devez encore plus que dans un autre job, tout faire pour être séduisant, et vous devez proposer une certaine symétrie dans l’entretien, en acceptant d’être challengé autant que vous le faites, d’être questionné autant que vous le faites, etc.
Vous voyez ce genre d’entretien où le recruteur pense que le seul but de l’entretien est de tester le candidat ? N’oubliez pas que ça va toujours dans les deux sens : vous devez montrer votre valeur au candidat vous aussi.
Et cela ne consiste pas à décrire l’entreprise de la même manière platonique à tout le monde. Vous devez écouter activement les traits du candidat et rebondir dessus pour affirmer pourquoi votre entreprise est parfaite pour lui.
A part si vous êtes une entreprise extraordinaire avec un poste et un salaire de rêve, vous allez devoir convaincre vous aussi !
Cela rejoint le point précédent, mais il est pénible de ne pas savoir quelles vont être les étapes, pas savoir combien de temps ça dure. Dites vous que rien qu'une mauvaise annonce, peut vous faire perdre la majorité des candidatures.
Il existe mille et une manières de faire un test technique :
faire un test de code en live sur un tableau ?
proposer un projet à faire à la maison ?
proposer à un dev de passer une demi-journée payée dans votre équipe ?
Tous les types de tests ont pour vous, leurs avantages et inconvénients. Mais ce qui est certain, c’est que le candidat aura forcément une préférence.
A titre personnel, je sais que je suis incapable de réfléchir correctement debout à un tableau avec quelqu’un qui me regarde. Et je n’y vois rien de surprenant, j’étais toujours stressé de passer au tableau à l’école. Mais ça ne pose aucun problème à d’autres candidats, pour qui ces conditions n’ajoutent aucun stress. Je préfère largement prendre le temps qu’il faut chez moi à coder tranquillement un truc au top, alors que d’autres candidats ne souhaiteront pas passer trop de temps à travailler pour un poste qu’ils ne sont pas certains d’obtenir, ce qui est tout à fait compréhensible.
Sachant ces différences, pourquoi alors ne pas plutôt laisser le candidat choisir ? Le risque à ne pas le faire, est que ce candidat refuse le test, ou l'accepte et le rate, non pas parce que le candidat ne convient pas, mais parce que le test ne lui convient pas.
Peu importe le métier que nous sommes amenés à faire, je suis persuadé que la communication est toute aussi primordiale que les compétences techniques. Le développement n’échappe pas à la règle, sous prétexte que le développeur est plus souvent derrière son ordi que devant un client.
En effet, combien de temps est perdu parce qu’un développeur n’arrive pas à s’exprimer clairement auprès d’un collègue, à vulgariser un concept technique auprès de personnes non techniques, ne sait pas quelles informations doivent être distribuées au bon moment, ne sait pas ordonner ou documenter son travail, préfère faire qu’expliquer, … etc ?
Et pourtant, vous allez faire passer moulte tests sur le code et laisser de côtés des soft skills tous aussi importants.
Malgré toutes les qualités et la malice d’un recruteur, il me semble très difficile de détecter les défauts (techniques ou humains) d’un candidat. Or, il y a deux types de candidats :
Si on prend l’analogie des apps de rencontres, vous auriez deux types de profils Tinder :
Pour reprendre l'analogique des apps de rencontre, l’entretien c’est comme un date, si l’un est trop timide et ne parle pas, il faut que l’autre le mette en confiance, et pose les bonnes questions pour l’amener à le faire parler, sinon l’entretien risque d’être ennuyeux à mourir.
Si le candidat est peu bavard, et que le recruteur ne pose pas de questions pertinentes, ne rebondit pas, alors l’entretien va être inintéressant. Le match risque de ne pas se faire, non pas à cause du candidat lui-même, mais à cause de l'incapacité des protagonistes à rendre cet entretien riche.
Il y a plein de développeurs peu expansifs en entretien, qui sont bons par ailleurs dans leur domaine de compétence. Mais en s'arrêtant à ça, vous risquez alors de passer à côté d’une perle, juste parce que l’entretien aura été pauvre.
Mener un entretien à la perfection semble être une tâche bien plus difficile qu'il n'y parait. Sans même avoir la moindre expertise dans se secteur, on se rend compte à quel point il est facile de faire des erreurs et de passer à côté d'un entretien réussi.
Les lectures et retours d'expériences, à la fois de recruteurs et de candidats sont des mines d'or d'apprentissage, et ont d'ailleurs été un gros complément de mon expérience pour pouvoir écrire cet article.
Quoi qu'il en soit, ne prenez pas un candidat en ayant des doutes sur lui, en laissant la période d'essai remplacer le rôle de l'entretien. Vous perdriez un temps précieux.
Parce qu'en effet, avec ce rapport de force dans le recrutement en faveur des développeurs, et après plusieurs tentatives infructueuses, il peut être tentant de revoir ses exigences à la baisse.
Un dicton que j’aime bien dans le recrutement, c’est que pour le choix d’un candidat à l'issue d'un entretien :
it’s a FUCK YES, or it’s a no
En effet, si vous pensez avoir réalisé votre recrutement exactement comme il le fallait, mais qu’à l’issue de celui-ci vous avez toujours des gros doutes sur le candidat, c’est ce que ce n’est pas le bon ! Tout simplement.
Bon courage à tous les recruteurs pour trouver leur perle rare 😇