Comment l’IA m’a ramené à mes 101 compétences de développeur / Perficient

Oui, la vague de l’IA m’a ramené à une période difficile de ma carrière. Cela m’a ramené à l’époque de mon développeur junior, où je ne connaissais pas grand-chose à l’architecture logicielle, aux meilleures pratiques ou à la résolution des problèmes de performances. Après environ 7 ou 8 ans, ce sentiment d’incertitude est revenu. Je ne savais pas par où commencer ni où trouver des informations et, plus important encore, je manquais du soutien de mes collègues, dont beaucoup avaient déjà fait face aux défis des développeurs juniors. La vague de développement de l’IA ressemblait étrangement à cette époque. Heureusement, j’avais déjà été dans de telles situations et mon expérience en tant que développeur senior doté de compétences en leadership m’a grandement aidé.
Au lieu d’être une recrue, j’ai désormais dirigé une équipe de stagiaires dans ce nouveau monde axé sur l’IA. Après des mois de recherches approfondies sur les technologies d’IA en évolution rapide – qui éclataient comme du pop-corn chaque jour – nous avons finalement construit une base solide. Cependant, nous avions toujours besoin de cas d’utilisation réels, et pas seulement d’idées abstraites qui ne menaient nulle part.
Rassembler toutes les pièces
Une fois que nous avons développé ce que je considère comme une solide compréhension des capacités de l’IA, nous avons commencé à collaborer étroitement avec les chefs de projet et les parties prenantes. Nous fixons des objectifs et des tâches réalistes mais quelque peu ambitieux. En nous appuyant sur mes expériences avec le projet actuel, nous avons trouvé un problème sur lequel l’IA pourrait fonctionner. Notre équipe Talent Fulfilment avait eu du mal à trouver le candidat idéal lorsqu’un client demandait une ressource. Comme vous le savez peut-être, Perficient est une société de conseil dont le modèle commercial vise à faire correspondre le meilleur candidat avec le meilleur client le plus rapidement possible.
Notre situation actuelle et destination souhaitée
Situation actuelle
Pendant des années, nous nous sommes appuyés sur notre outil de recherche maison à l’ancienne pour trouver la meilleure solution pour le poste d’un client. Les utilisateurs ont saisi des mots-clés tels que technologies, certifications ou tout autre terme pertinent dans la barre de recherche. Cette recherche a parcouru les CV de nos employés dans notre base de données, après avoir récupéré les résultats, nous avons utilisé un algorithme simple pour les trier. Les employés ayant le plus de correspondances dans leur domaine d’expérience professionnelle ont eu la priorité, suivis par ceux ayant une expertise dans les technologies et dans d’autres domaines de CV. Cependant, après quelques mois d’utilisation de cet outil, nous avons réalisé qu’il n’était pas idéal.
Par exemple, les résultats de la recherche manquaient d’informations sur la disponibilité des employés ou sur leurs affectations en cours. Plus important encore, l’outil avait du mal à interpréter les descriptions de poste des projets. Cela a souvent laissé notre équipe Talent Fulfilment perplexe quant à la signification des nouvelles technologies qui, dans notre secteur en évolution rapide, émergent tous les six mois, voire plus tôt.
Les années ont passé et notre équipe s’est habituée à ce moteur de recherche. Même si cette solution remplissait son objectif dans une certaine mesure, elle nécessitait néanmoins des vérifications manuelles de la disponibilité des employés et une compréhension approfondie des descriptions de poste des clients. Les descriptions de poste elles-mêmes variaient considérablement, mettant en vedette les nouvelles technologies, les fautes de frappe, les exigences en matière d’année d’expérience, les critères de compétences générales et les facteurs liés à leur langue naturelle, comme la façon dont chacun s’exprime. En conclusion, la recherche du bon candidat peut parfois prendre des jours.
Où nous voulons être
Avance rapide jusqu’en 2022, et nous avons résolu la question de la disponibilité et du statut des employés. En nous appuyant sur l’IA, nous avons commencé à trouver des solutions. Les options étaient abondantes. Nous avons tout exploré, depuis la formation de nos propres modèles basés sur des modèles existants jusqu’à l’exploration du monde des bases de données vectorielles, dont nous entendions alors parler pour la première fois. Cette étape m’a ramené à l’époque de mon développeur junior, où tout était nouveau et inconnu. De nouveaux outils d’IA surgissaient à gauche et à droite, et nous avions du mal à comprendre comment ils fonctionnaient et lesquels répondaient à nos besoins.
Après des mois de recherche et de test de divers concepts, nous avons pris la décision majeure de combiner deux technologies d’IA : les bases de données vectorielles et le modèle GPT-3.5. La partie suivante devient un peu technique, alors ne vous inquiétez pas si vous manquez un détail ou deux.
L’aspect technique
Rappelez-vous l’objectif principal : «Trouvez le meilleur candidat pour la description de poste du client le plus rapidement possible.«
Pour cette partie technique, considérons cet exemple de description de poste que l’équipe Talent Fulfilment peut recevoir :
« Salut l’équipe! Nous recherchons un développeur principal front-end JavaScrip (faute de frappe) avec plus de 5 ans d’expérience qui a dirigé et encadré des développeurs juniors et seniors. Ce candidat doit également être capable de prendre des décisions éclairées en fonction des exigences des clients et de maintenir une communication constante avec les analystes commerciaux, les propriétaires de produits et les professionnels de l’assurance qualité pour assurer la performance optimale de l’équipe. S’ils ont des connaissances en bases de données relationnelles et ont travaillé avec React ou Vue.js comme framework front-end, ce serait un plus.
Analysons cette description de poste. Comme vous pouvez le voir:
- Il contient des erreurs de grammaire.
- Il est écrit en langage naturel.
- Il mentionne plusieurs technologies.
Imaginez maintenant l’équipe Talent Fulfilment essayant de rechercher un candidat pour ce poste. Il leur faudrait d’abord identifier les technologies. Supposons qu’ils puissent extraire les termes « JavaScrip » (avec une faute de frappe), « React », « Vue.js » et « Base de données relationnelle » du texte. Après avoir copié et collé ces mots-clés dans notre outil de recherche actuel et exécuté la recherche, les résultats peuvent donner un bon candidat. Cependant, il n’est pas garanti qu’il soit le meilleur.
Premièrement, il y a le problème de la recherche de développeurs manquant avec des compétences « JavaScrip » en raison d’une faute de frappe. Deuxièmement, de nombreux candidats n’incluent pas le terme « base de données relationnelle » sur leur curriculum vitae ; à la place, ils mentionnent « SQL » ou « MySQL ». Par conséquent, la recherche risque de ne pas fournir les meilleurs résultats.
En conclusion, l’exécution de la recherche peut donner des résultats, mais elle ne garantit pas forcément les meilleurs candidats. La recherche pourrait manquer des candidats potentiels en raison de fautes d’orthographe. De plus, de nombreux candidats utilisent des termes différents, tels que « SQL » ou « MySQL », au lieu de « Base de données relationnelle » dans leur CV.
Voyons maintenant la nouvelle solution :
- Les utilisateurs n’ont plus besoin d’extraire des mots-clés de la description de poste ; il leur suffit de copier et coller l’intégralité de la description de poste. La recherche AI s’occupera du reste.
- Avec les bases de données vectorielles, l’IA comprend mieux le contexte et fournit de meilleurs résultats. Il prend en compte des années d’expérience, des compétences telles que « diriger et mentorer » et des aspects plus complexes.
- Ce système d’IA doté de bases de données vectorielles peut identifier les fautes de frappe et effectuer des correspondances plus précises. Par exemple, même si la description de poste indique « Javascrip » avec une faute de frappe, la recherche trouvera « JavaScript ».
- Enfin, avec le modèle GPT, nous pouvons fournir des résultats plus complets, notamment un aperçu de chaque employé qui apparaît dans les résultats finaux.
Comment nous avons développé cette solution (petit schéma à la fin)
- Nous avons commencé par créer nos bases de données vectorielles en utilisant les informations existantes dont nous disposions. Un vecteur représente la manière dont un ordinateur peut comprendre le langage naturel ou tout type de texte avec son contexte (il peut également comprendre l’audio et les images). Si vous voulez voir à quoi cela pourrait ressembler, considérez ce texte : « Un développeur ayant de l’expérience dans la prise de décisions en équipe et l’encadrement des développeurs dans la partie frontale du projet. » Sous forme vectorielle, cela pourrait ressembler à ceci : [-12341, 0.412341, 5132.15412, 1.45123, -0.5123123]avec beaucoup plus de nombres, généralement jusqu’à environ 1 300 dimensions.
- Comment créons-nous ces représentations vectorielles du texte ? Nous utilisons le modèle ADA GPT 3.5, qui est un modèle pré-entraîné par OpenAI. En termes techniques, nous avons un code Python qui utilise la fonction d’intégration. Pour chaque section du CV d’un employé qui a un contexte, comme la description de poste, nous exécutons cette fonction et l’enregistrons en tant que vecteur.
- Le résultat est un fichier JSON pour le CV de chaque employé, comprenant du texte normal et des vecteurs. Imaginez le CV d’un développeur, qui contient des certifications, des technologies ou des compétences ; ces sections restent sous forme de texte normal. Nous vectorisons uniquement les sections contextuelles, telles que les descriptions de poste et les expériences.
- Ensuite, nous téléchargeons ces nouveaux fichiers JSON dans un index, qui est une « table » de paire clé-valeur stockée dans la Recherche cognitive Azure. Cet index sert de moteur de recherche principal et où nous exécutons toutes nos requêtes. Pour vous donner une idée de l’avant-garde de notre technologie, Azure a introduit la possibilité de stocker des bases de données vectorielles en juin 2023.
- Dans la dernière étape, nous exécutons la requête. Parce que nous interrogeons un index avec des champs vectorisés, nous devons d’abord convertir notre texte de requête brut en vecteurs. Grâce à la puissance de la recherche cognitive Azure, nous effectuons une recherche hybride. Il effectue initialement une recherche par mot-clé traditionnelle en texte brut. Par la suite, il effectue une recherche vectorisée, suivie d’algorithmes qui fournissent les meilleurs résultats possibles. Et voilà!
En conclusion
Oui, cela faisait un moment que je n’avais pas ressenti ce niveau d’incertitude, ne sachant pas à quoi m’attendre ni si nous pouvions répondre ne serait-ce qu’aux attentes de base. Mais avec mes années d’expérience, je peux affirmer avec confiance que j’ai abordé ces nouveaux défis plus efficacement (évidemment haha), grâce au soutien de mon équipe. Je dois souligner que les principales forces de mon équipe sont des stagiaires dotés d’un immense dévouement, et ce voyage n’aurait pas été possible sans leur travail acharné. Nous apprenons de nouvelles choses semaine après semaine et affinons continuellement nos résultats de recherche. En même temps, nous avons réalisé que notre approche des solutions n’est pas la seule ni la meilleure, mais celle qui convient le mieux à l’heure actuelle. Dans cet état d’esprit, nous sommes bien conscients qu’il y a toujours place à l’amélioration. Cela a été une aventure incroyable et, d’après ce que je peux voir, elle est loin d’être terminée. Nous attendons désormais avec impatience les commentaires de notre équipe Talent Fulfilment. Cet outil a été conçu pour les aider et améliorer leur travail, et j’ai hâte d’entendre leurs commentaires et de m’efforcer de fournir un meilleur produit à chaque version.
Si vous avez lu l’intégralité de cet article, je l’apprécie vraiment et si vous avez des questions plus techniques ou non techniques, n’hésitez pas à me contacter. Je serai plus qu’heureux de fournir une explication plus approfondie.
Source link