IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Intelligence artificielle Discussion :

Le piège du codage par l'IA, par Chris Loy


Sujet :

Intelligence artificielle

  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    Juin 2026
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2026
    Messages : 1
    Par défaut Le piège du codage par l'IA, par Chris Loy
    Le piège du codage par l'IA, par Chris Loy

    Si vous observez un jour quelqu’un en train de « coder », vous remarquerez peut-être qu’il passe bien plus de temps à regarder dans le vide qu’à taper sur son clavier. Non, il n'est (probablement) pas en train de se la couler douce. Le développement logiciel est avant tout une pratique de résolution de problèmes et, à l’instar d’un mot croisé complexe, l’essentiel du travail se fait dans la tête.

    Dans le cycle de vie du développement logiciel, le codage correspond aux lettres inscrites dans les mots croisés : il ne représente qu’un effort minime par rapport à toutes les réflexions et aux notes griffonnées. Le véritable travail se déroule généralement en parallèle du codage, tandis que le développeur se familiarise avec le domaine, affine les exigences, définit les abstractions pertinentes, prend en compte les effets secondaires, teste les fonctionnalités de manière incrémentale et, enfin, corrige les bugs qui ont survécu à ce processus rigoureux. Cela ressemble à peu près à ceci :

    Nom : 1.jpg
Affichages : 12816
Taille : 13,1 Ko

    Mais avec le codage piloté par l’IA, les choses se déroulent très différemment.

    « Le code d’abord, les questions ensuite »

    Les agents de codage basés sur l’IA, tels que Claude Code, permettent d’écrire du code de manière étonnamment rapide, en isolé. Mais la plupart des logiciels s’inscrivent dans des systèmes complexes, et comme les grands modèles de langage (LLM) ne peuvent pas encore garder en mémoire l’intégralité du contexte d’une application en une seule fois, les besoins en matière de révision, de tests et d’intégration par l’humain resteront d’actualité. Et cela s’avère bien plus difficile lorsque le code a été écrit sans intervention humaine. Par conséquent, pour les logiciels complexes, une grande partie du temps sera consacrée à la compréhension a posteriori du code rédigé par l’IA.

    Nom : 2.jpg
Affichages : 2854
Taille : 12,9 Ko

    C’est là que réside la différence fondamentale entre les arguments marketing vantant la vitesse révolutionnaire de l’écriture de code avec l’IA (souvent présentée comme « 10 fois plus rapide ») et les gains de productivité marginaux observés dans la pratique lors de la livraison de logiciels fonctionnels (généralement plus proches de 10 %).

    Nom : 3.jpg
Affichages : 2859
Taille : 26,9 Ko

    Une conséquence encore plus décourageante de cette situation est que, en tant que développeurs, nous consacrons une part toujours plus importante de notre temps à simplement corriger les résultats de ces merveilleuses machines bavardes. Alors que les LLM s’occupent de toutes les tâches amusantes et faciles à la vitesse de l’éclair, il ne nous reste plus que les tâches ingrates : tester pour s’assurer que les fonctionnalités existantes ne sont pas altérées, supprimer le code en double, rédiger la documentation, gérer le déploiement et l’infrastructure, etc. Très peu de temps est en réalité consacré à ce que les développeurs aiment vraiment faire : coder.

    Heureusement, de l’aide est à portée de main. Si les LLM bouleversent la manière dont le développement logiciel est mené, ce problème en soi n’est en réalité pas nouveau. En fait, il s’agit simplement d’un exemple frappant d’un problème séculaire, que j’appelle :

    Le dilemme du responsable technique

    Au fur et à mesure que les ingénieurs progressent dans leur carrière, ils finissent par endosser le rôle de responsable technique. Ils peuvent être amenés à diriger une équipe, ou occuper le poste d’ingénieur principal, pilotant la livraison technique sans gérer de personnel. Dans les deux cas, ils sont responsables de la livraison technique de l’équipe. Ils sont également généralement le développeur le plus expérimenté de l’équipe : soit en termes d’ancienneté professionnelle, soit dans le domaine de spécialité de l’équipe, soit les deux.

    La livraison de logiciels est un travail d’équipe, mais dans lequel l’expérience peut avoir un effet très déséquilibrant sur la vitesse de contribution de chacun. Ainsi, lorsque la mission principale du responsable technique est de maximiser la livraison, il est souvent confronté à un conflit interne entre deux façons de livrer des logiciels :

    - Une délégation équitable au sein de l’équipe, maximisant les opportunités d’apprentissage et d’appropriation pour les membres juniors, mais risquant de voir la livraison ralentie par la vitesse des membres les moins productifs.

    - Ménager l’équipe, en ne déléguant aux juniors que les tâches faciles ou non critiques, et en conservant pour soi les tâches les plus difficiles, en tant que personne de l’équipe la plus à même de livrer rapidement.

    Malheureusement, même si nous verrons que cette attitude de « ménagement » est extrêmement néfaste pour la santé à long terme de l’équipe, elle constitue aussi souvent un moyen très efficace d’accélérer la livraison. La plus grande capacité de travail du responsable technique est souvent exploitée de manière plus efficace en se chargeant de toutes les tâches les plus difficiles :

    Nom : 4.jpg
