À la recherche de l'élite - Trouver et embaucher les meilleurs développeurs de logiciels de l'industrie

Publié: 2022-03-11

Le défi

Embaucher des développeurs de logiciels peut souvent être une tâche ardue avec le monde entier comme vivier de talents.

L'embauche de talents en développement de logiciels - de vrais talents - est une compétence à multiples facettes qui se situe au carrefour des réseaux sociaux, de la perspicacité technique, de la gestion des processus et de l'intuition. Quiconque a déjà eu la responsabilité d'embaucher comprend très bien l'étendue et la profondeur du défi d'embauche.

L'embauche de talents est une compétence à multiples facettes qui se situe au carrefour des réseaux sociaux, de la perspicacité technique, de la gestion des processus et de l'intuition.

Le fait que les qualités distinctives des candidats exceptionnels en génie logiciel sont extrêmement difficiles à évaluer est particulièrement difficile. Comment explorez-vous la capacité d'un candidat à innover et à penser de manière créative ? Comment déterminez-vous s'il est un joueur d'équipe? Comment diagnostiquez-vous sa capacité à accepter des commentaires constructifs ? Comment enquêter sur la fibre morale de quelqu'un ?

Bien que l'évaluation de ces critères « souples » ne soit pas une tâche facile, cela est essentiel dans sa quête pour embaucher les meilleurs. Pourtant, trop souvent, les tentatives d'évaluation de ces attributs cruciaux, mais insaisissables, consistent en des questions ou des défis suffisamment transparents pour que les «bonnes» réponses soient évidentes pour la plupart des candidats. Ainsi, rien de substantiel n'est obtenu en leur demandant.

Un écueil courant qui en résulte est de se concentrer trop sur les détails techniques, plutôt que d'évaluer la capacité du candidat à résoudre des problèmes, à penser de manière créative et à travailler de manière compatible avec le reste de l'équipe.

Un écueil courant consiste à trop se concentrer sur les détails techniques.

Certes, interviewer et embaucher efficacement des développeurs de logiciels avancés relève autant de l'art que de la science. Néanmoins, des approches et des méthodologies existent pour évaluer les dimensions plus subtiles des compétences et des capacités d'un ingénieur logiciel.

Lorsqu'elles sont utilisées collectivement, ces techniques de recrutement donnent un processus de sélection très efficace avec une expérience éprouvée de succès pour l'embauche de talents de programmation salariés ou indépendants. Ce processus est l'objet de cet article.

Premiers pas : remplir le pipeline avec les meilleurs

Le processus de recherche et d'embauche de l'élite commence bien avant l'entretien lui-même. En fait, une approche systématique pour identifier correctement les candidats potentiellement qualifiés peut rationaliser et augmenter considérablement l'efficacité de l'ensemble de votre processus de recrutement.

Remplir le pipeline d'embauche de talents en développement de logiciels est essentiel pour recruter les meilleurs.

Sans aucun doute, la meilleure source de candidats qualifiés est le réseautage personnel, car les personnes de qualité ont tendance à s'associer à des personnes de qualité. Les références personnelles dominent en tant que source la plus productive pour les nouvelles recrues réussies (source).

Parmi les autres sources précieuses de talents techniques de premier ordre, citons :

La beauté de ces ressources est qu'elles fournissent des candidats que vous avez sélectionnés, d'une manière ou d'une autre, avant même de les interviewer.
  • Blogs et publications techniques en ligne. Les blogs de développeurs peuvent être une excellente source de candidats solides. Les postes techniques fournissent souvent des informations précieuses sur le sens technique d'un développeur, son approche de la résolution de problèmes et ses compétences en rédaction, qui sont tous des critères importants pour identifier les meilleurs candidats.
  • Contributeurs de code open source. L'examen de projets open source sur des sites tels que GitHub et SourceForge peut générer des candidats hautement qualifiés. Un avantage supplémentaire de cette approche est qu'elle vous permet de voir et d'évaluer les exemples de code d'un candidat avant même de décider de prendre contact.
  • Conférences. Les conférenciers et co-participants aux conférences techniques pertinentes constituent souvent une ressource précieuse pour les candidats qualifiés. Si vous ne pouvez pas y assister, consultez le programme en ligne et envisagez de contacter les présentateurs. Il se peut que vous les contactiez « au bon moment », ou qu'ils soient en mesure de vous référer à quelqu'un d'autre hautement qualifié.

