Les algorithmes Transformers nous montrent que nous sommes sur le point d’avoir une intelligence artificielle générale, compagnon de notre everyday life du travail à la maison en passant par l’éducation des enfants. Professionnellement, c’est une vraie révolution du mot “travail” qui s’annonce car qui pourra distinguer dans le futur l’effort humain du generative token ? Si la révolution industrielle avait déjà remplacé la sueur par les carburants fossiles, c’est bien la pensée qui est aujourd’hui directement attaquée. Dans le monde du projet et en particulier l’IT, nous manipulons des idées, concepts et symboles qui seront les premiers à être dévorés par l’automatisation débridée que nous offre la famille GPT qui s’agrandit continuellement. Cette automatisation arrive tellement vite qu’il sera difficile de compter les acteurs perdus et déroutés, sans parler de ceux laissés-pour-compte dans cette transformation radicale des pratiques IT.

Il est donc urgent que tout le secteur se mette en ordre de bataille pour comprendre le sens économique et sociétal profond de cette révolution, profiter avec intelligence et responsabilité de ses avantages, et surtout se protéger des acteurs néfastes qui feront de l’IA type-GPT un fond de commerce malhonnête pour clients crédules.

Nous restons donc dans la continuation de l’article sur le manager du futur et allons à présent explorer les potentialités du développeur du futur, celui qui ne craint pas d’adopter la technologie autant pour lui que pour ses clients. Cet article est une projection de ce que deviendra le développeur dit 10x, parfois même 100x : un “AI augmented dev”, créature mythique de type mouton mille-pattes dont la productivité et la qualité de code feront de lui une perle rare capable de naviguer dans l’IT comme un poulpe dans l’océan.

Cthuhlu

Quelles sont les activités d’un développeur au quotidien ?

Il faut tout d’abord comprendre que le dev (et plus généralement, l’équipe projet) est une interface entre le monde réel et la machine. Cette interface se traduit par la transformation d’un besoin initial en un code machine adapté dans le cadre d’un projet afin de répondre à une ambition métier.

Dans le monde agile par exemple, un développeur doit, avant tout, bien comprendre et souscrire à une vision. Cette vision se traduit par un énoncé donné par un porteur métier qui fournit un cap clair moyen/long terme permettant de savoir où on va. À court terme, cette vision peut aussi se traduire par un sprint goal qu’il faut respecter dans l’intervalle de l’itération. A moyen terme, la méthodologie agile permet aux business owners d’inspecter régulièrement les livrables intermédiaires à travers les séances de rétrospective.

Un des premiers rôles du développeur est donc de garantir techniquement l’adéquation entre un besoin métier et un produit

Le développeur ne travaille que rarement seul, et cela est même considéré comme une mauvaise pratique pour des projets qui ont vocation à survivre à leur créateur. Une manière standard d’interagir avec les autres développeurs est d’utiliser Git pour le versionning du code. Git est un outil très apprécié pour partager et synchroniser du code, mais également le faire relire et valider par des personnes plus expérimentées, et, enfin, pour déployer des versions packagées cohérentes en test, recette, intégration ou production. Le développeur doit donc utiliser cet outil efficacement pour collaborer avec les personnes de son équipe, chacun selon son niveau de séniorité et de responsabilité.

L’utilisation efficace des outils de versionning par le développeur est un facteur underrated de succès des projets

Au quotidien, le développeur passe la plupart de son temps à coder sur sa machine. Sans accompagnement, les plus jeunes sont laissés à eux-mêmes devant l’incroyable richesse de langages, frameworks, méthodes et patterns possibles. Les confirmés et séniors évitent les eaux troubles en allant chercher ce qui est robuste, éprouvé et fonctionne dans le contexte, selon leur expérience et maturité. Au quotidien, le développeur va :

  • Interagir intelligemment avec des bases de données que ce soit en code ou en requête
  • Écrire du code qui suit les bons patterns (clean code) en termes de concision, d’intelligibilité etc.
  • Écrire les tests unitaires et d’intégration selon les meilleures pratiques
  • Sécuriser son code le plus possible selon ses connaissances et en s’appuyant sur des outils et acteurs spécialisés
  • Documenter intelligemment les parties qui nécessitent une capitalisation

Le développeur est responsable d’une abstraction technique qui doit être soigneusement maintenue et choyée

Enfin, le développeur est au centre de la gestion de projet car il est le principal poste de dépense humaine et la principale source d’avancement. Il est donc nécessaire pour lui de bien communiquer avec son management et son équipe afin que tout le monde soit aligné sur le projet. Dans le monde de l’IT mais pas seulement, l’outil Slack est, par exemple, utilisé comme “QG numérique” pour de nombreuses entreprises qui souhaitent faciliter la collaboration inter et intra équipe.

Une bonne communication résout de manière anticipée un grand nombre de maux. La capacité à bien communiquer et avec justesse est une qualité souvent sous-estimée dans la gestion de projet