Affichages : 2876
Taille : 38,2 Ko

    J’ai ainsi vu ce schéma se répéter à maintes reprises au cours de ma carrière. Et, bien sûr, cela a un coût. Le cloisonnement de l’expertise au sein du responsable technique fragilise l’équipe, rend le soutien plus difficile et exerce une pression toujours plus forte sur le responsable technique, qui devient alors un point de défaillance unique. La suite est prévisible : épuisement professionnel, départ, puis crise, alors que l’équipe peine à survivre sans la seule personne qui sait vraiment comment tout fonctionne.

    Nom : 5.jpg
Affichages : 2845
Taille : 32,1 Ko

    Comme c’est souvent le cas, la solution réside dans une troisième voie qui évite ces deux extrêmes et concilie la livraison avec la croissance de l’équipe. On pourrait la formuler ainsi :

    Mettre en place des pratiques d’équipe qui permettent aux ingénieurs de livrer du code fonctionnel dans un cadre qui minimise les retouches, maximise la collaboration efficace et favorise l’épanouissement personnel et l’apprentissage.
    Lorsque j’étais directeur technique chez Datasine, nous avons inscrit cette attitude dans une devise simple pour l’équipe technique :

    Apprendre. Livrer. S'amuser.
    Les bons responsables techniques poussent leurs ingénieurs à travailler à la limite de leurs capacités, en utilisant des processus et des pratiques qui minimisent les risques liés à la livraison tout en permettant à chaque membre de l'équipe de développer ses compétences, ses connaissances et son expertise dans le domaine. C'est, en effet, l'essence même d'un bon leadership technique.

    Il existe de nombreuses façons d’y parvenir, depuis les cadres rigoureusement codifiés tels que les règles de l’Extreme Programming jusqu’à des ensembles de principes plus souples que l’on pourrait globalement qualifier de « bonnes pratiques » :

    - Révisions de code
    - Livraisons incrémentielles
    - Conception modulaire
    - Développement piloté par les tests
    - Programmation en binôme
    - Documentation de qualité
    - Intégration continue

    Ainsi, pour les ingénieurs expérimentés d’aujourd’hui, une question urgente se pose : comment transposer ces pratiques dans un monde où le codage est piloté par l’IA ?

    Les LLM sont des ingénieurs juniors ultra-rapides

    En 2025, de nombreux ingénieurs se retrouvent pour la première fois dans une situation familière à tout responsable technique : superviser un ingénieur junior brillant mais imprévisible. Exploiter et maîtriser ce type de talent, de manière à favoriser une collaboration efficace au sein de l’équipe, est l’un des principaux défis du leadership en ingénierie. Mais les agents de codage basés sur l’IA nécessitent une gestion différente de celle des ingénieurs juniors, car la nature de leur productivité et de leur évolution est fondamentalement différente.

    À mesure que les ingénieurs logiciels acquièrent de l’expérience, nous avons tendance à améliorer notre productivité de multiples façons simultanément : en écrivant un code plus robuste, en utilisant de meilleures abstractions, en consacrant moins de temps à l’écriture et à la correction des bugs, en comprenant des architectures plus complexes, en couvrant plus efficacement les cas limites, en repérant plus tôt les schémas récurrents, etc. L’ingénierie est une discipline riche et complexe offrant de nombreuses voies de spécialisation, mais par souci de simplicité, nous pouvons regrouper ces dimensions en deux grands thèmes :

    - Qualité : capacité à produire un code plus complexe, plus performant et plus facile à maintenir

    - Vitesse : capacité à développer un code fonctionnel et sans bogues dans un délai plus court

    Au fil du temps, les bons ingénieurs s’améliorent sur ces deux axes.

    Nom : 6.jpg