La beauté de ces ressources est qu'elles fournissent des candidats ingénieurs que vous avez sélectionnés, d'une manière ou d'une autre, avant même de les interviewer. Soit quelqu'un dans votre entreprise, soit quelqu'un que vous connaissez, les connaît et les recommande fortement. Ou vous avez examiné leur code open source et en êtes dûment impressionné. Ou leurs articles de blog suggèrent un niveau mature d'expertise technique et de compréhension (et idéalement même un sens de l'humour :-) ). La clé ici est qu'au moment où vous établissez le contact, le candidat est déjà bien plus qu'un "juste un autre CV".

En outre, envisagez d'utiliser des modèles de description de poste (comme ceux-ci pour le référencement, le développement Web frontal et le développement Web principal) qui définissent une attente élevée pour les types de candidats que vous souhaitez.

Évaluation du sens technique des développeurs de logiciels

Une détermination efficace de la compétence technique va bien au-delà des nuances d'un langage de programmation ou d'une technologie spécifique. Bien que ces détails techniques ne doivent certainement pas être ignorés, ils ne constituent généralement pas l'élément le plus important du processus d'évaluation.

Une détermination efficace de la compétence technique va bien au-delà des nuances d'un langage de programmation ou d'une technologie spécifique...
Ce sont la force et la compréhension techniques fondamentales du candidat, sa pensée créative et sa résolution de problèmes qui sont essentielles à évaluer.

Les meilleurs développeurs ne perdent pas de temps à mémoriser ce qui peut facilement être trouvé dans une spécification de langage ou un document d'API. De plus, apprendre un nouveau langage, une nouvelle technologie ou un nouveau modèle de conception est un exercice relativement trivial pour un développeur fort (et est en fait une compétence essentielle étant donné le rythme accéléré auquel les nouvelles technologies sont introduites et gagnent des parts de marché). Ce sont donc la force et la compréhension techniques fondamentales du candidat, sa pensée créative et sa capacité à résoudre des problèmes qui sont essentielles à évaluer.

Une méthode éprouvée pour y parvenir consiste à poser un défi de programmation sans contrainte de langage . Présentez un problème au candidat et demandez-lui de coder une solution dans la langue de son choix. Les seules exigences doivent être que la solution soit complète et correcte, y compris le traitement des conditions de bord ou des erreurs potentielles. N'oubliez pas que l'objectif ici est d'évaluer (a) la capacité du candidat à résoudre des problèmes, (b) ses connaissances en informatique et (c) son style de codage. Vous n'évaluez pas à ce stade l'aptitude dans un langage de programmation spécifique. (Incidemment, un avantage supplémentaire de cette approche est qu'elle évite de demander à l'intervieweur d'être un expert dans la langue dans laquelle le candidat code.)

Il existe de nombreuses ressources en ligne à partir desquelles vous pouvez sélectionner de tels défis de programmation à intégrer dans votre processus d'entretien. Ceux qui se concentrent sur les algorithmes (plutôt que sur la connaissance d'un langage de programmation spécifique) facilitent l'évaluation des bases informatiques d'un candidat et de ses capacités de résolution de problèmes. Quelques exemples notables incluent hackerrank.com, projecteuler.net et beatmycode.com. Gardez à l'esprit, cependant, que vous n'avez pas besoin d'utiliser ces sites pour administrer les tests ; vous pouvez plutôt les utiliser simplement comme ressources à partir desquelles sélectionner des défis, puis demander au candidat de coder une solution lors de l'entretien en personne (sur un tableau blanc, etc.).

Cela dit, les tests en ligne peuvent être un élément supplémentaire précieux de votre processus d'entretien. Lors de l'utilisation de services de test en ligne, cependant, il est important d'éviter le risque de se concentrer trop sur les scores générés par le site d'un candidat plutôt que sur les spécificités de ses solutions. D'une part, vous pouvez ne pas être d'accord avec les mesures d'évaluation utilisées par le service de test. De plus, il peut y avoir des aspects d'une solution que vous considérez comme particulièrement intelligents ou élégants, dont le processus d'évaluation automatisé peut être totalement inconscient.

Lors de l'utilisation de services de test en ligne, il est important d'éviter le risque de se concentrer trop sur les scores générés par le site d'un candidat plutôt que sur les spécificités de ses solutions.