Partant de ces caractéristiques, comment devenir un AI augmented dev ?

L’intelligence artificielle, en tant que compagnon, doit être vue (à ce stade de son développement et de son acceptation sociale) comme une sorte d’assistant encyclopédique dont l’interface est linguistique. ChatGPT, pour ne prendre que cet exemple mais il en existe d’autres, permet d’interagir avec une console de chat et répond aux questions qu’on lui pose avec précision (et parfois hallucination). Le développeur augmenté doit tirer profit de cette intelligence pour gagner du temps et en qualité dans son travail quotidien. Le 10x doit devenir un 100x une fois l’intelligence embarquée par API dans des applications spécifiques et correctement tunées.

AI is the next 100x productivity boost

Concrètement, comment cela va-t-il se traduire ? Schématisons l’écosystème du développeur et essayons de mettre le doigt sur les fonctions sur lesquelles l’IA pourrait se greffer :

AI Dev Schema

Toutes les fonctions ne seront pas soumises à une disruption immédiate, mais voici mon rough estimate personnel du niveau de transformation que chaque fonction va subir grâce aux technologies génératives :

AI Dev Schema

Prenons une par une les fonctions du développeur énoncées plus haut pour étudier leur AI-disruptability.

La capacité à écrire du code

L’un des premiers use cases techniques des algorithmes GPT a été la release en preview de Github Copilot en juin 2021 à partir de la version 3 de OpenAI GPT (GPT2 était plus ou moins aussi capable de code autocomplétion). Malgré les controverses liées au copyright de la data sur laquelle l’algorithme a été entraîné (ce qui ouvre un sujet plus vaste autour de l’utilisation de training dataset privés), l’accueil a été plutôt chaleureux et a ouvert de nombreuses questions existentielles sur le devenir du développeur.

Le principe est simple : sur la base du code qui est en train d’être écrit, l’algorithme va prédire le code suivant sur plusieurs lignes. Une façon astucieuse d’utiliser ce principe de prédiction est d’écrire un commentaire qui explique ce que le code va faire, ou d’écrire une signature de fonction explicite avec des petits exemples, et l’algorithme se charge du reste.

Example of accurate code prediction

Le développeur peut gagner fortement en productivité car les statistiques remontées par Microsoft (Github) annoncent un taux de bonne complétion de 35% pour 55% de gain de temps pour développer la même fonctionnalité.

Acceptance rate for github copilot

Le développeur corrige, contrôle et intègre et reste dans un rôle de supervision. Son existence n’est donc pas fondamentalement remise en question mais tous les développeurs n’ont pas tous le recul pour adopter cette posture.

Le persona qu’il représente dans l’étude précédente de Github, déclare qu’il conserve son énergie mentale et peut se focaliser sur les aspects importants et complexes du design de son code. Copilot ne prend pas de casquette architecte technique, n’a pas connaissance de l’ensemble de la base de code du projet dans le contexte d’une requête (c’est une limitation technique de ce type de modèle GPT stateless) et ne sait pas interpréter directement des besoins métiers, il n’est qu’accélérateur de code. Pour l’instant.

Github copilot wellness

Cette disruption est tellement importante que de nombreux compétiteurs se sont lancés dans des offres similaires à celle de Github. Je cite par exemple tabnine qui cherche à se distinguer par une éthique en termes d’utilisation de code non copyrighté pour l’entraintement de son modèle. Replit a sorti son modèle Ghostwriter et Amazon son modèle CodeWhisperer

Github Copilot paraît être la seule innovation GPT mature pour le développeur. Pour le reste de l’article, nous allons nous aventurer en terrain inconnu. J’illustrerai chaque point par chatGPT mais il faut retenir qu’une application spécifique avec un prompt adapté, voire même un fine tuning de modèle GPT, serait nécessaire pour parfaire les propositions.

La capacité à faire le lien entre les concepts métiers et l’output du développeur

Une des fonctionnalités intéressantes des algorithmes type chatGPT est de prendre un contexte global et de l’utiliser comme grille d’analyse d’un autre élément. L’exemple typique est le cas des prompts de personnalités : on donne au chatbot une identité par le prisme de laquelle il va ensuite interagir avec l’utilisateur, le conseiller et même le corriger. Le lien entre le métier et le code est en général fait à travers la vision, le backlog (epics, user stories), les reviews métiers régulières et les tests fonctionnels.

Déléguons tout ce travail à l’IA :

  • L’IA peut comprendre et interpréter une vision et décliner l’ensemble du backlog selon sa compréhension du contexte additionné de sa base de connaissance de cas d’usages similaires. Bien que cela ne soit pas le travail explicite du développeur, celui-ci est souvent mis à contribution pour discuter et refiner le backlog au fur et à mesure de l’apprentissage de toute la team sur le produit

Vision To Epics/User Stories

  • En partant de la vision mais en y ajoutant le backlog, l’IA dispose de quasiment tous les éléments fonctionnels pour drafter et faire évoluer du code.

Il est aussi possible de générer des patterns d’architecture type à respecter, des modèles de base de données et des tests fonctionnels :

Pour l’architecture

Architectural patterns

Architectural UML patterns

Pour le modèle en base de données

Database Model

Pour la génération de requêtes SQL à partir de texte (ici la start-up text2sql.ai)

Text-to-sql

  • L’IA peut aussi s’attaquer au versioning à travers la collaboration entre développeurs. La librairie commitgpt, par exemple, s’occupe de produire le message d’un commit sur la base des changements qu’il inclut :

Commit message GPT

  • De la même manière qu’on génère un message de commit, il est possible de demander aux algorithmes GPT un résumé plus ou moins détaillé des changements qui ont été impactés par un commit :

Commit summary GPT

  • Pour l’analyse sécurité du code, la start-up Bito utilise déjà chatGPT pour de nombreux cas d’usage dont ceux de faire de l’analyse de vulnérabilités :

Code Vulnerabilities check

  • Enfin, pour toute la partie management, tech leading et mentoring, il est dorénavant intéressant de compléter les pratiques usuelles avec les fonctionnalités conversationnelles des chatbots de type GPT pour simuler une discussion permettant au moins un minimum de remontée d’information structurée du développeur vers le chef de projet/manager/mentor/tech lead, et peut-être dans certains cas, un retour d’information précieux :

Pour la remontée d’information vers les managers, il est possible de simuler les one-on-one meetings :

One-on-one meeting

Toute la difficulté est d’utiliser la conversation à des fins d’analyse tout en respectant la confidentialité des échanges. L’objectif de ce type de bots est d’apporter une oreille attentive et bienveillante qui pourra activer les bonnes escalades si nécessaire. Disposer d’un bot totalement au courant du contexte projet est difficile étant donné les limitations techniques appliquées à ces algorithmes (ils sont sans mémoire), mais un prompt bien étudié devrait permettre d’apporter une aide précieuse bien que générique.

Je n’ai pas illustré tous les exemples du schéma (notamment autour de la gestion humaine) mais tous me semblent atteignables et permettront au développeur et à son écosystème de gagner du temps, de se sentir mieux et d’être, in fine, plus productif.

AI augmented dev

Perspectives

L’accélération exponentielle du développement des algorithmes GPT, rattrapée par l’open source avec un délai de quelques mois, montre que le monde bascule dans une zone de changement permanent, de turbulence systémique issue de la compétition acharnée que se font les grands acteurs de la data et de l’IA. Cette turbulence est positive car elle peut déboucher sur des nouveaux gains de productivité, qui, si leur richesse est bien distribuée, peut profiter à tous. Mais elle est aussi destructrice d’emploi car rapide et imprévisible. Je passe, évidemment, les sujets éthiques sur ces algorithmes black box qui seront bientôt dans les poches de nos médecins, enseignants, dirigeants et enfants. Il faut donc rester vigilant quant à la direction que prendront d’une part les modèles eux-mêmes (car ils sont entraînés et “améliorés” régulièrement pour enlever les “biais”), mais aussi d’autre part de l’émergence de nouveaux modèles voire de nouvelles architectures qui iront chercher à atteindre le graal de l’Intelligence Artificielle Générale (AGI).

Conclusion

Les nouveaux modèles GPT ouvrent enfin la voie de la généralisation de l’utilisation de formes d’intelligence artificielle dans tous les secteurs où la touche humaine était indispensable. La première révolution industrielle a disrupté le muscle du travailleur, la révolution IA s’attaque de plein front au cerveau humain.

Pour le développeur qui navigue entre le métier, le management et la machine, c’est une occasion en or de gagner en efficience dans ses relations sans pour autant trop perdre en humanité. Disposer d’un AI-compagnon avec lequel il peut dialoguer régulièrement autour du code, mais également à propos des autres interfaces humaines, permettra à tous un gain en valeur projet et métier très important. Il reste à voir comment cela va se structurer dans le futur en tenant compte de l’acceptabilité sociale et individuelle d’une IA de plus en plus impliquée dans nos vies.

Pour les professionnels de l’IT côté client et prestataire, c’est la grande et légitime remise en question. Qu’est-ce que le travail humain utile et quelle est, dans ce contexte, la vraie contribution du cerveau humain à la valeur business que je veux générer ? Comment contribuer à la transformation sans s’embourber dans ce qui aurait pu être automatisé ? Il semble donc que la vraie bataille se situe à présent dans notre capacité à poser ce type de question pour ensuite y répondre de manière apaisée.

Note importante

Cet article est garanti 100% humain, GPT-free. ChatGPT n’a été utilisé que pour les illustrations de conversations, MidJourney a été utilisé pour l’illustration précédente du “AI Augmented dev”. Et si vous êtes un techos et que ce type de thématique vous intéresse, travaillons et craquons ces sujets ensemble.