Affichages : 2830
Taille : 22,5 Ko

    Les premiers LLM écrivaient du code rapidement, mais le temps passé à corriger les bogues et à éliminer les « hallucinations » les rendait lents à produire un code exempt de bogues. Au fil du temps, des LLM plus intelligents et une meilleure utilisation de l’ingénierie contextuelle et des outils ont permis aux agents de codage IA modernes d’être bien plus performants dans l’écriture de code « en une seule fois ». La génération actuelle d’agents disponibles dans le commerce peut se montrer incroyablement rapide pour produire du code fonctionnel face à des problèmes qui poseraient des difficultés à certains ingénieurs de niveau intermédiaire, même si elle ne peut pas encore égaler l’expertise des ingénieurs seniors :

    On peut donc considérer la génération actuelle d’agents de codage IA comme des ingénieurs juniors, avec toutefois deux différences fondamentales :

    1. Les LLM produisent du code beaucoup, beaucoup plus rapidement que les ingénieurs juniors, car ils ne sont limités ni par le temps de réflexion ni par le temps d’écriture ;

    2. les LLM n’ont pas de véritable capacité d’apprentissage et ne s’améliorent qu’à travers une ingénierie contextuelle plus efficace ou l’arrivée de nouveaux modèles de base.

    Comme pour les jeunes ingénieurs, il existe globalement deux façons de les déployer, selon que votre objectif est à long terme ou à court terme :

    - L’ingénierie pilotée par l’IA : appliquer les meilleures pratiques, privilégier la compréhension humaine du code, avancer lentement pour assurer la pérennité du développement.

    - Le « vibe coding » : faire fi de toute prudence et implémenter à toute vitesse, sacrifiant la compréhension au profit de la rapidité de livraison, pour finir par se heurter à un mur de code chaotique et irrécupérable.

    Comme on pouvait s’y attendre, les trajectoires à long terme liées au choix entre ces deux approches suivent à peu près le même schéma que celui du choix entre la délégation parallèle et la surprotection d’une équipe junior :

    Nom : 7.jpg
Affichages : 2826
Taille : 32,4 Ko

    C’est pourquoi l’approche du « vibe coding » est idéale pour les tout petits projets ou les prototypes jetables : des applications suffisamment simples peuvent être livrées sans nécessiter la moindre réflexion humaine. En limitant la complexité de nos projets et en nous appuyant sur les capacités des outils, nous pouvons livrer un logiciel fonctionnel de bout en bout en un rien de temps.

    Nom : 8.jpg
Affichages : 2827
Taille : 18,1 Ko

    Mais vous finirez par vous heurter à un mur de complexité que l’IA est incapable de surmonter seule.

    La création de prototypes est aujourd’hui plus facile que jamais. Cependant, si nous voulons utiliser efficacement les grands modèles de langage (LLM) pour accélérer la livraison de logiciels réels, complexes, sécurisés et fonctionnels, et pour obtenir des gains d’efficacité qui ne soient pas seulement marginaux, nous devons rédiger un nouveau guide de pratiques d’ingénierie conçu pour optimiser la collaboration entre les équipes d’ingénieurs composées à la fois d’humains et de grands modèles de langage.

    Comment éviter le piège du codage par IA

    Les agents de codage basés sur l’IA sont d’une productivité époustouflante, mais ils ne disposent pas d’une connaissance approfondie de votre activité, de votre base de code ou de votre feuille de route. Si on ne les contrôle pas, ils produiront allègrement des milliers de lignes de code sans se soucier de la conception, de la cohérence ou de la maintenabilité. Le rôle de l’ingénieur consiste donc à jouer le rôle de responsable technique auprès de ces « as » : leur fournir la structure, les normes et les processus qui transforment la vitesse brute en livraison durable.

    Nous avons besoin d’un nouveau guide pour livrer efficacement des logiciels fonctionnels, et nous pouvons nous tourner vers le passé pour apprendre comment y parvenir. En considérant les LLM comme des ingénieurs juniors ultra-rapides, nous pouvons nous appuyer sur les meilleures pratiques du cycle de vie du développement logiciel pour construire des systèmes évolutifs.

    Nom : 9.jpg