Il existe également un risque de « faux positifs » ou de « faux négatifs » avec les évaluations fournies par les services de test en ligne. D'une part, les faux positifs peuvent entraîner une perte de temps et de ressources à interroger des candidats non qualifiés, tandis que les faux négatifs peuvent disqualifier des candidats qui méritaient d'être pris en considération. À long terme, ce dernier a des ramifications plus graves et est donc quelque chose qu'il faut surveiller attentivement.

En général, les tests administrés en personne sont intrinsèquement plus fiables que ceux administrés en ligne, car ils réduisent le risque de tromperie. De plus, les tests en personne offrent la possibilité d'observer comment un candidat ingénieur logiciel fonctionne sous pression. Néanmoins, l'utilisation de services de test en ligne peut être un élément efficace du type de processus de sélection plus complet préconisé ici, qui intègre d'autres techniques pour aider à éliminer les candidats frauduleux ou sous-qualifiés.

Les tests de développement en ligne peuvent également servir de filtre préliminaire précieux pour éliminer le pourcentage incroyablement élevé de candidats dont les compétences techniques sont bien en deçà de la moyenne. Fait intéressant, beaucoup de ces candidats abandonnent le processus sans même essayer de passer les tests, en raison d'un manque de confiance. Cela dit, la confiance n'est pas toujours le meilleur baromètre de l'attitude, comme en témoigne l'effet Dunning-Kruger.

Une autre technique extrêmement utile pour évaluer la perspicacité technique consiste à demander au candidat de fournir une liste de projets open source qu'il a écrits, ou au moins auxquels il a contribué, sur des sites tels que GitHub et SourceForge (s'il n'était qu'un contributeur, demandez-lui de indiquer quelles parties du code ils ont personnellement rédigés). Vous pouvez ensuite venir à l'entretien après avoir examiné leur code, prêt à leur poser des questions sur les décisions de conception spécifiques, les styles de codage, les modèles employés, etc. Une telle discussion peut être beaucoup plus précieuse que de simplement interroger le candidat sur les détails techniques d'une langue.

En parlant de langue…

Les membres de l'élite ne sont pas seulement avertis sur le plan technologique, ce sont des professionnels du développement de logiciels accomplis qui communiquent clairement, efficacement et succinctement, à la fois verbalement et par écrit.

Les compétences en communication verbale sont faciles à évaluer au cours d'une entrevue, que ce soit en personne ou au téléphone. Bien que les compétences verbales soient certes moins critiques dans certains rôles techniques "en arrière-boutique" qui n'impliquent pas de contact avec l'utilisateur, elles sont néanmoins toujours importantes pour maximiser les interactions d'équipe efficaces et l'échange d'idées.

Les membres de l'élite sont des professionnels accomplis qui communiquent clairement, efficacement et succinctement, à la fois verbalement et par écrit.

Les compétences en communication écrite peuvent être mieux évaluées en demandant au candidat de fournir des échantillons d'écriture. Les échantillons de rédaction technique sont fortement préférés, car ils démontrent non seulement des compétences en rédaction, mais également une clarté technique. Demander ces échantillons avant l'entretien peut être particulièrement utile. D'une part, cela offre la possibilité de revoir et d'analyser leur écriture à l'avance afin que vous puissiez venir à l'entretien prêt à discuter et à critiquer leur écriture avec eux. De plus, certains candidats techniques seront « rebutés » par la demande d'échantillons d'écriture qui, en soi, peut servir de filtre précieux.

Le dilemme moral

Il y a une vieille blague à propos d'un père qui veut enseigner l'éthique à son fils. Le père dit à son fils que lui et sa compagne ont une entreprise de nettoyage à sec. Un jour, raconte le père, une cliente entre dans notre magasin pour récupérer son pressing. Alors que la cliente se retourne pour partir, je me rends compte qu'elle est surpayée de 10 dollars. OK, alors voici l'éthique… est-ce que je le dis ou je ne le dis pas à mon partenaire ? !

En revanche, les vrais dilemmes éthiques - les dilemmes moraux - peuvent souvent être obscurs et complexes et ils se présentent très certainement dans les affaires. Le développeur de logiciels le plus fort peut faire des ravages incalculables sur un projet s'il lui manque une boussole morale correctement calibrée. Cette dimension d'un candidat est donc critique à évaluer.

Le développeur de logiciels le plus fort peut faire des ravages incalculables sur un projet s'il lui manque une boussole morale correctement calibrée.

Une technique très efficace pour y parvenir consiste à présenter au candidat un dilemme moral hypothétique et à lui demander ce qu'il ferait dans la situation. Pour que cela soit efficace, il est essentiel que le dilemme n'ait pas de réponse évidente. Idéalement, toute réponse possible devrait être imparfaite et quelque peu problématique. La réponse que le candidat donne à une telle question peut donner un aperçu énorme de sa façon de penser, de ses normes éthiques et de ses priorités.

Voici un exemple :

L'entreprise pour laquelle vous travaillez a été embauchée pour travailler sur un projet par une autre entreprise. Le projet nécessite le recours à un sous-traitant particulier. Vous avez déjà travaillé pour ce sous-traitant et vous savez donc de première main qu'il augmente souvent ses heures et surfacture ses clients pour leur temps. S'ils le font sur ce projet, cependant, cela ne nuira pas à votre entreprise, car ces coûts seront répercutés sur le client de votre entreprise. Vous en avez parlé à votre patron et il vous a conseillé de ne rien dire au client, d'autant plus que la part du sous-traitant dans le projet ne représente qu'une petite fraction du budget global. Vous avez cependant un ami très proche qui travaille pour le client. Un jour, au cours d'un déjeuner, votre ami vous demande ce que vous savez de ce sous-traitant, puisqu'il sait que vous y avez travaillé. Que répondez-vous et que lui dites-vous ?

La beauté ici est qu'il n'y a pas de réponse clairement "bonne" et la situation reflète la complexité morale de la vie réelle et du monde des affaires. Si elle est posée correctement, la réponse à une telle question de "dilemme moral" peut être l'une des parties les plus révélatrices et les plus précieuses du processus d'entretien pour l'embauche de développeurs de logiciels.

Apprendre à vous connaître (Qui êtes-vous vraiment ?)

L'un des défauts inhérents au processus d'entretien est qu'il n'y a vraiment aucun moyen de savoir à quoi ressemblera le travail avec une personne tant que vous n'aurez pas réellement travaillé avec elle. Avoir une idée réaliste de la personnalité et du tempérament d'un candidat est néanmoins crucial pour une embauche réussie.

L'élite technique n'est pas seulement techniquement supérieure, elle est aussi très professionnelle. Leur recherche ne se limite donc pas à une évaluation strictement technique.

L'élite technique n'est pas seulement techniquement supérieure, elle est aussi très professionnelle.

Dans cette optique, voici quelques techniques d'entretien qui peuvent être bénéfiques pour évaluer la personnalité et le professionnalisme d'un candidat…

D'une part, envisagez de commencer intentionnellement le processus d'entretien avec une présélection par un membre du personnel non technique (comme un assistant administratif). Vous pouvez ensuite demander à ce membre du personnel comment le candidat les a traités une fois qu'ils ont réalisé qu'ils n'étaient pas techniques. Étaient-ils dégradants, impatients et condescendants, ou étaient-ils agréables, patients et respectueux ? Ce que le membre du personnel vous transmet peut être très révélateur. Vous voulez savoir si le candidat traite les autres avec respect, peu importe qui ils sont.

Tout au long de l'entretien, cherchez des occasions de fournir au candidat des commentaires constructifs. Observez attentivement la réaction que cela suscite. Les commentaires sont-ils appréciés ou le candidat semble-t-il devenir du tout sur la défensive ?

Engagez-vous dans des « bavardages » non techniques pendant les 5 ou 10 premières minutes d'un entretien afin d'obtenir un aperçu de la personnalité du candidat. Le candidat peut penser qu'il ne s'agit que d'un prélude à l'entretien proprement dit et sera donc plus enclin à « lâcher prise ». Vous pourrez ainsi discerner une quantité surprenante de leur personnalité pendant cette période. Et bien sûr, s'ils font preuve d'humour, c'est toujours bon signe. :-)

En plus de ces techniques générales d'embauche d'ingénieurs, voici quelques exemples de questions permettant d'évaluer la personnalité, la confiance, l'honnêteté et le professionnalisme d'un candidat :

  • Lorsque vous repensez à votre carrière, quelle est la situation difficile spécifique à laquelle vous avez été confrontée qui vous vient à l'esprit ? Décrivez le défi et comment vous l'avez relevé en détail. Que pensez-vous avoir particulièrement bien géré ? Que feriez-vous différemment si vous aviez l'occasion de le refaire ?
  • Quelle est la plus grosse erreur que vous pensez avoir commise dans votre carrière ?
  • Qu'est-ce qui vous plaît le plus dans le développement de logiciels ? Qu'est-ce que vous appréciez le moins ?
  • Si vous pouviez peindre la position idéale pour vous-même, quelle serait-elle ? À quoi cela ressemblerait-il en termes de rôle et de responsabilités, de taille et de type d'entreprise, d'environnement de travail, etc. ?
  • Quelles sont vos plus grandes forces? Que gagnerions-nous à vous embaucher ?
  • Aucun de nous n'est parfait. Quels sont certains aspects de votre personnalité que vous travaillez à améliorer ?
  • Si j'appelais votre patron actuel et que je lui posais des questions sur vous, que me dirait-il ?
  • De quoi devrions-nous nous préoccuper en vous embauchant ?

Collectivement, il a été prouvé que ces questions et techniques favorisent une compréhension beaucoup plus forte et plus profonde de qui est vraiment le candidat, ce qui est essentiel pour prendre une décision d'embauche réussie.

Est-ce que Feeling Mutual ?

Donc, vous avez trouvé un candidat A+. Hautement qualifiée. Personnalité positive et optimiste. Excellente adéquation culturelle. C'est génial! Mais…

Il reste encore une question cruciale à laquelle il faut répondre : dans quelle mesure le candidat est-il spécifiquement intéressé par votre poste disponible et à travailler pour votre entreprise ? La réponse à cette question est d'une importance primordiale pour assurer une embauche réussie. Les relations unilatérales ne fonctionnent pas mieux dans les affaires que dans tout autre aspect de notre vie.

Encore une fois, le simple fait de poser directement la question n'a qu'une valeur minime puisque, dans le cadre du processus d'entrevue, il faut se méfier de la franchise d'un candidat à répondre à une telle question. C'est plutôt quelque chose qu'il faut tenter de vérifier par d'autres moyens, moins directs.

Les relations unilatérales ne fonctionnent pas mieux dans les affaires que dans tout autre aspect de notre vie.

Pour commencer, la façon dont le candidat vous aborde dès le départ est un gage d'intérêt assez fiable. Le candidat offre-t-il une explication convaincante et convaincante de la raison pour laquelle il s'intéresse particulièrement à votre entreprise et à l'opportunité qui s'offre à vous ? Si tel est le cas, cela montre non seulement un réel intérêt, mais également un niveau de maturité et de sophistication professionnelles. Un tel candidat a clairement fait au moins un certain niveau de recherche préalable sur votre entreprise, et l'opportunité, avant de vous contacter (plutôt que de simplement "tester son CV autour de la ville").

Les candidats qui entrent dans le processus d'embauche d'un développeur après avoir fait leurs devoirs sur l'entreprise, ses produits ou ses services, fournissent un indicateur utile de leur intérêt et de leur savoir-faire. Les candidats qui sont allés jusqu'à faire des recherches avancées sur l'intervieweur (par exemple, lire sa biographie, son profil LinkedIn, ses articles de blog, etc.) sont particulièrement remarquables. Les candidats plus avertis se feront un devoir de révéler ces informations au cours de l'entretien. Pour les autres, de simples questions ouvertes telles que « Que savez-vous de notre entreprise ? » » et « Qu'est-ce qui vous intéresse particulièrement dans notre entreprise et ce poste ? peut susciter des réponses très révélatrices en effet.

Enfin, un candidat réellement intéressé posera probablement des questions tout au long du processus d'entretien. Néanmoins, c'est toujours une bonne idée de clôturer l'entretien en demandant si le candidat a des questions. L'absence de toute question peut être un drapeau rouge, même avec quelqu'un qui aurait autrement été considéré comme un candidat A+.

Emballer

Les techniques décrites ici peuvent servir de processus de base précieux pour trouver et embaucher des développeurs de logiciels qui sont les meilleurs du secteur. Pourtant, il est important de se rappeler qu'une embauche efficace n'est pas une destination, c'est un voyage. Il faut continuellement réévaluer et ajuster leur processus, car un processus statique est destiné à devenir un processus mort.

Une embauche efficace n'est pas une destination, c'est un voyage.

Le parcours de chaque entreprise sera différent, basé sur sa propre culture et ses priorités. Trouvez le chemin qui convient à votre organisation et exécutez-le. Vous aurez des succès et vous aurez des échecs, mais tant que vous apprendrez de ces derniers, vous pouvez être assuré que vous êtes sur la bonne voie.