- Selon une étude récente, lorsque des développeurs open source utilisent des outils d’IA sur une base de code qu’ils connaissent bien, leur temps de travail augmente en réalité de 19 %
- Les développeurs croient que l’IA les rend plus rapides, mais en pratique ils deviennent plus lents : il existe donc un écart entre la perception et la réalité
- La cause principale réside dans les limites du transfert de connaissances entre l’IA et le modèle mental sophistiqué (structure de compréhension) que possède le développeur
- Selon la théorie de Peter Naur, l’élément le plus important en programmation est le « modèle mental » dans la tête du développeur
- Pionnier danois de l’informatique et lauréat du prix Turing 2005. Il a contribué à la notation Backus-Naur Form (BNF) utilisée pour décrire la syntaxe des langages de programmation
- Dans une perspective de long terme, comprendre un projet en profondeur suppose de construire un modèle mental en écrivant soi-même du code
Pourquoi l’IA ralentit les développeurs open source
- Selon l’étude de Metr, l’utilisation d’outils d’IA a au contraire produit un résultat où la résolution de problèmes était 19 % plus lente
- Avant de commencer, les développeurs s’attendaient à ce que l’IA les aide à aller 24 % plus vite et, après coup, ils pensaient encore avoir été 20 % plus rapides qu’en réalité
- L’étude a été menée auprès de développeurs expérimentés gérant directement des projets open source qu’ils comprennent en profondeur
- Le résultat ne se généralise pas forcément à tous les développeurs, mais il montre que, pour ce groupe, les outils d’IA ont un effet inverse sur la productivité
- En entreprise, ou pour des développeurs plus classiques qui doivent s’adapter à une nouvelle base de code, les outils d’IA peuvent jouer un rôle plus positif sur la productivité
Pourquoi l’IA ralentit les développeurs open source expérimentés
- Selon l’article de Peter Naur, “Programming as Theory Building”, le véritable produit de la programmation n’est pas le code, mais le “modèle mental du développeur à propos du projet”
- Ce modèle mental est au cœur de la compréhension du système, du diagnostic des problèmes et des améliorations efficaces
- Les IA fondées sur les LLM ne peuvent pas accéder directement au modèle mental du développeur et, même lorsqu’on leur fournit une partie des informations, il se produit une perte intrinsèque dans le processus de transfert des connaissances
- Par exemple, lorsqu’on demande à quelqu’un d’endormir un bébé, on a beau expliquer clairement quoi faire, l’exécution diffère souvent de l’intention initiale
- Le transfert d’un modèle mental est extrêmement complexe, et il est presque impossible pour une IA de l’absorber uniquement à partir de texte
- Par conséquent, déléguer à l’IA du travail sur un projet que l’on comprend en profondeur peut au contraire réduire la productivité
- Les informations contextuelles riches et la compréhension intuitive du développeur ne sont pas facilement remplaçables par l’IA
Faut-il interdire les outils d’IA en entreprise ?
- Pas nécessairement. Cela concerne surtout les personnes qui travaillent sur un projet qu’elles connaissent et comprennent déjà très bien
- Dans beaucoup d’entreprises, les développeurs maintiennent du code écrit par des seniors déjà partis, ou travaillent sans comprendre en profondeur l’architecture complète du système
- Dans ce type d’environnement, l’IA peut contribuer à des gains de productivité à court terme en analysant rapidement la base de code et en générant automatiquement des modifications
- Si l’on ne considère que la production de valeur business à court terme et l’efficacité immédiate, les outils d’IA peuvent avoir un effet positif sur la productivité
Construction du modèle mental et IA
- Si l’on ne possède pas encore de modèle mental du projet, un LLM peut aider à améliorer la productivité
- Mais si l’essence du développement logiciel réside dans la construction d’un modèle mental, alors une dépendance excessive à l’IA peut affaiblir cette capacité
- À long terme, si l’on veut comprendre un projet en profondeur et le faire évoluer activement, il faut une expérience directe d’écriture du code
- À l’inverse, pour un travail consistant simplement à « faire en sorte que ça tourne », l’usage de l’IA peut être efficace
Discussion complémentaire et conclusion
- Avec les outils d’IA actuels, il est difficile d’améliorer la productivité de développeurs disposant déjà d’un modèle mental suffisamment riche
- Il reste encore de la recherche et des progrès à faire pour que l’IA soutienne correctement les modèles mentaux ou augmente de façon radicale la productivité des développeurs expérimentés
- À l’avenir, les modèles pourraient progresser au point qu’un développeur humain n’ait plus besoin de posséder lui-même un modèle mental, mais au niveau actuel, la compréhension directe et l’apprentissage restent indispensables
- En définitive, l’IA peut devenir un frein dans les environnements où l’on comprend en profondeur ce que l’on fait, et un outil de productivité dans les contextes où l’important est d’obtenir rapidement un résultat
5 commentaires
> Les développeurs pensent que l’IA les a rendus plus rapides,
comme la recherche avec l’IA s’est accélérée et permet d’obtenir une meilleure qualité, est-ce qu’au final, pour un même travail, on n’obtient pas simplement un résultat d’un niveau un peu supérieur ? Peut-être que les développeurs ont le sentiment que, pour développer en visant la qualité du résultat final, il est plus rapide d’y parvenir avec l’aide de l’IA que d’y arriver seul.
Je me dis aussi que, s’ils ne l’avaient pas utilisée dès le départ, ils auraient implémenté avec les seules connaissances qu’ils avaient déjà, et que c’est peut-être pour cela qu’on a cette impression.
> À l’inverse, pour des tâches où il s’agit simplement de « faire en sorte que ça fonctionne », utiliser l’IA peut être efficace.
Ce n’est pas propre aux développeurs, mais comme il existe des personnes aux profils très variés, j’ai l’impression que, parmi ceux qui se retrouvent développeurs un peu par hasard et qui n’aiment pas ou redoutent d’écrire ou de lire du code, plus l’état d’esprit est de privilégier le « tant que ça marche » au détriment d’une lecture structurée et systématique ou d’une vision orientée maintenance, plus la dépendance à l’IA, voire une confiance aveugle envers elle, semble forte. Enfin, c’est peut-être juste mon impression.
Mesurer l’« impact de l’IA » sur la productivité des développeurs open source expérimentés
Commentaires Hacker News
Je pense que ce billet de blog aborde de façon intéressante un facteur concret qui peut contribuer au ralentissement du développement avec l’IA.
Il y a aussi des citations de développeurs dans l’article (section C.1.5), n’hésitez pas à les consulter.
Beaucoup de gens lisent l’article, y trouvent un facteur qui leur parle, puis concluent facilement que « c’est cette seule chose qui explique le ralentissement ».
Mais en réalité, il y a plusieurs éléments en jeu (au moins 5 semblent plausibles, et jusqu’à 9 ne peuvent pas être exclus ; voir le tableau des facteurs p.11).
Une analyse multifactorielle des causes me paraît plus juste que l’hypothèse d’une cause unique.
Si certains d’entre vous comptent faire leur propre expérience, j’aimerais beaucoup que vous partagiez vos résultats à l’adresse e-mail indiquée dans l’article.
Et concernant le fait que le titre ait été formulé comme « AI slows down open source developers. Peter Naur can teach us why », je pense qu’une version plus précise serait plutôt : « Début 2025, l’IA ralentit des développeurs open source expérimentés. Peter Naur apporte davantage de contexte sur un facteur précis. »
C’est peut-être moins accrocheur, mais je pense que la précision est importante.
Merci encore pour cet excellent billet, et je continue de lire les commentaires
Discussion précédente liée
Article complet
xkcd BD sur la gestion du temps
greedy algorithm)Joel on Software: Things you should never do, part I
Une grande partie du code généré par l’IA est simplement produite, passe quelques tests basiques, puis c’est tout. On se retrouve même avec beaucoup de code dont l’auteur lui-même ne comprend pas suffisamment le contexte global ni les raisons d’être
ramp-up(montée en compétence), c’est ce qui se passe quand des développeurs open source déjà très familiers avec leur projet utilisent l’IA pour accomplir des tâches. Les LLM accélèrent clairement l’adaptation à une nouvelle base de code, mais une fois cette adaptation faite, j’ai aussi l’impression qu’ils deviennent plutôt un obstacle(voir plus en détail la section C.2.7 de l’article, « Usage des outils d’IA inférieur à la moyenne »)
thing1,thing2, etc.). En retour, j’ai suggéré d’utiliser des noms plus distinctifs. L’IA a alors donné aux variables des noms excessivement verbeux, comme si elle énumérait toutes les caractéristiques de chaque cas, si bien que le code était devenu moins lisible d’un seul coup d’œil. L’auteur a sans doute eu l’impression d’avoir considérablement accéléré l’écriture, mais en réalité tout le gain de productivité a été perdu dans le feedback, la revue et les correctionsRéférence : ancien problème de spam IA
try:catchtrop larges, ce qui rend plus difficile l’identification de la source d’un problème. Moi, je préfère que les erreurs apparaissent vite et fort (=fail fast) pour pouvoir les corriger immédiatementrace condition) dans une base de code inconnue, il est essentiel d’ajouter des logs, de remplacer des fonctions de bibliothèque, d’améliorer la structure, etc. Si l’IA se contente de répondre à court terme « c’est une condition de course ici et il faut corriger comme ça », cela peut au contraire nuire à la compréhension de la structure du code ou de sa logique. À long terme, si l’édition de code pilotée par l’IA se généralise, le code lui-même pourrait se dégrader à un point où même l’IA ne saurait plus y répondre correctementJ’avais moi aussi une idée similaire, mais j’avais du mal à la formuler.
« Modèle mental » est un nom tout à fait approprié. Je devrais l’utiliser de temps en temps.