Affichages : 2826
Taille : 33,2 Ko

    Tout comme les responsables techniques ne se contentent pas d’écrire du code mais définissent des pratiques pour l’équipe, les ingénieurs doivent désormais définir des pratiques pour les agents IA. Cela implique d’intégrer l’IA à chaque étape du cycle de vie :

    Spécification : explorer, analyser et affiner les spécifications des fonctionnalités afin de couvrir les cas limites et de préciser l’objectif.

    Documentation : générer et réviser la documentation en amont afin de fournir des garde-fous réutilisables et des preuves durables.

    Conception modulaire : mettre en place des architectures modulaires pour contrôler la portée du contexte et optimiser la compréhension.

    Développement piloté par les tests : générer des cas de test exhaustifs avant la mise en œuvre afin de guider celle-ci et de prévenir les régressions.

    Normes de codage : appliquer les conventions internes et les meilleures pratiques lors de la génération de code, grâce à l’ingénierie contextuelle.

    Surveillance et introspection : analyser les journaux et en extraire des informations plus rapidement que n’importe quel être humain ne pourrait le faire.

    En comprenant que la livraison d’un logiciel va bien au-delà de la simple écriture de code, nous pouvons éviter le piège du codage par l’IA et, au contraire, amplifier considérablement notre capacité à livrer des logiciels fonctionnels et évolutifs.

    Source : The AI coding trap

    Et vous ?

    Quel est votre avis sur le sujet ?

    Voir aussi :

    Il existe une meilleure façon de coder avec l'IA, par Namanyay Goel

    Utiliser l'IA pour écrire un meilleur code, mais plus lentement, par Nolan Lawson

    Si vous êtes doué pour la révision de code, vous serez doué pour utiliser les agents IA, par Sean Goedecke

    Pourquoi le « Vibe Coding » est en voie de disparition : nous quittons l'ère du codage informel assisté par l'IA pour entrer dans la discipline plus rigoureuse de l'ingénierie des agents, selon Andrej Karpathy

  2. #2
    Membre éprouvé
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    Novembre 2011
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant IT, chercheur IA indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2 478
    Billets dans le blog
    3
    Par défaut
    Je ne dirais pas "ingénierie pilotée par l’IA", mais plutôt "ingénierie supportée par l’IA". Le pilotage doit rester humain, car c'est là que se trouve la compréhension et la responsabilité.

    Je viens de terminer la création d'une formation interne (dans sa première version) pour former nos dévs à l'usage de l'IA pour le développement logiciel. Je suis essentiellement la même logique : beaucoup de choses n'ont pas changé, et il s'agit avant tout d'adapter des pratiques bien connues à un contexte qui intègre l'IA, qui exacerbe les problèmes qui ont justement amené à inventer ces pratiques. Utiliser l'IA efficacement revient donc à exploiter ces bonnes pratiques efficacement. Il s'agit de grandir en maturité à l'aide de l'IA et pour exploiter l'IA, en partant d'un usage ponctuel pour se familiariser avec l'IA, puis du pair programming avec l'IA pour exploiter ses capacités de production de code d'une part et exploiter sa capacité à challenger le code que l'humain produit d'autre part, jusqu'à atteindre un niveau de tech lead qui permet de déléguer à l'IA en mettant en place les éléments "facilitateurs" (tests, métriques, etc.) qui apporteront un maximum de feedback à l'IA pour qu'elle puisse converger au plus près du bon code avant de nécessiter une intervention humaine pour valider ce code avec des infos bien compilées pour ne pas avoir à revoir chaque ligne une par une. Il s'agit donc de savoir utiliser l'IA pour apprendre plus vite de façon à déléguer de manière fiable.

    C'est en tout cas un discours que je vois émerger depuis pas longtemps.
    Site perso
    Recommandations pour débattre sainement

    Références récurrentes :
    The Cambridge Handbook of Expertise and Expert Performance
    L’Art d’avoir toujours raison (ou ce qu'il faut éviter pour pas que je vous saute à la gorge {^_^})

  3. #3
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 313
    Par défaut
    Complètement d'accord, le pilotage doit rester humain.
    Mais je doute que les entreprises un peu trop "arrivistes" aillent dans ce sens, influencées qu'elles sont par les promotteurs de l'IA à tout va.
    Comme toutes choses faites par l'humain, l'IA est théoriquement un outil à son service, mais des entreprises pensent que cet outil est là pour remplacer l'humain, car ils regardent seulement certains intérêts souvent financiers ou sont influencées par un lobby qui a un interet à promouvoir l'IA de remplacement dans l'entreprise.
    On peut en voir un exemple dans l'utilisation de l'IA dans l'armée, où la tendance est au remplacement de l'humain et non à son soutient.

  4. #4
    Membre éprouvé
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    Novembre 2011
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant IT, chercheur IA indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2 478
    Billets dans le blog
    3
    Par défaut
    Aux dévs aussi à se former à la techno, à la maîtriser, et à faire le lobbying dans le bon sens auprès des responsables. Sinon en plus d'un remplacement injustifié c'est aussi le renouvellement des générations dans le métier qui prend un coup sévère.
    Site perso
    Recommandations pour débattre sainement

    Références récurrentes :
    The Cambridge Handbook of Expertise and Expert Performance
    L’Art d’avoir toujours raison (ou ce qu'il faut éviter pour pas que je vous saute à la gorge {^_^})

  5. #5
    Invité de passage
    Avatar de Skillselion
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2026
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2026
    Messages : 10
    Billets dans le blog
    1
    Par défaut
    L'analogie des mots croisés est juste : le code, c'est les lettres, pas la réflexion. Et c'est justement pour ça que le piège existe.

    Historiquement, écrire le code te forçait à comprendre le problème : tu ne pouvais pas taper une ligne sans avoir compris ce qu'elle devait faire. L'IA supprime cette friction. Tu obtiens du code qui compile et qui a l'air correct, sans avoir fait le travail de compréhension qui, avant, était un sous-produit obligatoire de l'écriture.

    Le coût ne disparaît pas, il se déplace. On échange du temps d'écriture contre de la "dette de compréhension" : du code en prod que personne dans l'équipe ne saurait réexpliquer ni débugger sereinement. Et cette dette se paie au pire moment, en incident, à 3h du matin.

    Ça ne veut pas dire qu'il faut s'en priver. L'usage sain, c'est de garder l'IA sur la partie "lettres" (boilerplate, traduction d'une intention claire, exploration) et de ne jamais lui déléguer la partie "réflexion" : le découpage du problème, les invariants, les cas limites. Concrètement : si tu ne peux pas relire un diff et expliquer pourquoi chaque morceau est là, ce n'est pas prêt à merger, même si ça passe les tests.

    Le vrai risque n'est pas que l'IA écrive du mauvais code, c'est qu'elle nous fasse sauter l'étape où on apprend le problème.

  6. #6
    Membre éprouvé Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    2 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 068
    Par défaut
    Ce que tu dis est très juste, mais ce risque est très grand, car le contrôle s'appuie sur l'autodiscipline humaine, là où avant l'IA, le contrôle s'appliquait par le fait de ne pas pouvoir écrire du code qui compilait ou qui passait les tests.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2025, 21h15
  2. Réponses: 3
    Dernier message: 29/04/2008, 14h24
  3. Réponses: 13
    Dernier message: 06/06/2007, 10h09
  4. [HTML] changer le codage de langue de IE par html
    Par elbissat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/12/2006, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo