À force de surfer sur les articles qui parlent de vibe coding, je commence à me faire une idée plus précise de l'impact des IA sur le développement logiciel. Et j'en suis maintenant certain: Cela ne va pas remplacer les développeurs. Certes tant que la vague de la hype n'est pas retombée, ça va nous impacter et bien bien nous faire chier. Mais ça ne va pas nous remplacer.
Voici - en l'état actuel des capacités de ces IA - pourquoi je pense que ce n'est pas une menace à long terme :
- Les IA de développement n'ont qu'un niveau junior... et encore ! Il faut les corriger sans cesse, modifier sans cesse les directives pour obtenir quelque chose de correct. Au point où certain en sont à leur dire "c'est pas ça, essaie encore" jusqu'à obtenir quelque chose de correcte. En gros, lancer des dés jusqu'à ce que le résultat soit satisfaisant.
- Les développeurs seniors sont *indispensables* pour contrôler le code produit par les IAs. Donc au mieux les IA vont remplacer les dévs junior. Mais on obtient pas de devs seniors sans avoir d'abord des juniors. On risque donc de "perdre" une génération entière de futurs devs seniors. Le recrutement pose déjà des problèmes en informatique, cela va aggraver la situation des entreprises.
- Il semble qu'au-delà d'un certain niveau de complexité, les capacités de "raisonnement" (notez les guillemets) des IAs s'effondrent. Donc elle est bonne pour comprendre une unité de code de taille limitée, mais sur une grosse base de code (typiquement le genre qu'on trouve en entreprise) soit elle fait de la merde soit elle cesse tout simplement de fonctionner.
- L'IA ne comprend pas votre métier et toutes ses subtilités. Pondre du code, c'est une toute petite partie du métier de développeur. Il faut être capable de discuter avec les utilisateurs et écrire une spécification fonctionnelle, coordonner les équipes, conduire des séances de tests techniques et fonctionnels avec différents intervenants du client, s'occuper de la recette, de la mise en prod, du suivi de mise en prod, du support client, de la gestion des tickets, des remontées à la hiérarchie sur l'avancement des projets, répondre aux demandes des clients (téléphone, mail, messageries, tickets), faire du partage de connaissance et des retex, faire de la reprise de données en masse, de l'injection de référentiels, déboguer du code (parfois en prod), investiguer sur des problèmes de cohérence de bases de données, gérer les particularités de l'architecture logicielle de votre solution... l'IA est incapable de faire toutes ces choses, ni de les comprendre, et encore moins de prendre en compte des myriades de petites spécificités et contraintes de votre métier dans l'écriture du code.
- Quand on a de la bouteille dans le métier, on sait que comprendre un bout de code écrit par quelqu'un d'autre prend *toujours* plus de temps que l'écrire soi-même. Quand vous codez avec une IA, c'est l'IA qui écrit le code et vous le passez en revue. Le gain de temps à l'écriture du code est probablement perdu par le temps nécessaire à comprendre tout le code. (à ajouter au fait que vous ne maîtrisez plus trop l'archi logicielle pondue par l'IA, mais que vous subissez ses choix).
- Les IAs sont incapables de respecter les bonnes pratiques de code (injection SQL, dépassements de buffers, faire une bonne gestion d'erreur, éviter d'écrire des données sensibles dans les logs, respecter les standards de code de l'entreprise, etc.)... à tel point que certains appellent ces IAs de manière humoristique: "Vulnerability as a service".
- Elles inventent des choses qui n'existent pas. Ce qui inclue l'import de packages qui n'existent pas. Ce qui introduit des risques de sécurité. (cf.
https://sebsauvage.net/links/?PrXsuw)
- Elles ont tendance à multiplier les dépendances (import d'un grand nombre de packages) pour résoudre un problème.
- Les IA ne savent pas respecter les licences, et ne sont d'ailleurs même pas capables de citer leurs sources. Utiliser du code produit par une IA peut juridiquement vous mettre en danger (copie de code sans respect de la licence).
- Qu'on le veuille ou non, créer du code est quelque chose qui est, pour le développeur, intellectuellement extrêmement plaisant. Avec l'IA vous retirez ce plaisir au développeur et le remplacez par un donneur d'instructions. "Fais ça. Non comme ça. Non pas ça c'est pas bon, fais-le comme ça. Recommence c'est pas bon. Cette partie-là ne fonctionne pas." C'est fantastiquement chiant, en fait. Vous allez démotiver vos développeurs.
- Les IAs, avec leur puissance actuelle, ne sont pas rentables (
https://sebsauvage.net/links/?ROk7Vw). Or pour que l'AI de développement soit une menace, il faut qu'elle soit beaucoup plus puissante. Visiblement la seule manière qu'ils ont de les améliorer, c'est d'utiliser des modèles toujours plus grands, avec toujours plus de puissance de calcul, encore plus consommateurs de ressources. Ce qui n'est pas économiquement tenable pour les boîtes qui vendents de l'IA. (Rappel : ChatGPT perd de l'argent, très vite, même sur les abonnements à 80 dollars par mois (!)). Quand tout l'argent des investisseurs sera cramé, le prix de ces IA va monter en flèche, et encore : Pour les boîtes qui n'auront pas mis la clé sous la porte.
- Pour avoir une bonne IA, il faut de bonnes données d'entraînement. Or ces IAs ont été entraînées sur tout ce qui traînait sur internet (dont un certain paquet de mauvaises choses, d'ailleurs). Mais maintenant qu'internet lui-même est inondé d'articles produit par des IAs, elles vont bouffer leur propre merde. D'après de multiples observateurs, on peut déjà constater une dégradation des modèles.
Donc oui, tant que la hype est haute, elles vont avoir un impact économique direct sur les développeurs. Développeurs qui vont voir leur métier se dégrader et devenir chiant. Mais je prédis une volonté de retour aux compétences humaines au bout d'un moment. Mais cela risque de prendre quelques années. 😩