<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
  <title>Écrits — Bastien Gallay</title>
  <subtitle>Notes et articles. Pas de cadence promise.</subtitle>
  <link href="https://bastiengallay.com/ecrits/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="https://bastiengallay.com/ecrits/" rel="alternate" type="text/html"/>
  <generator uri="https://www.getzola.org/">Zola</generator>
  <updated>2026-06-11T00:00:00+00:00</updated>
  <id>https://bastiengallay.com/ecrits/atom.xml</id>
  <author>
    <name>Bastien Gallay</name>
    <uri>https://bastiengallay.com</uri>
  </author>
  <entry xml:lang="fr">
    <title>Avec l&#x27;IA, je code plus lentement — 2</title>
    <published>2026-06-11T00:00:00+00:00</published>
    <updated>2026-06-11T00:00:00+00:00</updated>
    <link rel="alternate" type="text/html" href="https://bastiengallay.com/ecrits/avec-l-ia-je-code-plus-lentement-2/"/>
    <id>https://bastiengallay.com/ecrits/avec-l-ia-je-code-plus-lentement-2/</id>
    <summary type="html">Ce que l&#x27;IA m&#x27;apporte vraiment : pas de la vitesse, mais des standards de qualité tenus sans payer leur coût habituel.</summary><content type="html" xml:base="https://bastiengallay.com/ecrits/avec-l-ia-je-code-plus-lentement-2/">
&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;full&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;p&gt;Depuis le &lt;a href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;&quot;&gt;premier article de cette série&lt;&#x2F;a&gt;, un retour m&#x27;a poussé à revoir ma copie. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.linkedin.com&#x2F;in&#x2F;bob6664569&#x2F;&quot;&gt;Johan Massin&lt;&#x2F;a&gt; m&#x27;a signalé une nouvelle étude METR de février 2026 faisant suite aux −19 % de perte de productivité&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#metr-prod&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; avec l&#x27;IA. Alors, finalement, est-ce que cette augmentation de productivité attendue a du sens ?&lt;&#x2F;p&gt;
&lt;p&gt;Ce qui rend cette suite intéressante à mes yeux, c&#x27;est l&#x27;aveu de ses auteurs concernant les difficultés méthodologiques rencontrées. Les conditions changent. Les tâches changent de nature. Les développeurs travaillent sur autre chose pendant que l&#x27;agent tourne. Cela me rappelle cette proportion des 10&#x2F;90&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1090&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; et la charge cognitive. Cet article METR s&#x27;arrête sur un problème nouveau : non seulement on ne mesure pas la bonne chose dans la vitesse de développement, mais on n&#x27;est plus capable de la mesurer de la bonne manière.&lt;&#x2F;p&gt;
&lt;p&gt;Les difficultés de méthode, elles, n&#x27;ont pas été levées — METR juge même son suivi peu fiable. Et les nouveaux chiffres ne prolongent pas le premier : sur le même axe, la variation du temps quand l&#x27;IA est autorisée, le +19 % de temps de 2025 — plus lent — devient −18 % pour les développeurs initiaux et −4 % pour les nouveaux — plus vite&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#metr-refonte&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. Le signe s&#x27;inverse. En cause : de moins en moins de développeurs acceptent de participer sans IA, et les projets greenfield affluent dans le panel.&lt;&#x2F;p&gt;
&lt;p&gt;Dans la discussion sur le Slack Okiwi, suite au rappel de Johan, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.linkedin.com&#x2F;in&#x2F;jbdusseaut&#x2F;&quot;&gt;Jean-Baptiste Dusseaut&lt;&#x2F;a&gt; nous questionne :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;« C&#x27;est quoi, la productivité ? Quand je déclare fini ? Quand c&#x27;est en prod ? En prod sans défaut ? En prod sans défaut et que des gens s&#x27;en servent ? »&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Pour répondre à ces questions, j&#x27;ai besoin de vous expliquer comment je travaille désormais avec l&#x27;IA.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;full2&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;mon-travail-en-sept-etapes&quot;&gt;Mon travail, en sept étapes&lt;&#x2F;h2&gt;
&lt;p&gt;Ce qui suit est ma manière de travailler avec l&#x27;IA dans mes développements personnels, open source pour la plupart. Elle trouve ses origines dans mon expérience d&#x27;artisan logiciel, les concepts de product management et mes échanges avec d&#x27;autres praticiens.&lt;&#x2F;p&gt;
&lt;p&gt;Influencé par Lean et Agile, j&#x27;ai choisi une représentation inspirée de Value Stream Mapping. Elle est marquée par 7 étapes principales regroupées ainsi :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong class=&quot;vsm-hot&quot; data-vsm-group=&quot;1 2 3&quot;&gt;Avant le code &lt;span class=&quot;vsm-hot__n&quot;&gt;· étapes 01–03&lt;&#x2F;span&gt;&lt;&#x2F;strong&gt; : je prends le temps de définir le domaine, d&#x27;ajuster le périmètre visé et enfin de concevoir la forme globale. À l&#x27;issue de ces 3 étapes, j&#x27;ai un cadre précis de ce que je compte coder.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong class=&quot;vsm-hot&quot; data-vsm-group=&quot;4 5 6&quot;&gt;Le code et sa boucle &lt;span class=&quot;vsm-hot__n&quot;&gt;· étapes 04–06&lt;&#x2F;span&gt;&lt;&#x2F;strong&gt; : La responsabilité des 3 étapes suivantes est la mise en production d&#x27;un code de qualité. D&#x27;abord, l&#x27;élaboration du harnais qui garantit la qualité, puis la génération du code. Ensuite, différentes revues et intégrations prennent le relais. Ces trois étapes sont orchestrées par une boucle de rétroaction continue centrée sur la compréhension humaine et l&#x27;adaptation.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong class=&quot;vsm-hot&quot; data-vsm-group=&quot;7&quot;&gt;Après le code &lt;span class=&quot;vsm-hot__n&quot;&gt;· étape 07&lt;&#x2F;span&gt;&lt;&#x2F;strong&gt; : La dernière étape, le suivi de la livraison et sa maintenance, démarrent immédiatement après chaque livraison réussie. Cette étape comprend des activités comme le dogfood, la communication et le suivi statistique.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Cette séquence est adaptable, jamais figée. Elle reste très classique et je la connaissais de manière empirique uniquement. Pour les besoins de l&#x27;article, j&#x27;ai reconstitué avec l&#x27;IA et mes commits sur lucid-lint les patterns et checkpoints les plus évidents, puis comparé avec l&#x27;idée abstraite que je m&#x27;en faisais. La dernière étape est très généraliste — presque fourre-tout. La raison : je garde lucid-lint comme exemple le plus récent et représentatif, et j&#x27;en suis pour l&#x27;instant le seul utilisateur quotidien.&lt;&#x2F;p&gt;
&lt;p&gt;Parlons à nouveau des études METR. La courbe METR vit dans l&#x27;enchainement d&#x27;étapes semblables aux miennes. Le temps que je prends vit entre les boucles que ces étapes jalonnent. C&#x27;est le ralentissement volontaire pour les vérifications, celui des transitions entre deux actions finies pour garantir à la deuxième qu&#x27;elle reprendra sur des bases saines. Voici comment toutes ces étapes s&#x27;articulent.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;A&quot; id=&quot;harnais&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;le-harnais-qui-libere&quot;&gt;Le harnais qui libère&lt;&#x2F;h2&gt;
&lt;p&gt;Un logiciel personnel est souvent issu d&#x27;une expérimentation, ou d&#x27;un prototype de recherche. La qualité initiale se contente de quelques tests et documents de réflexion. Avant de coder plus, &lt;span class=&quot;mark--soft&quot;&gt;je génère les tests manquants, j&#x27;installe les linters, je construis la chaîne de livraison initiale&lt;&#x2F;span&gt;. J&#x27;ajoute aussi les documents d&#x27;intention comme README, CODING_STANDARDS ou LICENSE et CONTRIBUTING pour l&#x27;open source. Ce sont les conditions pour implémenter sereinement les règles métier. Une fois ces conditions atteintes, j&#x27;ai une hygiène personnelle : le N+1. Lorsque je sécurise la qualité connue avec N garde-fous, j&#x27;en ajoute un pour ce qui est inconnu. Cela peut être du shift-left depuis la CI vers une règle pre-commit, du mutation testing, l&#x27;analyse statique ou une génération de documentation. Je choisis en fonction de la nature du projet ce qui me semble moins maitrisable.&lt;&#x2F;p&gt;
&lt;p&gt;Ensuite, tout cela doit grandir avec les principes de développement classiques : test first, DDD, CUPID, etc. Ces principes sont issus du Lean, des méthodes agiles — en particulier eXtreme Programming — et du craft. Tidy First de Kent Beck&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#beck-tidy&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; m&#x27;inspire à chaque itération de code : la base saine du début doit le rester. Pour la faire évoluer, il faut la challenger avant chaque nouvelle fonctionnalité.&lt;&#x2F;p&gt;
&lt;p&gt;Certains principes ont en revanche changé avec l&#x27;IA. Parfois, parce que ses capacités permettent de plus vite construire une qualité que j&#x27;aurais trouvée hors de portée ou overkill dans le passé. CodeQL et OpenSSF permettent des standards de qualité simples. Mais atteindre le minimum requis pour qu&#x27;ils ne lèvent pas d&#x27;alerte est long et rébarbatif. Avec une assistance IA, cela devient aisé. J&#x27;ai même trouvé cela ludique, sur lucid-lint, de chercher à atteindre ce badge BestPractices. Et le N+1 m&#x27;a mené à me poser la question de la revue par un autre contributeur. Je ne l&#x27;avais pas.&lt;&#x2F;p&gt;
&lt;p&gt;Je suis seul contributeur sur plusieurs projets open source, et un autre point de vue me semble important. J&#x27;utilise Claude Code au quotidien. J&#x27;ai automatisé la revue avec Gemini Code Assist. Là où mon assistant habituel et moi laissions régulièrement passer des imperfections, ce nouvel outil dans la chaîne pouvait les repérer.&lt;&#x2F;p&gt;
&lt;p&gt;Lorsque je demande à l&#x27;IA de rendre visuel un aspect complexe de l&#x27;architecture ou du parcours utilisateur, je fais attention à critiquer et modifier pour mieux m&#x27;impliquer. Aussi, j&#x27;ai découvert qu&#x27;il était plus efficace de générer un script pour représenter un graphique à partir des données brutes, par exemple, que de générer le graphique directement. Le résultat de ces pratiques, ce sont des documents utiles pour moi et des inputs fiables dans mon contexte Claude Code. J&#x27;écris pour l&#x27;humain. J&#x27;écris pour l&#x27;IA. &lt;span class=&quot;mark--soft&quot;&gt;Je n&#x27;écris qu&#x27;une fois.&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Ce n&#x27;est pas parfait, mais ça me convient. Je me rappelle de mon premier commit sur &lt;code&gt;lucid-lint&lt;&#x2F;code&gt;, lorsque j&#x27;avais appliqué ce harnais en même temps que j&#x27;expérimentais la faisabilité sur quelques règles. La CI m&#x27;a crié dessus. Très fort. &quot;It works on my machine&quot; est aussi vrai pour la qualité. J&#x27;ai dû dédier 5 commits à corriger GitHub Actions, puis encore une vingtaine pour réaligner mes tests.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;courage&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;catalyser-le-courage&quot;&gt;Catalyser le courage&lt;&#x2F;h2&gt;
&lt;p&gt;Sans l&#x27;IA, j&#x27;aurais pu être découragé par un tel travail et simplement arrêter le projet. Au contraire, j&#x27;ai eu en tête l&#x27;image de Senku, de Dr Stone, s&#x27;exclamant &lt;em&gt;« Voilà qui est follement excitant !! »&lt;&#x2F;em&gt; J&#x27;ai retroussé mes manches et celles de Claude Code, et ensemble, en deux heures, nous avons ajusté la base de code. Le courage de refuser le compromis. Un rêve que je n&#x27;atteignais que rarement auparavant. Ou alors en quelques jours plutôt qu&#x27;en quelques heures.&lt;&#x2F;p&gt;
&lt;p&gt;Beaucoup penseraient que je parle d&#x27;accélération immédiate. Et c&#x27;est le cas. La différence c&#x27;est que cette accélération locale sert à oser booster la pérennité. Cela me rappelle le tweet de Kent Beck :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;« 90 % de mes compétences viennent de perdre leur valeur, le levier sur les 10 % restants vient d&#x27;être multiplié par 1000. »&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#beck-90&quot;&gt;5&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Supprimer, réviser et refactorer sont des actes fondamentaux de ces 10 %.&lt;&#x2F;p&gt;
&lt;p&gt;Je reviens à mon fil rouge &lt;code&gt;lucid-lint&lt;&#x2F;code&gt;. Alors qu&#x27;il fonctionnait et donnait des résultats, j&#x27;ai pris quelques décisions folles. Au bout d&#x27;une journée d&#x27;existence de l&#x27;outil en production, j&#x27;ai jeté et refondu des fondamentaux : quatre catégories mortes en 24 h. Plus tard, pour mieux m&#x27;y retrouver, j&#x27;ai renommé 81 features de la roadmap et créé un système de gestion pour celles-ci. Plus clivant encore : au lieu de gagner 5,6 % de perf sur les textes anglais longs, j&#x27;ai réécrit le parseur Markdown pour équilibrer un gain moindre, mais pour tous les textes. Et ce, alors que tous les tests, golden snapshots et property tests, étaient verts.&lt;&#x2F;p&gt;
&lt;p&gt;Le point commun ? Le filet de sécurité n&#x27;est pas un gage de qualité. C&#x27;est ce qui m&#x27;autorise à être courageux. Et ce que ce courage libère, ce n&#x27;est pas du temps — &lt;span class=&quot;mark&quot;&gt;c&#x27;est du jugement.&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;B&quot; id=&quot;complaisance&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;l-ia-casseur-de-complaisance&quot;&gt;L&#x27;IA, casseur de complaisance&lt;&#x2F;h2&gt;
&lt;p&gt;Ce jugement, je le garde pour moi. Et pour l&#x27;enrichir, je le nourris des analyses de l&#x27;IA, d&#x27;un côté, et de ses critiques, de l&#x27;autre. Pour le premier enrichissement, j&#x27;ai pour seul objectif de réduire le poids administratif de collecte et de synthèse. Le temps gagné est ainsi réinvesti dans la qualification des options avant un choix, par exemple pour un death match entre 2 expérimentations prêtes à devenir de vrais projets.&lt;&#x2F;p&gt;
&lt;p&gt;Pour l&#x27;enrichissement critique, c&#x27;est le plus cruel pour moi. Je demande explicitement à l&#x27;IA d&#x27;être dure avec ce que nous produisons. J&#x27;ai même un skill, &lt;code&gt;&#x2F;feature-torture&lt;&#x2F;code&gt;, dédié à faire un stress test d&#x27;une évolution prévue dans la roadmap. Une sorte de Dewey, de la série Malcolm : &lt;em&gt;« Toi tu vis. Toi tu vis. Toi tu crèves ! »&lt;&#x2F;em&gt; Et aussi toi tu changes, toi tu te scindes. Une sortie riche de ce skill me permet de garder la tête froide et de prendre la décision finale. L&#x27;IA n&#x27;a pas d&#x27;égo, pas d&#x27;attachement émotionnel. J&#x27;utilise ces qualités pour mieux juger.&lt;&#x2F;p&gt;
&lt;p&gt;Je suis encore plus dur avec moi-même sur la rédaction de mes articles. Celui-ci ne fait pas exception. Claude Code revoit chaque mot, phrase, paragraphe et relit la cohérence globale. Je ne le laisse pas me dire que c&#x27;est bien si c&#x27;est juste passable. C&#x27;est dur. C&#x27;est exténuant. Et le pire ? Là où je croyais m&#x27;améliorer, les statistiques me montrent que je régresse sur l&#x27;utilisation abusive des hedge (&quot;parfois&quot;, &quot;souvent&quot;, &quot;plutôt&quot;, &quot;peut-être&quot;), alors que les conventions que J&#x27;AI choisies les proscrivent. Chaque paragraphe est repassé à la moulinette environ 4 fois — oui, nous avons compté — avant qu&#x27;il soit bon.&lt;&#x2F;p&gt;
&lt;p&gt;Est-ce abusif de compter tout cela ? Pas si je veux être tranquille. Je ne veux pas laisser passer des phrases qui seraient mal comprises. Tout comme je m&#x27;interdis de laisser un bug ou une mauvaise conception s&#x27;échapper dans la nature. Pour éviter leur accumulation, je demande à l&#x27;IA de &lt;span class=&quot;mark--soft&quot;&gt;casser ma complaisance avant que je la confonde avec de la cohérence&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Il arrive, malgré tout, qu&#x27;une simple règle de lisibilité dans &lt;code&gt;lucid-lint&lt;&#x2F;code&gt; passe la torture, les revues locales et les tests, puis au premier essai en conditions réelles : le linter explose en vol ! Il s&#x27;agissait d&#x27;une règle, expérimentale, repérant les nombres sans ancrage proche — sans unité, par exemple. Mais lâchée dans le monde réel, elle délimitait mal les nombres, confondait les numéros de version avec de grandes valeurs numériques et finissait par crasher l&#x27;exécution. Bilan : quelques heures et trois commits.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;C&quot; id=&quot;rigueur&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;de-la-rigueur-du-cadre-a-la-rigueur-de-la-boucle&quot;&gt;De la rigueur du cadre à la rigueur de la boucle&lt;&#x2F;h2&gt;
&lt;p&gt;Cela veut-il dire que les tests étaient superflus ? Non, mille fois non. Ou plutôt 841 fois non — le nombre de tests unitaires sur &lt;code&gt;lucid-lint&lt;&#x2F;code&gt;. Et la rigueur est là, elle aussi, dans leur diversité — certains tests s&#x27;assurent que la documentation reste cohérente entre les deux langues — et dans le contrôle des tests eux-mêmes — mutation testing et relectures humaines + IA pour s&#x27;assurer de leur pertinence. Est-ce que je fais toujours du TDD avec l&#x27;IA ?&lt;&#x2F;p&gt;
&lt;p&gt;Un petit saut dans le temps. Dans mes premières utilisations de GitHub Copilot, j&#x27;avais tenté de lui faire faire du TDD. Deux constatations décevantes :&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Les tests passaient souvent en test after malgré les directives&lt;&#x2F;li&gt;
&lt;li&gt;En test first, Copilot générait une cohorte de tests avant de commencer à implémenter&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;rigueur-rgb&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;p&gt;Le premier se corrigeait avec le temps. Le deuxième a demandé une astuce qui s&#x27;est révélée fondamentale : ajouter une étape à TDD. Red → Green → Refactor → &lt;strong&gt;Reflect&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Cette 4e étape demande à l&#x27;IA de revoir l&#x27;exécution précédente des trois premières étapes, d&#x27;en tirer des apprentissages, et de changer le plan pour la suite quand nécessaire&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#reflect-directive&quot;&gt;6&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. Honnêtement ? Peu de changements de plan. Livrés à eux-mêmes en test first, les assistants génèrent une cohorte de tests d&#x27;un bloc, en amont. Reflect casse ce réflexe — le Red redevient respecté. Les tests inutiles ou en doublon sont à nouveau tués dans l&#x27;œuf. Et un bonus : une verbosité maîtrisée qui me donne des informations utiles en relecture de code.&lt;&#x2F;p&gt;
&lt;figure class=&quot;diagram&quot; aria-label=&quot;Le cycle TDD agentique sans puis avec l&amp;#x27;étape Reflect : à gauche la cohorte de tests court-circuite le Red, à droite Reflect occupe le coin vide et referme la boucle.&quot;&gt;
  &lt;p id=&quot;h2-desc&quot; class=&quot;sr-only&quot;&gt;Deux roues du cycle TDD agentique, avant et après l&#x27;ajout de Reflect. À gauche, sans Reflect : les trois temps Red, Green, Refactor forment un triangle, Red en haut à gauche. Une cohorte de tests générée d&#x27;un bloc, posée au-dessus du cycle, tombe directement sur Green ; sa flèche vers Red est barrée — le Red est court-circuité. À droite, avec Reflect : le cycle est complet, Red en haut à gauche puis Green, Refactor, et une quatrième étape Reflect en bas à gauche qui referme la boucle vers un nouveau Red.&lt;&#x2F;p&gt;

  &lt;div class=&quot;tddw&quot; role=&quot;img&quot; aria-labelledby=&quot;h2-desc&quot;&gt;

    &lt;!-- ── Roue gauche : TDD 3 temps (triangle tourné 30° anti-horaire),
         cohorte HORS du cycle, en haut au centre ── --&gt;
    &lt;figure class=&quot;tddw__col tddw__col--before&quot;&gt;
      &lt;figcaption class=&quot;tddw__head&quot;&gt;Sans Reflect&lt;span class=&quot;tddw__tag&quot;&gt;état courant&lt;&#x2F;span&gt;&lt;&#x2F;figcaption&gt;
      &lt;svg class=&quot;tddw__svg&quot; viewBox=&quot;-16 0 226 184&quot; aria-hidden=&quot;true&quot;&gt;
        &lt;defs&gt;
          &lt;marker id=&quot;tddw-ar&quot; viewBox=&quot;0 0 8 8&quot; refX=&quot;6&quot; refY=&quot;4&quot; markerWidth=&quot;5&quot; markerHeight=&quot;5&quot; orient=&quot;auto&quot;&gt;
            &lt;path d=&quot;M0 0 L8 4 L0 8 z&quot; fill=&quot;currentColor&quot;&#x2F;&gt;
          &lt;&#x2F;marker&gt;
        &lt;&#x2F;defs&gt;
        &lt;!-- la cohorte est posée HORS du cycle, en haut au centre --&gt;
        &lt;g class=&quot;tddw__cohorte&quot;&gt;
          &lt;rect x=&quot;34&quot; y=&quot;4&quot; width=&quot;116&quot; height=&quot;32&quot; rx=&quot;4&quot;&#x2F;&gt;
          &lt;text x=&quot;92&quot; y=&quot;18&quot; text-anchor=&quot;middle&quot; class=&quot;tddw__cohorte-l&quot;&gt;cohorte de tests&lt;&#x2F;text&gt;
          &lt;text x=&quot;92&quot; y=&quot;30&quot; text-anchor=&quot;middle&quot; class=&quot;tddw__cohorte-s&quot;&gt;générée d&#x27;un bloc&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
        &lt;!-- anneau du cycle --&gt;
        &lt;circle class=&quot;tddw__ring&quot; cx=&quot;92&quot; cy=&quot;102&quot; r=&quot;54&quot; fill=&quot;none&quot;&#x2F;&gt;
        &lt;!-- sens du cycle : 3 chevrons (Red ↗ Green, Green ↘ Refactor, Refactor ↖ Red) --&gt;
        &lt;g class=&quot;tddw__dir&quot; aria-hidden=&quot;true&quot;&gt;
          &lt;text x=&quot;92&quot; y=&quot;52&quot; text-anchor=&quot;middle&quot;&gt;▸&lt;&#x2F;text&gt;
          &lt;text x=&quot;140&quot; y=&quot;135&quot; text-anchor=&quot;middle&quot;&gt;▾&lt;&#x2F;text&gt;
          &lt;text x=&quot;44&quot; y=&quot;135&quot; text-anchor=&quot;middle&quot;&gt;▴&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
        &lt;!-- flèche grasse : la cohorte tombe sur Green (le court-circuit réel) --&gt;
        &lt;path class=&quot;tddw__shortcut&quot; d=&quot;M124 34 Q140 50 139 69&quot; fill=&quot;none&quot; marker-end=&quot;url(#tddw-ar)&quot;&#x2F;&gt;
        &lt;!-- flèche BARRÉE : le chemin cohorte → Red, sauté --&gt;
        &lt;g class=&quot;tddw__barred&quot;&gt;
          &lt;path d=&quot;M60 34 Q47 50 46 69&quot; fill=&quot;none&quot; marker-end=&quot;url(#tddw-ar)&quot;&#x2F;&gt;
          &lt;g class=&quot;tddw__bar-x&quot;&gt;&lt;line x1=&quot;45&quot; y1=&quot;44&quot; x2=&quot;57&quot; y2=&quot;54&quot;&#x2F;&gt;&lt;line x1=&quot;57&quot; y1=&quot;44&quot; x2=&quot;45&quot; y2=&quot;54&quot;&#x2F;&gt;&lt;&#x2F;g&gt;
        &lt;&#x2F;g&gt;
        &lt;!-- sommets : Red (haut-gauche, sauté), Green (haut-droite), Refactor (bas) --&gt;
        &lt;g class=&quot;tddw__node tddw__node--red tddw__node--shorted&quot;&gt;
          &lt;circle cx=&quot;45&quot; cy=&quot;75&quot; r=&quot;5&quot;&#x2F;&gt;
          &lt;text x=&quot;34&quot; y=&quot;72&quot; text-anchor=&quot;end&quot; class=&quot;tddw__lbl&quot;&gt;Red&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
        &lt;g class=&quot;tddw__node tddw__node--green&quot;&gt;
          &lt;circle cx=&quot;139&quot; cy=&quot;75&quot; r=&quot;5&quot;&#x2F;&gt;
          &lt;text x=&quot;148&quot; y=&quot;72&quot; text-anchor=&quot;start&quot; class=&quot;tddw__lbl&quot;&gt;Green&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
        &lt;g class=&quot;tddw__node tddw__node--refactor&quot;&gt;
          &lt;circle cx=&quot;92&quot; cy=&quot;156&quot; r=&quot;5&quot;&#x2F;&gt;
          &lt;text x=&quot;92&quot; y=&quot;174&quot; text-anchor=&quot;middle&quot; class=&quot;tddw__lbl&quot;&gt;Refactor&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
      &lt;&#x2F;svg&gt;
      &lt;p class=&quot;tddw__cap&quot;&gt;La cohorte tombe d&#x27;un bloc&amp;#160;: le Red est court-circuité, écrit après coup.&lt;&#x2F;p&gt;
    &lt;&#x2F;figure&gt;

    &lt;!-- ── Transition : l&#x27;ajout de Reflect (le détail « ce qu&#x27;il apporte » vit
         dans le rail, nœud 04) ── --&gt;
    &lt;div class=&quot;tddw__link&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;tddw__link-arrow&quot;&gt;→&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;

    &lt;!-- ── Roue droite : TDD 4 temps (diamant tourné 90° anti-horaire → Red au
         nord-ouest), Reflect en bas à gauche referme la boucle ── --&gt;
    &lt;figure class=&quot;tddw__col tddw__col--after&quot;&gt;
      &lt;figcaption class=&quot;tddw__head&quot;&gt;Avec Reflect&lt;span class=&quot;tddw__tag&quot;&gt;vue cible&lt;&#x2F;span&gt;&lt;&#x2F;figcaption&gt;
      &lt;svg class=&quot;tddw__svg&quot; viewBox=&quot;-16 0 226 184&quot; aria-hidden=&quot;true&quot;&gt;
        &lt;circle class=&quot;tddw__ring&quot; cx=&quot;105&quot; cy=&quot;100&quot; r=&quot;57&quot; fill=&quot;none&quot;&#x2F;&gt;
        &lt;g class=&quot;tddw__dir&quot; aria-hidden=&quot;true&quot;&gt;
          &lt;text x=&quot;105&quot; y=&quot;42&quot; text-anchor=&quot;middle&quot;&gt;▸&lt;&#x2F;text&gt;
          &lt;text x=&quot;167&quot; y=&quot;104&quot; text-anchor=&quot;middle&quot;&gt;▾&lt;&#x2F;text&gt;
          &lt;text x=&quot;105&quot; y=&quot;168&quot; text-anchor=&quot;middle&quot;&gt;◂&lt;&#x2F;text&gt;
          &lt;text x=&quot;44&quot; y=&quot;98&quot; text-anchor=&quot;middle&quot;&gt;▴&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
        &lt;text x=&quot;105&quot; y=&quot;105&quot; text-anchor=&quot;middle&quot; class=&quot;tddw__hub&quot;&gt;↻&lt;&#x2F;text&gt;
        &lt;!-- Red au nord-ouest (même entrée que la roue gauche) --&gt;
        &lt;g class=&quot;tddw__node tddw__node--red&quot;&gt;
          &lt;circle cx=&quot;64&quot; cy=&quot;59&quot; r=&quot;5&quot;&#x2F;&gt;
          &lt;text x=&quot;55&quot; y=&quot;55&quot; text-anchor=&quot;end&quot; class=&quot;tddw__lbl&quot;&gt;Red&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
        &lt;!-- Green au nord-est --&gt;
        &lt;g class=&quot;tddw__node tddw__node--green&quot;&gt;
          &lt;circle cx=&quot;146&quot; cy=&quot;59&quot; r=&quot;5&quot;&#x2F;&gt;
          &lt;text x=&quot;155&quot; y=&quot;55&quot; text-anchor=&quot;start&quot; class=&quot;tddw__lbl&quot;&gt;Green&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
        &lt;!-- Refactor au sud-est --&gt;
        &lt;g class=&quot;tddw__node tddw__node--refactor&quot;&gt;
          &lt;circle cx=&quot;146&quot; cy=&quot;141&quot; r=&quot;5&quot;&#x2F;&gt;
          &lt;text x=&quot;155&quot; y=&quot;145&quot; text-anchor=&quot;start&quot; class=&quot;tddw__lbl&quot;&gt;Refactor&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
        &lt;!-- Reflect au sud-ouest : 4ᵉ temps, referme vers un nouveau Red --&gt;
        &lt;g class=&quot;tddw__node tddw__node--reflect&quot;&gt;
          &lt;circle cx=&quot;64&quot; cy=&quot;141&quot; r=&quot;6&quot;&#x2F;&gt;
          &lt;text x=&quot;55&quot; y=&quot;138&quot; text-anchor=&quot;end&quot; class=&quot;tddw__lbl tddw__lbl--reflect&quot;&gt;Reflect&lt;&#x2F;text&gt;
          &lt;text x=&quot;55&quot; y=&quot;149&quot; text-anchor=&quot;end&quot; class=&quot;tddw__sub&quot;&gt;4ᵉ temps&lt;&#x2F;text&gt;
        &lt;&#x2F;g&gt;
      &lt;&#x2F;svg&gt;
      &lt;p class=&quot;tddw__cap&quot;&gt;Le Red redevient un vrai départ&amp;#160;: moins de tests créés à la fois, la boucle se referme.&lt;&#x2F;p&gt;
    &lt;&#x2F;figure&gt;

  &lt;&#x2F;div&gt;

&lt;&#x2F;figure&gt;
&lt;p&gt;Dans mes explorations, j&#x27;ai travaillé en &lt;em&gt;Spec Driven Development&lt;&#x2F;em&gt; (SDD) avec l&#x27;IA. Avec des frameworks — SpecKit&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#speckit&quot;&gt;7&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, OpenSpec&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#openspec&quot;&gt;8&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; et BMAD. Même si les implémentations sont bonnes, je les trouvais lourdes et inflexibles. J&#x27;ai tenté une implémentation maison de micro framework SDD, dans le but de reprendre la main grâce à des micro-étapes plus granulaires. Le problème était similaire, le cadre restait figé par l&#x27;enchainement des étapes. Dans certains cas, comme des mises à jour de doc ou des améliorations esthétiques simples, il était inutile. Dans d&#x27;autres cas, comme pour les refactos évoqués plus tôt, trop léger. Mais une perle s&#x27;est glissée dans mon cadre : une étape &lt;strong&gt;Reflect&lt;&#x2F;strong&gt; entre deux boucles de feature. C&#x27;est cette étape qui m&#x27;a mené à abandonner le SDD au sens strict pour un cadre plus fluide et rigoureux à la fois.&lt;&#x2F;p&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;rigueur-macro&quot; id=&quot;boucle-macro&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;p&gt;Une idée, venue au visionnage d&#x27;un tuto BMAD&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#bmad&quot;&gt;9&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, m&#x27;a mise sur cette piste : transférer la connaissance accumulée d&#x27;une session vers des documents de contexte, et redémarrer une session pour assurer ce transfert efficace. Les étapes 4-5-6 prennent ainsi la forme d&#x27;un double diamant compact : d&#x27;abord un &lt;em&gt;brainstorm adversarial&lt;&#x2F;em&gt; — l&#x27;IA est très dure avec mes idées, je suis très dur avec ses propositions — puis &lt;em&gt;session neuve&lt;&#x2F;em&gt; et enfin génération de &lt;em&gt;code+explication&lt;&#x2F;em&gt;. Ces deux diamants interviennent au sein de chaque bloc pour une implémentation substantielle, ou au travers des trois étapes quand cela est plus trivial.&lt;&#x2F;p&gt;
&lt;figure class=&quot;diagram&quot; aria-label=&quot;Les étapes 4-5-6 prises comme un double diamant : on diverge puis on converge, deux fois, de part et d&amp;#x27;autre d&amp;#x27;une session neuve.&quot;&gt;
  &lt;p id=&quot;h3-desc&quot; class=&quot;sr-only&quot;&gt;Le double diamant compact des étapes 4-5-6, lu de gauche à droite. En entrée, une intention. Premier losange, le brainstorm adversarial : on explore (l&#x27;humain et l&#x27;IA se challengent), puis on tranche. Au point de jonction, une session neuve repart d&#x27;un contexte transféré. Second losange, code et explication : on code, puis on explique. En sortie, du code maîtrisé.&lt;&#x2F;p&gt;

  &lt;div class=&quot;ddia&quot; role=&quot;img&quot; aria-labelledby=&quot;h3-desc&quot;&gt;
    &lt;svg class=&quot;ddia__svg&quot; viewBox=&quot;0 0 412 196&quot; aria-hidden=&quot;true&quot;&gt;
      &lt;defs&gt;
        &lt;marker id=&quot;ddia-ar&quot; viewBox=&quot;0 0 8 8&quot; refX=&quot;6&quot; refY=&quot;4&quot; markerWidth=&quot;6&quot; markerHeight=&quot;6&quot; orient=&quot;auto&quot;&gt;
          &lt;path d=&quot;M0 0 L8 4 L0 8 z&quot; fill=&quot;currentColor&quot;&#x2F;&gt;
        &lt;&#x2F;marker&gt;
      &lt;&#x2F;defs&gt;

      &lt;!-- entrée : une intention --&gt;
      &lt;text class=&quot;ddia__io&quot; x=&quot;40&quot; y=&quot;80&quot; text-anchor=&quot;middle&quot;&gt;une intention&lt;&#x2F;text&gt;
      &lt;line class=&quot;ddia__flow&quot; x1=&quot;20&quot; y1=&quot;92&quot; x2=&quot;66&quot; y2=&quot;92&quot; marker-end=&quot;url(#ddia-ar)&quot;&#x2F;&gt;

      &lt;!-- diamant 1 : brainstorm adversarial (espace d&#x27;exploration) --&gt;
      &lt;path class=&quot;ddia__diamond ddia__diamond--explore&quot; d=&quot;M72 92 L139 52 L206 92 L139 132 Z&quot;&#x2F;&gt;
      &lt;!-- diamant 2 : code + explication (espace de construction) --&gt;
      &lt;path class=&quot;ddia__diamond ddia__diamond--build&quot; d=&quot;M206 92 L273 52 L340 92 L273 132 Z&quot;&#x2F;&gt;

      &lt;!-- taille de chaque losange = inflexion diverge | converge --&gt;
      &lt;line class=&quot;ddia__waist&quot; x1=&quot;139&quot; y1=&quot;58&quot; x2=&quot;139&quot; y2=&quot;126&quot;&#x2F;&gt;
      &lt;line class=&quot;ddia__waist&quot; x1=&quot;273&quot; y1=&quot;58&quot; x2=&quot;273&quot; y2=&quot;126&quot;&#x2F;&gt;

      &lt;!-- verbes diverge → converge, à l&#x27;intérieur --&gt;
      &lt;text class=&quot;ddia__verb&quot; x=&quot;106&quot; y=&quot;95&quot; text-anchor=&quot;middle&quot;&gt;explorer&lt;&#x2F;text&gt;
      &lt;text class=&quot;ddia__verb&quot; x=&quot;172&quot; y=&quot;95&quot; text-anchor=&quot;middle&quot;&gt;trancher&lt;&#x2F;text&gt;
      &lt;text class=&quot;ddia__verb&quot; x=&quot;240&quot; y=&quot;95&quot; text-anchor=&quot;middle&quot;&gt;coder&lt;&#x2F;text&gt;
      &lt;text class=&quot;ddia__verb&quot; x=&quot;306&quot; y=&quot;95&quot; text-anchor=&quot;middle&quot;&gt;expliquer&lt;&#x2F;text&gt;

      &lt;!-- tension adversariale dans le 1er losange : humain ⇄ IA --&gt;
      &lt;text class=&quot;ddia__adv&quot; x=&quot;139&quot; y=&quot;80&quot; text-anchor=&quot;middle&quot; aria-hidden=&quot;true&quot;&gt;⇄&lt;&#x2F;text&gt;

      &lt;!-- pivot : session neuve (repart d&#x27;un contexte transféré) --&gt;
      &lt;line class=&quot;ddia__pivot-stem&quot; x1=&quot;206&quot; y1=&quot;46&quot; x2=&quot;206&quot; y2=&quot;88&quot;&#x2F;&gt;
      &lt;circle class=&quot;ddia__pivot&quot; cx=&quot;206&quot; cy=&quot;92&quot; r=&quot;4.5&quot;&#x2F;&gt;
      &lt;text class=&quot;ddia__lbl--pivot&quot; x=&quot;206&quot; y=&quot;40&quot; text-anchor=&quot;middle&quot;&gt;session neuve&lt;&#x2F;text&gt;

      &lt;!-- titres des deux temps --&gt;
      &lt;text class=&quot;ddia__title&quot; x=&quot;139&quot; y=&quot;154&quot; text-anchor=&quot;middle&quot;&gt;brainstorm adversarial&lt;&#x2F;text&gt;
      &lt;text class=&quot;ddia__title&quot; x=&quot;273&quot; y=&quot;154&quot; text-anchor=&quot;middle&quot;&gt;code + explication&lt;&#x2F;text&gt;

      &lt;!-- sortie : du code maîtrisé --&gt;
      &lt;text class=&quot;ddia__io&quot; x=&quot;374&quot; y=&quot;80&quot; text-anchor=&quot;middle&quot;&gt;code maîtrisé&lt;&#x2F;text&gt;
      &lt;line class=&quot;ddia__flow&quot; x1=&quot;344&quot; y1=&quot;92&quot; x2=&quot;392&quot; y2=&quot;92&quot; marker-end=&quot;url(#ddia-ar)&quot;&#x2F;&gt;
    &lt;&#x2F;svg&gt;
  &lt;&#x2F;div&gt;

  &lt;figcaption class=&quot;diagram__cap&quot;&gt;On diverge, on converge, deux fois — autour d&#x27;une session neuve qui repart d&#x27;un contexte transféré.&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;Ce Reflect macro, il apparait une fois par boucle harnais → code → revue → &lt;em&gt;Reflect&lt;&#x2F;em&gt;. Entre les cycles, l&#x27;IA génère un fichier de tests manuels à destination de l&#x27;humain. Je l&#x27;utilise comme une démo plus qu&#x27;une vérification. Il y a rarement des erreurs, mais souvent des remarques. Cette étape rétablit la conception émergente qui est atténuée en TDD agentique.&lt;&#x2F;p&gt;
&lt;p&gt;Les idées de nouvelles features, des décisions de refacto et des ajustements pour l&#x27;expérience utilisateur sont issus de cette phase. Cela m&#x27;évite aussi de revenir du déjeuner incapable de dire à quoi sert le commit de 11 h, ni pourquoi sa conception est déjà à revoir. Je trouve cela important d&#x27;étudier et comprendre ce qui est produit, car &lt;span class=&quot;mark--soft&quot;&gt;le code généré par IA est, pour mon cerveau, du legacy de quelques heures.&lt;&#x2F;span&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#feathers&quot;&gt;10&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;p&gt;
&lt;p&gt;La rigueur ne s&#x27;est pas effacée. &lt;span class=&quot;mark--soft&quot;&gt;Elle s&#x27;est déplacée du cadre figé vers la boucle réflexive.&lt;&#x2F;span&gt; Le rythme de mon travail alterne entre des phases de création, où l&#x27;IA dégrossit avec une influence humaine, et des phases de revues, où l&#x27;humain reprend la main activement sur les bases de l&#x27;agent IA.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;vigilance&quot; id=&quot;vigilance&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;note-de-vigilance&quot;&gt;Note de vigilance&lt;&#x2F;h2&gt;
&lt;p&gt;Avec l&#x27;évolution des modèles et des agents de code, associés à des bonnes pratiques, la dette technique peut être maîtrisée. Sur le long terme, quand la complexité augmente, deux autres dettes interviennent : la dette cognitive et la dette d&#x27;intention. Cette triple dette, c&#x27;est le cercle vicieux où chacune nourrit l&#x27;autre.&lt;&#x2F;p&gt;
&lt;p&gt;Par exemple, la semaine dernière, je modifiais une dizaine de repos d&#x27;un même système. Dès le troisième, je me rends compte que je n&#x27;ai ni relu, ni testé manuellement. J&#x27;avais pourtant appliqué ma méthode. C&#x27;est ce que Margaret-Anne Storey nomme la dette cognitive&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#storey-cog&quot;&gt;11&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;« la dette cognitive reste invisible jusqu&#x27;à ce qu&#x27;il soit trop tard : l&#x27;équipe croit comprendre le système mieux qu&#x27;elle ne le comprend vraiment » — Storey, février 2026.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Storey a nommé ce qui me hantait sans que je le sache. Dans mon cas, je l&#x27;ai repérée à temps. Mais c&#x27;est un rappel : le danger est de passer trop vite sans regarder ce qui est généré. Sans contribution active de ma part, ma compréhension du logiciel devient illusoire. Pour réduire ce risque de perte de compréhension, je me concentre sur le &quot;comment&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;Fin 2025, je développais un jeu vidéo en dilettante. Je perfectionnais le système des dialogues à n&#x27;en plus finir. Ce faisant je me sentais de plus en plus perdu. Lors d&#x27;une revue, le problème m&#x27;a sauté aux yeux : j&#x27;avais perdu de vue le &quot;Pourquoi&quot;. Pourquoi ce système de dialogue et pourquoi développer ce jeu. Parce que je voulais raconter et expérimenter. C&#x27;est la troisième dette, appelée par Storey &quot;dette d&#x27;intention&quot;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#storey-intent&quot;&gt;12&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;apprentissage était fort : prendre le temps de se redemander &quot;pourquoi&quot; dans un troisième niveau de Reflect. Les trois niveaux de Reflect — quoi, comment et pourquoi — rappellent&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#triple-loop&quot;&gt;13&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt; la définition des User stories :&lt;&#x2F;p&gt;
&lt;pre class=&quot;gherkin&quot;&gt;As a    &lt;span class=&quot;lt-mute&quot;&gt;&amp;lt;who&amp;gt;&lt;&#x2F;span&gt;
I want  &lt;span class=&quot;lt-info lt-strong&quot;&gt;&amp;lt;what&amp;gt;&lt;&#x2F;span&gt;
so that &lt;span class=&quot;lt-problem lt-strong&quot;&gt;&amp;lt;why&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Le &lt;code class=&quot;lt-warning&quot;&gt;&amp;lt;how&amp;gt;&lt;&#x2F;code&gt; se retrouve dans le Acceptance Criteria. Sur des projets personnels, seul, avec un rythme irrégulier, je perds souvent le fil et omets l&#x27;un de ces niveaux.&lt;&#x2F;p&gt;
&lt;figure class=&quot;diagram&quot; aria-label=&quot;Les trois niveaux de Reflect en boucles concentriques&quot;&gt;
  &lt;p id=&quot;reflect-desc&quot; class=&quot;sr-only&quot;&gt;Trois anneaux concentriques colorés, une boucle de relecture chacun. L&#x27;anneau interne (bleu) est Quoi, la relecture de l&#x27;exécution. L&#x27;anneau médian (ambre) est Comment, la relecture de la conception. L&#x27;anneau externe (rouge) est Pourquoi, la relecture de l&#x27;intention. Ensemble ils suivent la structure d&#x27;une user story : qui, quoi, pourquoi — le comment vivant dans les critères d&#x27;acceptation.&lt;&#x2F;p&gt;

  &lt;div class=&quot;reflect&quot;&gt;
    &lt;svg class=&quot;reflect__rings&quot; viewBox=&quot;0 0 160 160&quot; role=&quot;img&quot; aria-labelledby=&quot;reflect-desc&quot;&gt;
      &lt;g fill=&quot;none&quot;&gt;
        &lt;circle cx=&quot;80&quot; cy=&quot;80&quot; r=&quot;74&quot; stroke=&quot;var(--c-problem)&quot; stroke-width=&quot;1.7&quot;&#x2F;&gt;
        &lt;circle cx=&quot;80&quot; cy=&quot;80&quot; r=&quot;52&quot; stroke=&quot;var(--c-warning)&quot; stroke-width=&quot;1.7&quot;&#x2F;&gt;
        &lt;circle cx=&quot;80&quot; cy=&quot;80&quot; r=&quot;30&quot; stroke=&quot;var(--c-info)&quot; stroke-width=&quot;2.2&quot;&#x2F;&gt;
      &lt;&#x2F;g&gt;
      &lt;g font-size=&quot;12&quot; text-anchor=&quot;middle&quot; aria-hidden=&quot;true&quot;&gt;
        &lt;text x=&quot;133&quot; y=&quot;32&quot; fill=&quot;var(--c-problem)&quot;&gt;↻&lt;&#x2F;text&gt;
        &lt;text x=&quot;117&quot; y=&quot;48&quot; fill=&quot;var(--c-warning)&quot;&gt;↻&lt;&#x2F;text&gt;
        &lt;text x=&quot;101&quot; y=&quot;64&quot; fill=&quot;var(--c-info)&quot;&gt;↻&lt;&#x2F;text&gt;
      &lt;&#x2F;g&gt;
    &lt;&#x2F;svg&gt;

    &lt;ol class=&quot;reflect__legend&quot;&gt;
      &lt;li class=&quot;reflect__row reflect__row--why&quot;&gt;
        &lt;span class=&quot;reflect__swatch&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;
        &lt;span class=&quot;reflect__lvl&quot;&gt;Pourquoi&lt;&#x2F;span&gt;
        &lt;span class=&quot;reflect__gloss&quot;&gt;l&#x27;intention · Reflect narratif&lt;&#x2F;span&gt;
      &lt;&#x2F;li&gt;
      &lt;li class=&quot;reflect__row reflect__row--how&quot;&gt;
        &lt;span class=&quot;reflect__swatch&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;
        &lt;span class=&quot;reflect__lvl&quot;&gt;Comment&lt;&#x2F;span&gt;
        &lt;span class=&quot;reflect__gloss&quot;&gt;la conception · Reflect macro&lt;&#x2F;span&gt;
      &lt;&#x2F;li&gt;
      &lt;li class=&quot;reflect__row reflect__row--what&quot;&gt;
        &lt;span class=&quot;reflect__swatch&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;
        &lt;span class=&quot;reflect__lvl&quot;&gt;Quoi&lt;&#x2F;span&gt;
        &lt;span class=&quot;reflect__gloss&quot;&gt;l&#x27;exécution · TDD + Reflect&lt;&#x2F;span&gt;
      &lt;&#x2F;li&gt;
    &lt;&#x2F;ol&gt;
  &lt;&#x2F;div&gt;

  &lt;figcaption class=&quot;diagram__cap&quot;&gt;Trois anneaux emboîtés, une relecture chacun. Plus la boucle est externe, plus elle est rare — et plus son oubli coûte cher.&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;Le piège à éviter est de ne pas participer activement aux prises de notes et modélisations. C&#x27;est ce que Michael Gerlich a étudié&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#gerlich&quot;&gt;14&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, sur 666 personnes via des questionnaires et des entretiens. Il conclut à une corrélation négative forte entre l&#x27;usage fréquent d&#x27;outils IA et la capacité de pensée critique. Les plus jeunes, plus dépendants de l&#x27;IA, sont plus touchés tandis que le niveau d&#x27;éducation est corrélé à de meilleurs résultats. Mais le plus important : la décharge cognitive (&lt;em&gt;Cognitive offloading&lt;&#x2F;em&gt;, délégation à l&#x27;IA) est en cause. Ce que j&#x27;en tire, c&#x27;est que déléguer la recherche et la synthèse de connaissance peut aider, tandis que déléguer le raisonnement réduit la pensée critique.&lt;&#x2F;p&gt;
&lt;p&gt;Cette étude montre le piège dans lequel je retombe souvent — par fatigue, paresse ou impatience : dépasser le seuil de la décharge cognitive vers une décharge de raisonnement. C&#x27;est-à-dire passer de l&#x27;aide vertueuse de l&#x27;IA pour mieux raisonner et se rappeler, au remplacement par l&#x27;IA qui effrite le sens critique. Le sens critique est justement ce qui déclenche les Reflect et les nourrit.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;

&lt;div class=&quot;vsm-trigger&quot; data-stage=&quot;cliff&quot; id=&quot;domaine&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;div&gt;
&lt;h2 id=&quot;vers-l-article-3&quot;&gt;Vers l&#x27;article 3&lt;&#x2F;h2&gt;
&lt;p&gt;Tous les patterns dont je parle s&#x27;arrêtent à la frontière du clavier. Ce sont les miens. S&#x27;ils peuvent inspirer, je n&#x27;ai aucune garantie qu&#x27;ils soient généralisables.&lt;&#x2F;p&gt;
&lt;p&gt;Les artefacts qui me servent sont déjà transmis à d&#x27;autres. Des collègues, des clients pour lesquels je travaille et mon futur moi. De ce fait, c&#x27;est une transmission d&#x27;humain à humain. &lt;span class=&quot;mark--soft&quot;&gt;Et la compréhension ne s&#x27;accélère pas.&lt;&#x2F;span&gt; L&#x27;IA, quant à elle, joue un rôle de médiateur et d&#x27;archiviste.&lt;&#x2F;p&gt;
&lt;p&gt;Je reste sur la même idée. Je n&#x27;ai pas accéléré ma création de code. En revanche, je suis conscient d&#x27;avoir produit plus. D&#x27;avoir terminé plus de projets. Des projets plus aboutis. &lt;span class=&quot;mark--soft&quot;&gt;Mon accélération n&#x27;est pas dans l&#x27;immédiateté de génération du code, mais dans la qualité que je suis capable d&#x27;atteindre désormais.&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;utilise un processus similaire pour l&#x27;écriture et pour le code. Et cet article m&#x27;a fait réfléchir à ma propre méthode, par des recherches, par l&#x27;effort de synthèse et par une introspection plus profonde que d&#x27;habitude. Comme un Reflect au-delà de mes 3 premières boucles, la boucle narrative. Celle de l&#x27;introspection personnelle.&lt;&#x2F;p&gt;
&lt;p&gt;Le niveau supérieur que je souhaite partager, il est en lien avec mon quotidien professionnel. Je l&#x27;observe et le vis dans des projets en équipe, des projets d&#x27;entreprise. C&#x27;est le Reflect collectif au niveau de l&#x27;organisation. Ce sera l&#x27;objet du troisième et dernier article de cette série.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;notes-et-references&quot;&gt;Notes et références&lt;&#x2F;h2&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1090&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;Voir &lt;a href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;&quot;&gt;le premier article de la série&lt;&#x2F;a&gt;. Avant l&#x27;IA, j&#x27;écrivais le code dans environ 10 % de mon temps ; les 90 % restants allaient à le concevoir, le relire, l&#x27;organiser, le documenter et le maintenir. Ne me rappelant plus d&#x27;où me venaient les chiffres que je prenais pour acquis, j&#x27;ai recherché. Voici ce que j&#x27;ai trouvé : Abelson et Sussman posent le principe dès 1985 (« &lt;em&gt;Programs must be written for people to read, and only incidentally for machines to execute&lt;&#x2F;em&gt; », &lt;em&gt;SICP&lt;&#x2F;em&gt;), Peter Hallam le chiffre (2 à 5 % d&#x27;écriture pure ; &lt;em&gt;What Do Programmers Really Do Anyway?&lt;&#x2F;em&gt;, 2006), et Robert C. Martin le fixe en formule mémorable — « lecture&#x2F;écriture bien au-delà de 10:1 » (&lt;em&gt;Clean Code&lt;&#x2F;em&gt;, 2008).&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;metr-prod&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;METR — &lt;em&gt;Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity&lt;&#x2F;em&gt;, juillet 2025 (16 développeurs, 246 tâches ; +19 % de temps, soit −19 % de productivité). &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2507.09089&quot;&gt;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2507.09089&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;metr-refonte&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;3&lt;&#x2F;sup&gt;
&lt;p&gt;METR — &lt;em&gt;We Are Changing our Developer Productivity Experiment Design&lt;&#x2F;em&gt;, 24 février 2026. Sur l&#x27;axe « Change in time when AI allowed » (négatif = plus rapide), l&#x27;estimation revue donne −18 % de temps (≈ 18 % plus vite) pour les développeurs initiaux (IC −38 % à +9 %) et −4 % pour les nouveaux (IC −15 % à +9 %) — un quasi-renversement du +19 % de temps (plus lent) mesuré en 2025, que METR juge peu fiable du fait d&#x27;effets de sélection (de plus en plus de développeurs refusant de travailler sans IA). &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;metr.org&#x2F;blog&#x2F;2026-02-24-uplift-update&#x2F;&quot;&gt;https:&#x2F;&#x2F;metr.org&#x2F;blog&#x2F;2026-02-24-uplift-update&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;beck-tidy&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;4&lt;&#x2F;sup&gt;
&lt;p&gt;Kent Beck — &lt;em&gt;Tidy First?&lt;&#x2F;em&gt;, O&#x27;Reilly, 2023 (ISBN 978-1-098-15124-9).&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;beck-90&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;5&lt;&#x2F;sup&gt;
&lt;p&gt;Kent Beck — « The value of 90% of my skills just dropped to $0. The leverage for the remaining 10% went up 1000x », tweet du 18 avril 2023 &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;x.com&#x2F;KentBeck&#x2F;status&#x2F;1648413998025707520&quot;&gt;https:&#x2F;&#x2F;x.com&#x2F;KentBeck&#x2F;status&#x2F;1648413998025707520&lt;&#x2F;a&gt; ; développé dans l&#x27;essai &lt;em&gt;90% of my skills are now worth $0&lt;&#x2F;em&gt; (tidyfirst.substack.com).&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;reflect-directive&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;6&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;em&gt;lucid-lint&lt;&#x2F;em&gt; — &lt;em&gt;CODING_STANDARDS.md&lt;&#x2F;em&gt;, §3 « TDD with a fourth step — Reflect » : « &lt;em&gt;Reflect updates the plan, not the code.&lt;&#x2F;em&gt; » &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;lucid-lint&#x2F;blob&#x2F;main&#x2F;CODING_STANDARDS.md#3-tdd-with-a-fourth-step--reflect&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;lucid-lint&#x2F;blob&#x2F;main&#x2F;CODING_STANDARDS.md#3-tdd-with-a-fourth-step--reflect&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;speckit&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;7&lt;&#x2F;sup&gt;
&lt;p&gt;GitHub — &lt;em&gt;Spec Kit&lt;&#x2F;em&gt;. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;github&#x2F;spec-kit&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;github&#x2F;spec-kit&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;openspec&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;8&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;em&gt;OpenSpec&lt;&#x2F;em&gt;. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Fission-AI&#x2F;OpenSpec&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;Fission-AI&#x2F;OpenSpec&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;bmad&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;9&lt;&#x2F;sup&gt;
&lt;p&gt;&lt;em&gt;BMAD-METHOD&lt;&#x2F;em&gt; (bmad-code-org), tutoriel &lt;em&gt;Getting Started&lt;&#x2F;em&gt; : « &lt;em&gt;Always start a fresh chat for each workflow.&lt;&#x2F;em&gt; » &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bmad-code-org&#x2F;BMAD-METHOD&#x2F;blob&#x2F;main&#x2F;docs&#x2F;tutorials&#x2F;getting-started.md&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;bmad-code-org&#x2F;BMAD-METHOD&#x2F;blob&#x2F;main&#x2F;docs&#x2F;tutorials&#x2F;getting-started.md&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;feathers&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;10&lt;&#x2F;sup&gt;
&lt;p&gt;Michael Feathers — &lt;em&gt;Working Effectively with Legacy Code&lt;&#x2F;em&gt;, 2004 (ISBN 978-0-13-117705-5).&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;storey-cog&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;11&lt;&#x2F;sup&gt;
&lt;p&gt;Margaret-Anne Storey — &lt;em&gt;How Generative and Agentic AI Shift Concern from Technical Debt to Cognitive Debt&lt;&#x2F;em&gt;, 9 février 2026 (cadre conceptuel). &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;margaretstorey.com&#x2F;blog&#x2F;2026&#x2F;02&#x2F;09&#x2F;cognitive-debt&#x2F;&quot;&gt;https:&#x2F;&#x2F;margaretstorey.com&#x2F;blog&#x2F;2026&#x2F;02&#x2F;09&#x2F;cognitive-debt&#x2F;&lt;&#x2F;a&gt; — Martin Fowler reprend et discute ce cadre dans &lt;em&gt;Fragments&lt;&#x2F;em&gt; (2 avril 2026, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;martinfowler.com&#x2F;fragments&#x2F;2026-04-02.html&quot;&gt;https:&#x2F;&#x2F;martinfowler.com&#x2F;fragments&#x2F;2026-04-02.html&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;storey-intent&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;12&lt;&#x2F;sup&gt;
&lt;p&gt;Margaret-Anne Storey — &lt;em&gt;From Technical Debt to Cognitive and Intent Debt: Rethinking Software Health in the Age of AI&lt;&#x2F;em&gt;, mars 2026. &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2603.22106&quot;&gt;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2603.22106&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;triple-loop&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;13&lt;&#x2F;sup&gt;
&lt;p&gt;Encore une recherche qui m&#x27;a donné quelques surprises. Le &lt;em&gt;triple-loop learning&lt;&#x2F;em&gt; est souvent attribué à tort à Argyris et Schön. En réalité, ils n&#x27;en décrivent que deux (simple et double boucle) ; l&#x27;ancêtre du troisième niveau est le « Learning III » de Bateson (&lt;em&gt;Steps to an Ecology of Mind&lt;&#x2F;em&gt;, 1972), et Tosey, Visser et Saunders (&lt;em&gt;Management Learning&lt;&#x2F;em&gt;, 2012, DOI 10.1177&#x2F;1350507611426239) montrent que cette généalogie est en partie reconstruite a posteriori.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;gerlich&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;14&lt;&#x2F;sup&gt;
&lt;p&gt;Michael Gerlich — &lt;em&gt;AI Tools in Society: Impacts on Cognitive Offloading and the Future of Critical Thinking&lt;&#x2F;em&gt;, &lt;em&gt;Societies&lt;&#x2F;em&gt; 15(1):6, 2025 (N=666 ; étude non spécifique au logiciel). DOI : 10.3390&#x2F;soc15010006.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
  </entry>
  <entry xml:lang="fr">
    <title>Avec l&#x27;IA, je code plus lentement</title>
    <published>2026-05-28T00:00:00+00:00</published>
    <updated>2026-05-28T00:00:00+00:00</updated>
    <link rel="alternate" type="text/html" href="https://bastiengallay.com/ecrits/avec-l-ia-je-code-plus-lentement/"/>
    <id>https://bastiengallay.com/ecrits/avec-l-ia-je-code-plus-lentement/</id>
    <summary type="html">Pourquoi le discours dominant sur la productivité IA mesure ce qui ne compte pas.</summary><content type="html" xml:base="https://bastiengallay.com/ecrits/avec-l-ia-je-code-plus-lentement/">&lt;h2 id=&quot;une-anecdote-pour-commencer&quot;&gt;Une anecdote, pour commencer&lt;&#x2F;h2&gt;
&lt;p&gt;Le 4 avril 2026, j&#x27;ai vibe-codé un outil en quelques heures pour gérer mes tâches quotidiennes. Il s&#x27;appelait &lt;code&gt;daily-ops&lt;&#x2F;code&gt;. Une glu en Python autour de mes &lt;code&gt;TODO.md&lt;&#x2F;code&gt;, capable de me faire passer d&#x27;un projet à l&#x27;autre sans friction. Ça marchait. J&#x27;étais content.&lt;&#x2F;p&gt;
&lt;p&gt;Le 25 avril, j&#x27;ai créé un vrai repo, ajouté trois fonctionnalités, et un peu de qualité — tests, structure, le minimum syndical. L&#x27;IA m&#x27;a proposé une abstraction élégante : séparer les items en &lt;em&gt;blocks&lt;&#x2F;em&gt; nommés alphabétiquement. &lt;em&gt;Block A&lt;&#x2F;em&gt;, &lt;em&gt;Block B&lt;&#x2F;em&gt;. Au premier coup d&#x27;œil, c&#x27;était propre.&lt;&#x2F;p&gt;

&lt;figure class=&quot;visuel visuel--incidents visuel--side&quot; id=&quot;fig-1&quot; data-anchor=&quot;fig-1&quot; role=&quot;figure&quot; aria-labelledby=&quot;v0-title v0-desc&quot;&gt;
  &lt;header class=&quot;visuel__band&quot;&gt;
    &lt;span class=&quot;visuel__band-mark&quot; aria-hidden=&quot;true&quot;&gt;▍&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-num&quot;&gt;Figure 1&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-tag&quot;&gt;Cas zéro · 2026-04&lt;&#x2F;span&gt;
  &lt;&#x2F;header&gt;


  &lt;p class=&quot;visuel__title&quot;&gt;4&amp;#160;h pour produire, 4&amp;#160;sem. pour stabiliser&lt;&#x2F;p&gt;




  &lt;p id=&quot;v0-title&quot; class=&quot;sr-only&quot;&gt;Cas zéro : daily-ops, produit en quatre heures début avril 2026, a demandé quatre semaines de stabilisation.&lt;&#x2F;p&gt;
  &lt;p id=&quot;v0-desc&quot; class=&quot;sr-only&quot;&gt;Origine de la dette : abstraction « blocks alphabétiques » proposée par l&#x27;IA, élégante au premier coup d&#x27;œil, régressive ensuite (fusion accidentelle de blocks, report de blocks terminés, formatage concurrent).&lt;&#x2F;p&gt;

  &lt;ul class=&quot;visuel__incidents&quot; role=&quot;list&quot;&gt;
    &lt;li class=&quot;visuel__incident&quot;&gt;
      &lt;p class=&quot;visuel__incident-ref&quot;&gt;cas perso · 2026-04&lt;&#x2F;p&gt;
      &lt;h3 class=&quot;visuel__incident-target&quot;&gt;daily-ops&lt;&#x2F;h3&gt;
      &lt;p class=&quot;visuel__incident-fault&quot;&gt;abstraction &lt;em&gt;« blocks alphabétiques »&lt;&#x2F;em&gt; proposée par l&#x27;IA, élégante au premier coup d&#x27;œil, régressive ensuite&lt;&#x2F;p&gt;
      &lt;p class=&quot;visuel__incident-kpi&quot;&gt;
        &lt;span class=&quot;visuel__kpi-num visuel__kpi-num--ink&quot;&gt;4&amp;#160;h&lt;&#x2F;span&gt;
        &lt;span class=&quot;visuel__kpi-unit&quot;&gt;pour produire&lt;&#x2F;span&gt;
      &lt;&#x2F;p&gt;
      &lt;p class=&quot;visuel__incident-kpi&quot;&gt;
        &lt;span class=&quot;visuel__kpi-num visuel__kpi-num--pivot&quot;&gt;4&amp;#160;sem.&lt;&#x2F;span&gt;
        &lt;span class=&quot;visuel__kpi-unit&quot;&gt;pour rendre utilisable&lt;&#x2F;span&gt;
      &lt;&#x2F;p&gt;
    &lt;&#x2F;li&gt;
  &lt;&#x2F;ul&gt;



  
  
  
  
  &lt;a class=&quot;visuel__feedlink&quot; href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;#fig-1&quot;&gt;Voir la figure 1 sur le site ↗&lt;&#x2F;a&gt;
  
&lt;&#x2F;figure&gt;

&lt;p&gt;Depuis quatre semaines, je corrige les bugs de cette élégance. Fusion accidentelle de blocks entre deux jours à cause du nommage alphabétique. Report de blocks dont tous les items étaient terminés, parce que l&#x27;état « fini » n&#x27;était pas explicite au niveau du bloc. Formatage concurrent entre deux projets qui partageaient les mêmes fichiers de configuration.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;span class=&quot;mark--soft&quot; data-fig=&quot;1&quot;&gt;Bilan : quelques heures pour produire l&#x27;outil. Quatre semaines pour le rendre utilisable.&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Pourtant, je suis depuis longtemps convaincu de deux choses : tout est logiciel — de la simple feuille Excel au script qui génère des PDF — et il faut très vite décider de le supprimer ou de le pérenniser avant qu&#x27;il ne se complexifie. Tout logiciel pérenne doit, au plus tôt, bénéficier d&#x27;un filet de sécurité pour ne pas baisser en qualité.&lt;&#x2F;p&gt;
&lt;p&gt;Avec l&#x27;IA, la complexité s&#x27;installe en silence. Plus vite, aussi, que le bon vieux Excel qui commençait à crouler sous ses six formules à références croisées.&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est cette expérience, répétée sous plusieurs formes au cours des derniers mois, qui m&#x27;a fait basculer. &lt;strong&gt;Depuis, je code plus lentement. Et je produis plus.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;le-paradoxe&quot;&gt;Le paradoxe&lt;&#x2F;h2&gt;
&lt;p&gt;Le discours dominant en 2026 est sans ambiguïté.&lt;&#x2F;p&gt;
&lt;div class=&quot;paradoxe&quot; role=&quot;group&quot; aria-label=&quot;Trois chiffres clés du discours dominant sur la productivité IA en 2026&quot;&gt;
  &lt;p class=&quot;paradoxe__row&quot;&gt;
    &lt;span class=&quot;paradoxe__num&quot;&gt;126&amp;nbsp;%&lt;&#x2F;span&gt;
    &lt;span class=&quot;paradoxe__claim&quot;&gt;de projets complétés par semaine avec Copilot&lt;&#x2F;span&gt;
    &lt;span class=&quot;paradoxe__src&quot;&gt;GitHub&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;span&gt;
  &lt;&#x2F;p&gt;
  &lt;p class=&quot;paradoxe__row&quot;&gt;
    &lt;span class=&quot;paradoxe__num&quot;&gt;84&amp;nbsp;%&lt;&#x2F;span&gt;
    &lt;span class=&quot;paradoxe__claim&quot;&gt;d&#x27;adoption chez les développeurs, plus de la moitié quotidienne&lt;&#x2F;span&gt;
    &lt;span class=&quot;paradoxe__src&quot;&gt;Stack Overflow&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;span&gt;
  &lt;&#x2F;p&gt;
  &lt;p class=&quot;paradoxe__row&quot;&gt;
    &lt;span class=&quot;paradoxe__num&quot;&gt;78&amp;nbsp;%&lt;&#x2F;span&gt;
    &lt;span class=&quot;paradoxe__claim&quot;&gt;déclarent que l&#x27;IA améliore leur productivité&lt;&#x2F;span&gt;
    &lt;span class=&quot;paradoxe__src&quot;&gt;GitHub&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;span&gt;
  &lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Ces chiffres sont sincères. Ils semblent mesurer la vitesse. &lt;span class=&quot;mark&quot;&gt;En réalité ils n&#x27;en mesurent qu&#x27;une composante.&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;ce-que-les-chiffres-ne-mesurent-pas&quot;&gt;Ce que les chiffres ne mesurent pas&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;la-mesure-percue-n-est-pas-la-mesure-reelle&quot;&gt;La mesure perçue n&#x27;est pas la mesure réelle&lt;&#x2F;h3&gt;
&lt;p&gt;En 2025, une équipe de chercheurs de METR a conduit une expérience contrôlée randomisée&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. Seize développeurs open source expérimentés, chacun avec en moyenne cinq ans de pratique sur les projets qu&#x27;ils maintenaient. 246 tâches réelles, pas synthétiques. Outils utilisés : Cursor Pro et Claude 3.5&#x2F;3.7 Sonnet.&lt;&#x2F;p&gt;
&lt;p&gt;Avant de commencer, les développeurs prédisaient un gain de temps. Après l&#x27;étude, ils en percevaient un. La mesure objective, elle, raconte l&#x27;inverse — Figure 2.&lt;&#x2F;p&gt;

&lt;figure class=&quot;visuel visuel--chart-borne visuel--side&quot; id=&quot;fig-2&quot; data-anchor=&quot;fig-2&quot; role=&quot;figure&quot; aria-labelledby=&quot;v1-title v1-desc&quot;&gt;
  &lt;header class=&quot;visuel__band&quot;&gt;
    &lt;span class=&quot;visuel__band-mark&quot; aria-hidden=&quot;true&quot;&gt;▍&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-num&quot;&gt;Figure 2&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-tag&quot;&gt;Étude METR · 2025&lt;&#x2F;span&gt;
  &lt;&#x2F;header&gt;


  &lt;p class=&quot;visuel__title&quot;&gt;Perçu +20&amp;#160;%, mesuré &lt;span class=&quot;visuel__title-vs&quot;&gt;−19&amp;#160;%&lt;&#x2F;span&gt;&lt;&#x2F;p&gt;




  &lt;svg
    class=&quot;visuel__svg&quot;
    viewBox=&quot;0 0 600 420&quot;
    role=&quot;img&quot;
    preserveAspectRatio=&quot;xMidYMid meet&quot;
    xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;2000&#x2F;svg&quot;
  &gt;
    &lt;title id=&quot;v1-title&quot;&gt;Écart entre gain de temps prédit, perçu et mesuré par l&#x27;étude METR.&lt;&#x2F;title&gt;
    &lt;desc id=&quot;v1-desc&quot;&gt;
      Les développeurs prédisaient +24 % de gain de temps avant l&#x27;étude,
      le percevaient à +20 % après. La mesure objective révèle un coût
      de −19 %. Écart total : 39 points entre perception et réalité.
    &lt;&#x2F;desc&gt;

    &lt;!-- Ligne d&#x27;axe 0 % (verticale, accent) --&gt;
    &lt;line class=&quot;visuel__axis-zero&quot; x1=&quot;335&quot; y1=&quot;50&quot; x2=&quot;335&quot; y2=&quot;305&quot; &#x2F;&gt;
    &lt;!-- Label &quot;0 %&quot; déplacé au-dessus de l&#x27;axe pour laisser la place au
        pill d&#x27;écart (qui couvre x=164→515, y=336→370). --&gt;
    &lt;text class=&quot;visuel__axis-zero-label&quot; x=&quot;335&quot; y=&quot;42&quot; text-anchor=&quot;middle&quot;&gt;0&amp;#160;%&lt;&#x2F;text&gt;

    &lt;!-- Bar 1 : prédit +24 % (encre muette — donnée non-pivot, anticipation) --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;text class=&quot;visuel__bar-cat&quot; x=&quot;20&quot; y=&quot;98&quot; text-anchor=&quot;start&quot;&gt;prédit&lt;&#x2F;text&gt;
      &lt;text class=&quot;visuel__bar-meta&quot; x=&quot;20&quot; y=&quot;120&quot; text-anchor=&quot;start&quot;&gt;(avant l&#x27;étude)&lt;&#x2F;text&gt;
      &lt;rect class=&quot;visuel__bar visuel__bar--ink-mute&quot; x=&quot;335&quot; y=&quot;78&quot; width=&quot;216&quot; height=&quot;42&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__bar-value visuel__bar-value--ink-mute&quot; x=&quot;557&quot; y=&quot;105&quot; text-anchor=&quot;start&quot;&gt;+24&amp;#160;%&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Bar 2 : perçu +20 % (encre soft — donnée non-pivot, illusion) --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;text class=&quot;visuel__bar-cat&quot; x=&quot;20&quot; y=&quot;178&quot; text-anchor=&quot;start&quot;&gt;perçu&lt;&#x2F;text&gt;
      &lt;text class=&quot;visuel__bar-meta&quot; x=&quot;20&quot; y=&quot;200&quot; text-anchor=&quot;start&quot;&gt;(après l&#x27;étude)&lt;&#x2F;text&gt;
      &lt;rect class=&quot;visuel__bar visuel__bar--ink&quot; x=&quot;335&quot; y=&quot;158&quot; width=&quot;180&quot; height=&quot;42&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__bar-value visuel__bar-value--ink&quot; x=&quot;521&quot; y=&quot;185&quot; text-anchor=&quot;start&quot;&gt;+20&amp;#160;%&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Bar 3 : mesuré -19 % (accent-deep, vers la gauche depuis 0).
        Valeur à l&#x27;intérieur (règle : valeurs dehors par défaut, dedans
        uniquement quand pas de place dehors). --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;text class=&quot;visuel__bar-cat&quot; x=&quot;20&quot; y=&quot;258&quot; text-anchor=&quot;start&quot;&gt;mesuré&lt;&#x2F;text&gt;
      &lt;text class=&quot;visuel__bar-meta&quot; x=&quot;20&quot; y=&quot;280&quot; text-anchor=&quot;start&quot;&gt;(en réalité)&lt;&#x2F;text&gt;
      &lt;rect class=&quot;visuel__bar visuel__bar--negative&quot; x=&quot;164&quot; y=&quot;238&quot; width=&quot;171&quot; height=&quot;42&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__bar-value visuel__bar-value--inside&quot; x=&quot;329&quot; y=&quot;265&quot; text-anchor=&quot;end&quot;&gt;−19&amp;#160;%&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Annotation d&#x27;écart perçu↔mesuré (= 39 points, cohérent article).
        Tick ENTRE gauche barre négative (x=164) et droite barre perçue
        (x=515). Pill couvre EXACTEMENT le même span pour aligner la
        &quot;barre d&#x27;écart&quot; avec les extrêmes des barres mesurées. --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;line class=&quot;visuel__gap-tick&quot; x1=&quot;164&quot; y1=&quot;320&quot; x2=&quot;515&quot; y2=&quot;320&quot; &#x2F;&gt;
      &lt;line class=&quot;visuel__gap-tick&quot; x1=&quot;164&quot; y1=&quot;313&quot; x2=&quot;164&quot; y2=&quot;327&quot; &#x2F;&gt;
      &lt;line class=&quot;visuel__gap-tick&quot; x1=&quot;515&quot; y1=&quot;313&quot; x2=&quot;515&quot; y2=&quot;327&quot; &#x2F;&gt;
      &lt;rect class=&quot;visuel__cross-pill&quot; x=&quot;164&quot; y=&quot;336&quot; width=&quot;351&quot; height=&quot;34&quot; rx=&quot;0&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__cross-label&quot; x=&quot;339.5&quot; y=&quot;358&quot; text-anchor=&quot;middle&quot;&gt;
        écart&amp;#160;: 39&amp;#160;pts
      &lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;
  &lt;&#x2F;svg&gt;



  
  
  &lt;figcaption class=&quot;visuel__caption&quot;&gt;
    
    &lt;span class=&quot;visuel__caption-text&quot;&gt;16 développeurs OSS expérimentés, 246 tâches réelles, Cursor Pro + Claude 3.5&#x2F;3.7 Sonnet. Expérience contrôlée randomisée.&lt;&#x2F;span&gt;
    
    
    &lt;span class=&quot;visuel__caption-source&quot;&gt;Source : Becker et&amp;#160;al., METR&amp;#160;2025, arXiv:2507.09089, n.&amp;#160;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;span&gt;
    
  &lt;&#x2F;figcaption&gt;
  
  
  
  &lt;a class=&quot;visuel__feedlink&quot; href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;#fig-2&quot;&gt;Voir la figure 2 sur le site ↗&lt;&#x2F;a&gt;
  
&lt;&#x2F;figure&gt;

&lt;p&gt;L&#x27;écart entre la perception et la réalité dépassait les 39 points. Ces développeurs n&#x27;étaient ni naïfs ni hostiles à l&#x27;IA. Ils étaient simplement &lt;span class=&quot;mark--soft&quot; data-fig=&quot;2&quot;&gt;convaincus d&#x27;aller plus vite quand ils allaient en réalité plus lentement&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai moi-même vécu cet écart. Il y a deux ans, avec des modèles bien moins performants, ce qui m&#x27;aurait pris une ou deux heures me prenait souvent une demi-journée. Encore aujourd&#x27;hui, il m&#x27;arrive par réflexe de demander à Claude Code l&#x27;édition d&#x27;un fichier qu&#x27;il fera en trente secondes, là où j&#x27;aurais pu terminer en dix.&lt;&#x2F;p&gt;
&lt;aside class=&quot;visuel--side erratum&quot; role=&quot;note&quot; aria-label=&quot;Mise à jour — février 2026&quot;&gt;
  &lt;p class=&quot;erratum__kicker&quot;&gt;Mise à jour · fév. 2026&lt;&#x2F;p&gt;
  &lt;p&gt;METR a publié une suite à cette étude&amp;nbsp;: sur le même axe, le signe s&#x27;inverse — −18&amp;nbsp;% de temps pour les développeurs initiaux, −4&amp;nbsp;% pour les nouveaux — et METR juge ce suivi peu fiable (effets de sélection, projets greenfield).&lt;&#x2F;p&gt;
  &lt;p class=&quot;erratum__lien&quot;&gt;&lt;a href=&quot;&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement-2&#x2F;&quot;&gt;J&#x27;en tire les conséquences dans l&#x27;article&amp;nbsp;2&amp;nbsp;→&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;aside&gt;
&lt;p&gt;Les études antérieures, qui annonçaient 56 % ou 21 % d&#x27;accélération&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, reposaient sur des tâches synthétiques. Or les conditions synthétiques masquent ce qui rend les vrais projets coûteux : la cohérence avec l&#x27;existant, la dette technique, les conventions tacites, les contraintes invisibles.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;on-mesure-la-redaction-pas-la-livraison&quot;&gt;On mesure la rédaction, pas la livraison&lt;&#x2F;h3&gt;
&lt;p&gt;Une étude conduite sur la télémétrie de 22 000 développeurs et deux ans d&#x27;historique a documenté une déconnexion entre productivité individuelle ressentie et performance de l&#x27;entreprise&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. Les développeurs disent travailler plus vite. Les entreprises ne voient pas d&#x27;amélioration mesurable de la vélocité de livraison ni des résultats business.&lt;&#x2F;p&gt;
&lt;p&gt;Le rapport explique pourquoi : les métriques de vendeurs traquent l&#x27;activité — commits, pull requests, lignes de code — qui gonflent mécaniquement avec l&#x27;usage IA. La vélocité de livraison, elle, dépend d&#x27;une chaîne complète : revue, tests, intégration, déploiement, opérations. Cette chaîne n&#x27;a pas accéléré au même rythme.&lt;&#x2F;p&gt;

&lt;figure class=&quot;visuel visuel--chart visuel--side&quot; id=&quot;fig-3&quot; data-anchor=&quot;fig-3&quot; role=&quot;figure&quot; aria-labelledby=&quot;v2-title v2-desc&quot;&gt;
  &lt;header class=&quot;visuel__band&quot;&gt;
    &lt;span class=&quot;visuel__band-mark&quot; aria-hidden=&quot;true&quot;&gt;▍&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-num&quot;&gt;Figure 3&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-tag&quot;&gt;Étude Faros · 2025&lt;&#x2F;span&gt;
  &lt;&#x2F;header&gt;


  &lt;p class=&quot;visuel__title&quot;&gt;Le gain individuel disparaît en file d&#x27;attente&lt;&#x2F;p&gt;




  &lt;svg
    class=&quot;visuel__svg&quot;
    viewBox=&quot;0 0 600 420&quot;
    role=&quot;img&quot;
    preserveAspectRatio=&quot;xMidYMid meet&quot;
    xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;2000&#x2F;svg&quot;
  &gt;
    &lt;title id=&quot;v2-title&quot;&gt;Trois mesures Faros : +21 % tâches individuelles, +91 % temps de revue, +98 % PR créées par équipe.&lt;&#x2F;title&gt;
    &lt;desc id=&quot;v2-desc&quot;&gt;
      Le gain individuel (+21 % de tâches) se transforme en file
      d&#x27;attente en aval : +91 % de temps de revue, +98 % de pull
      requests créées par équipe. Soit 77 points d&#x27;écart entre le
      gain en amont et la file d&#x27;attente en aval.
    &lt;&#x2F;desc&gt;

    &lt;!-- Axe 0 % à gauche (vertical, accent) --&gt;
    &lt;line class=&quot;visuel__axis-zero&quot; x1=&quot;200&quot; y1=&quot;50&quot; x2=&quot;200&quot; y2=&quot;305&quot; &#x2F;&gt;
    &lt;text class=&quot;visuel__axis-zero-label&quot; x=&quot;200&quot; y=&quot;42&quot; text-anchor=&quot;middle&quot;&gt;0&amp;#160;%&lt;&#x2F;text&gt;

    &lt;!-- Bar 1 : individus +21 % (encre muette — gain individuel non-pivot) --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;text class=&quot;visuel__bar-cat&quot; x=&quot;20&quot; y=&quot;98&quot; text-anchor=&quot;start&quot;&gt;individus&lt;&#x2F;text&gt;
      &lt;text class=&quot;visuel__bar-meta&quot; x=&quot;20&quot; y=&quot;120&quot; text-anchor=&quot;start&quot;&gt;(tâches livrées)&lt;&#x2F;text&gt;
      &lt;rect class=&quot;visuel__bar visuel__bar--ink-mute&quot; x=&quot;200&quot; y=&quot;78&quot; width=&quot;67&quot; height=&quot;42&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__bar-value visuel__bar-value--ink-mute&quot; x=&quot;273&quot; y=&quot;105&quot; text-anchor=&quot;start&quot;&gt;+21&amp;#160;%&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Bar 2 : revue +91 % (encre soft — coût aval intermédiaire) --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;text class=&quot;visuel__bar-cat&quot; x=&quot;20&quot; y=&quot;178&quot; text-anchor=&quot;start&quot;&gt;revue&lt;&#x2F;text&gt;
      &lt;text class=&quot;visuel__bar-meta&quot; x=&quot;20&quot; y=&quot;200&quot; text-anchor=&quot;start&quot;&gt;(temps en aval)&lt;&#x2F;text&gt;
      &lt;rect class=&quot;visuel__bar visuel__bar--ink&quot; x=&quot;200&quot; y=&quot;158&quot; width=&quot;291&quot; height=&quot;42&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__bar-value visuel__bar-value--ink&quot; x=&quot;497&quot; y=&quot;185&quot; text-anchor=&quot;start&quot;&gt;+91&amp;#160;%&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Bar 3 : équipes +98 % (jaune pivot — punchline file d&#x27;attente,
        remplace le rouge en contexte article — P4). --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;text class=&quot;visuel__bar-cat&quot; x=&quot;20&quot; y=&quot;258&quot; text-anchor=&quot;start&quot;&gt;équipes&lt;&#x2F;text&gt;
      &lt;text class=&quot;visuel__bar-meta&quot; x=&quot;20&quot; y=&quot;280&quot; text-anchor=&quot;start&quot;&gt;(PR créées)&lt;&#x2F;text&gt;
      &lt;rect class=&quot;visuel__bar visuel__bar--pivot&quot; x=&quot;200&quot; y=&quot;238&quot; width=&quot;314&quot; height=&quot;42&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__bar-value visuel__bar-value--pivot&quot; x=&quot;520&quot; y=&quot;265&quot; text-anchor=&quot;start&quot;&gt;+98&amp;#160;%&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Annotation : écart amont→aval = 77 pts. 4ᵉ ligne en miroir
        des barres : libellé gauche + tick + valeur droite. Le tick
        remplace la barre pleine pour signaler &quot;écart&quot; vs &quot;valeur&quot;. --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;text class=&quot;visuel__bar-cat visuel__bar-cat--annot&quot; x=&quot;20&quot; y=&quot;325&quot; text-anchor=&quot;start&quot;&gt;file d&#x27;attente&lt;&#x2F;text&gt;
      &lt;text class=&quot;visuel__bar-meta visuel__bar-meta--annot&quot; x=&quot;20&quot; y=&quot;345&quot; text-anchor=&quot;start&quot;&gt;(d&#x27;amont en aval)&lt;&#x2F;text&gt;
      &lt;line class=&quot;visuel__gap-tick&quot; x1=&quot;267&quot; y1=&quot;325&quot; x2=&quot;514&quot; y2=&quot;325&quot; &#x2F;&gt;
      &lt;line class=&quot;visuel__gap-tick&quot; x1=&quot;267&quot; y1=&quot;318&quot; x2=&quot;267&quot; y2=&quot;332&quot; &#x2F;&gt;
      &lt;line class=&quot;visuel__gap-tick&quot; x1=&quot;514&quot; y1=&quot;318&quot; x2=&quot;514&quot; y2=&quot;332&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__bar-value&quot; x=&quot;520&quot; y=&quot;332&quot; text-anchor=&quot;start&quot;&gt;+77&amp;#160;pts&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;
  &lt;&#x2F;svg&gt;



  
  
  &lt;figcaption class=&quot;visuel__caption&quot;&gt;
    
    &lt;span class=&quot;visuel__caption-text&quot;&gt;22&amp;#160;000 développeurs, 2 ans de télémétrie. Mesures par équipe sur la chaîne complète (revue, intégration, déploiement).&lt;&#x2F;span&gt;
    
    
    &lt;span class=&quot;visuel__caption-source&quot;&gt;Source : Faros AI, &lt;em&gt;Engineering Productivity 2025&lt;&#x2F;em&gt;, n.&amp;#160;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;span&gt;
    
  &lt;&#x2F;figcaption&gt;
  
  
  
  &lt;a class=&quot;visuel__feedlink&quot; href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;#fig-3&quot;&gt;Voir la figure 3 sur le site ↗&lt;&#x2F;a&gt;
  
&lt;&#x2F;figure&gt;

&lt;p&gt;L&#x27;étude Faros sur le même sujet est encore plus précise (Figure 3) : &lt;span class=&quot;mark--soft&quot; data-fig=&quot;3&quot;&gt;le gain individuel s&#x27;évanouit en file d&#x27;attente d&#x27;équipe&lt;&#x2F;span&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. Les gains se transforment en files d&#x27;attente.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;la-dette-technique-devient-invisible&quot;&gt;La dette technique devient invisible&lt;&#x2F;h3&gt;

&lt;figure class=&quot;visuel visuel--chart visuel--side&quot; id=&quot;fig-4&quot; data-anchor=&quot;fig-4&quot; role=&quot;figure&quot; aria-labelledby=&quot;v3-title v3-desc&quot;&gt;
  &lt;header class=&quot;visuel__band&quot;&gt;
    &lt;span class=&quot;visuel__band-mark&quot; aria-hidden=&quot;true&quot;&gt;▍&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-num&quot;&gt;Figure 4&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-tag&quot;&gt;GitClear · 2020 → 2024&lt;&#x2F;span&gt;
  &lt;&#x2F;header&gt;


  &lt;p class=&quot;visuel__title&quot;&gt;Crossover 2023 : copy-paste passe devant refactoring&lt;&#x2F;p&gt;




  &lt;!-- Légende des courbes : autrefois passée via le paramètre `legend_html`
      du shortcode ; vit désormais en tête du corps colocalisé (la macro
      l&#x27;émettait juste après le titre, avant le SVG — même position). --&gt;
  &lt;ul class=&quot;visuel__legend&quot; aria-label=&quot;Légende des courbes&quot;&gt;
    &lt;li class=&quot;visuel__legend-item&quot;&gt;
      &lt;span class=&quot;visuel__swatch visuel__swatch--copypaste&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;
      &lt;span class=&quot;visuel__legend-label&quot;&gt;copy-paste&lt;&#x2F;span&gt;
      &lt;span class=&quot;visuel__legend-delta&quot;&gt;+4&amp;nbsp;pts&lt;&#x2F;span&gt;
    &lt;&#x2F;li&gt;
    &lt;li class=&quot;visuel__legend-item&quot;&gt;
      &lt;span class=&quot;visuel__swatch visuel__swatch--refactor&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;span&gt;
      &lt;span class=&quot;visuel__legend-label&quot;&gt;refactoring&lt;&#x2F;span&gt;
      &lt;span class=&quot;visuel__legend-delta&quot;&gt;−14,6&amp;nbsp;pts&lt;&#x2F;span&gt;
    &lt;&#x2F;li&gt;
  &lt;&#x2F;ul&gt;

  &lt;svg
    class=&quot;visuel__svg&quot;
    viewBox=&quot;0 0 600 420&quot;
    role=&quot;img&quot;
    preserveAspectRatio=&quot;xMidYMid meet&quot;
    xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;2000&#x2F;svg&quot;
  &gt;
    &lt;title id=&quot;v3-title&quot;&gt;Part du copy-paste et part du refactoring dans le code livré, 2020-2024.&lt;&#x2F;title&gt;
    &lt;desc id=&quot;v3-desc&quot;&gt;
      Deux courbes : la part de copy-paste passe de 8,3 % en 2020 à 12,3 % en 2024.
      La part de refactoring chute de 24,1 % à 9,5 % sur la même période. Les deux
      courbes se croisent en 2023, autour de 11,5 %.
    &lt;&#x2F;desc&gt;

    &lt;!-- Graduation horizontale (5 niveaux : 0, 7.5, 15, 22.5, 30 %) --&gt;
    &lt;g class=&quot;visuel__grid&quot; aria-hidden=&quot;true&quot;&gt;
      &lt;line x1=&quot;80&quot;  y1=&quot;360&quot; x2=&quot;580&quot; y2=&quot;360&quot; &#x2F;&gt;
      &lt;line x1=&quot;80&quot;  y1=&quot;280&quot; x2=&quot;580&quot; y2=&quot;280&quot; &#x2F;&gt;
      &lt;line x1=&quot;80&quot;  y1=&quot;200&quot; x2=&quot;580&quot; y2=&quot;200&quot; &#x2F;&gt;
      &lt;line x1=&quot;80&quot;  y1=&quot;120&quot; x2=&quot;580&quot; y2=&quot;120&quot; &#x2F;&gt;
      &lt;line x1=&quot;80&quot;  y1=&quot;40&quot;  x2=&quot;580&quot; y2=&quot;40&quot;  &#x2F;&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Axe Y : labels en % (text-anchor end, à x=72 → max 70vb à gauche) --&gt;
    &lt;g class=&quot;visuel__axis-label visuel__axis-label--y&quot; aria-hidden=&quot;true&quot;&gt;
      &lt;text x=&quot;72&quot; y=&quot;364&quot; text-anchor=&quot;end&quot;&gt;0&amp;#160;%&lt;&#x2F;text&gt;
      &lt;text x=&quot;72&quot; y=&quot;284&quot; text-anchor=&quot;end&quot;&gt;7,5&amp;#160;%&lt;&#x2F;text&gt;
      &lt;text x=&quot;72&quot; y=&quot;204&quot; text-anchor=&quot;end&quot;&gt;15&amp;#160;%&lt;&#x2F;text&gt;
      &lt;text x=&quot;72&quot; y=&quot;124&quot; text-anchor=&quot;end&quot;&gt;22,5&amp;#160;%&lt;&#x2F;text&gt;
      &lt;text x=&quot;72&quot; y=&quot;44&quot;  text-anchor=&quot;end&quot;&gt;30&amp;#160;%&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Axe X : années (step 125 : 80, 205, 330, 455, 580) --&gt;
    &lt;g class=&quot;visuel__axis-label visuel__axis-label--x&quot; aria-hidden=&quot;true&quot;&gt;
      &lt;text x=&quot;80&quot;  y=&quot;385&quot; text-anchor=&quot;middle&quot;&gt;2020&lt;&#x2F;text&gt;
      &lt;text x=&quot;205&quot; y=&quot;385&quot; text-anchor=&quot;middle&quot;&gt;2021&lt;&#x2F;text&gt;
      &lt;text x=&quot;330&quot; y=&quot;385&quot; text-anchor=&quot;middle&quot;&gt;2022&lt;&#x2F;text&gt;
      &lt;text x=&quot;455&quot; y=&quot;385&quot; text-anchor=&quot;middle&quot;&gt;2023&lt;&#x2F;text&gt;
      &lt;text x=&quot;580&quot; y=&quot;385&quot; text-anchor=&quot;middle&quot;&gt;2024&lt;&#x2F;text&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Wipe gauche→droite pour le reveal au scroll : le rect du clipPath
        est mis à l&#x27;échelle (scaleX 0→1) par le CSS, révélant les deux
        courbes dans le sens du temps (2020→2024). Le clip préserve les
        styles de trait (le pointillé du refactoring reste pointillé).
        Sans `.is-revealed`&#x2F;sans JS, le rect est à pleine échelle (cf.
        :root.js dans _editorial.scss) : courbes entières par défaut. --&gt;
    &lt;clipPath id=&quot;v3-wipe&quot;&gt;
      &lt;rect class=&quot;visuel__wipe&quot; x=&quot;80&quot; y=&quot;30&quot; width=&quot;500&quot; height=&quot;345&quot; &#x2F;&gt;
    &lt;&#x2F;clipPath&gt;

    &lt;g clip-path=&quot;url(#v3-wipe)&quot;&gt;
      &lt;!-- Refactoring : descendant (neutre, trait épais en pointillé) --&gt;
      &lt;polyline
        class=&quot;visuel__line visuel__line--refactor&quot;
        points=&quot;80,103 205,158 330,205 455,237 580,259&quot;
      &#x2F;&gt;
      &lt;!-- Copy-paste : ascendant (accent rouge, trait plein) --&gt;
      &lt;polyline
        class=&quot;visuel__line visuel__line--copypaste&quot;
        points=&quot;80,272 205,259 330,248 455,237 580,229&quot;
      &#x2F;&gt;
    &lt;&#x2F;g&gt;

    &lt;!-- Marqueur de crossover en 2023 — pill élargi à 220vb pour caser
        &quot;crossover 2023&quot; à font-size 22vb (≈11px visuels en --side).
        Annotation en jaune pivot (P4) : le rôle « regarde ici » bascule
        du rouge identitaire vers --c-warning sur les figures non-bornes. --&gt;
    &lt;g aria-hidden=&quot;true&quot;&gt;
      &lt;line class=&quot;visuel__cross-tick visuel__cross-tick--pivot&quot; x1=&quot;455&quot; y1=&quot;237&quot; x2=&quot;455&quot; y2=&quot;178&quot; &#x2F;&gt;
      &lt;rect class=&quot;visuel__cross-pill visuel__cross-pill--pivot&quot; x=&quot;345&quot; y=&quot;148&quot; width=&quot;220&quot; height=&quot;36&quot; rx=&quot;0&quot; &#x2F;&gt;
      &lt;text class=&quot;visuel__cross-label visuel__cross-label--pivot&quot; x=&quot;455&quot; y=&quot;170&quot; text-anchor=&quot;middle&quot;&gt;
        crossover 2023
      &lt;&#x2F;text&gt;
      &lt;circle class=&quot;visuel__cross visuel__cross--pivot&quot; cx=&quot;455&quot; cy=&quot;237&quot; r=&quot;7&quot; &#x2F;&gt;
    &lt;&#x2F;g&gt;

  &lt;&#x2F;svg&gt;



  
  
  &lt;figcaption class=&quot;visuel__caption&quot;&gt;
    
    &lt;span class=&quot;visuel__caption-text&quot;&gt;211&amp;#160;millions de lignes de code modifiées, analysées chez Google, Microsoft, Meta et plusieurs entreprises cotées.&lt;&#x2F;span&gt;
    
    
    &lt;span class=&quot;visuel__caption-source&quot;&gt;Source : GitClear, &lt;em&gt;AI Copilot Code Quality 2025&lt;&#x2F;em&gt;, n.&amp;#160;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#5&quot;&gt;5&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;span&gt;
    
  &lt;&#x2F;figcaption&gt;
  
  
  
  &lt;a class=&quot;visuel__feedlink&quot; href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;#fig-4&quot;&gt;Voir la figure 4 sur le site ↗&lt;&#x2F;a&gt;
  
&lt;&#x2F;figure&gt;

&lt;p&gt;L&#x27;étude GitClear, qui a analysé 211 millions de lignes de code modifiées entre 2020 et 2024 chez Google, Microsoft, Meta et plusieurs entreprises cotées, mesure une transformation des pratiques&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#5&quot;&gt;5&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. La Figure 4 trace l&#x27;inversion : &lt;span class=&quot;mark--soft&quot; data-fig=&quot;4&quot;&gt;la part de copy-paste monte, celle de refactoring chute, les deux courbes se croisent en 2023&lt;&#x2F;span&gt;. Au-delà de cette inversion, un autre signal : le code « churned » — réécrit dans les deux semaines suivant son commit — a doublé, de 3,1 % à 5,7 %.&lt;&#x2F;p&gt;
&lt;p&gt;Lorsque j&#x27;ouvre les projets en audit de code, je découvre de plus en plus souvent des fonctions de 800 lignes, empilées au fil des commits automatiques, et des tests unitaires identiques dans trois fichiers différents.&lt;&#x2F;p&gt;
&lt;p&gt;Le rapport DORA 2024 de Google, qui suit la performance de livraison logicielle depuis une décennie, confirme la tension : une augmentation de 25 % de l&#x27;adoption IA accélère les revues de code mais diminue la stabilité de livraison de 7,2 %&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#6&quot;&gt;6&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;

&lt;figure class=&quot;visuel visuel--quote visuel--side&quot; id=&quot;fig-5&quot; data-anchor=&quot;fig-5&quot; role=&quot;figure&quot; aria-labelledby=&quot;v5-title v5-desc&quot;&gt;
  &lt;header class=&quot;visuel__band&quot;&gt;
    &lt;span class=&quot;visuel__band-mark&quot; aria-hidden=&quot;true&quot;&gt;▍&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-num&quot;&gt;Figure 5&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-tag&quot;&gt;MIT · WSJ 2025&lt;&#x2F;span&gt;
  &lt;&#x2F;header&gt;





  &lt;p id=&quot;v5-title&quot; class=&quot;sr-only&quot;&gt;Citation d&#x27;Armando Solar-Lezama (MIT) comparant l&#x27;IA à une carte de crédit toute neuve qui permet d&#x27;accumuler de la dette technique inédite.&lt;&#x2F;p&gt;
  &lt;p id=&quot;v5-desc&quot; class=&quot;sr-only&quot;&gt;Source : Wall Street Journal, cité dans DevOps.com 2025.&lt;&#x2F;p&gt;

  &lt;blockquote class=&quot;visuel__quote&quot;&gt;
    &lt;span class=&quot;visuel__quote-mark&quot; aria-hidden=&quot;true&quot;&gt;«&lt;&#x2F;span&gt;
    &lt;p class=&quot;visuel__quote-body&quot;&gt;L&#x27;IA est comme une carte de crédit toute neuve qui va nous permettre d&#x27;accumuler de &lt;span class=&quot;mark--soft&quot; data-fig=&quot;5&quot;&gt;la dette technique&lt;&#x2F;span&gt; d&#x27;une manière qu&#x27;on n&#x27;avait jamais pu auparavant.&lt;&#x2F;p&gt;
    &lt;footer class=&quot;visuel__quote-attr&quot;&gt;
      &lt;p class=&quot;visuel__quote-name&quot;&gt;Armando Solar-Lezama&lt;&#x2F;p&gt;
      &lt;p class=&quot;visuel__quote-affil&quot;&gt;professeur au MIT&lt;&#x2F;p&gt;
    &lt;&#x2F;footer&gt;
  &lt;&#x2F;blockquote&gt;



  
  
  &lt;figcaption class=&quot;visuel__caption&quot;&gt;
    
    &lt;span class=&quot;visuel__caption-text&quot;&gt;Une dette qui se contracte plus vite qu&#x27;elle ne se rembourse&amp;#160;: la métaphore éclaire les chiffres GitClear et DORA réunis.&lt;&#x2F;span&gt;
    
    
    &lt;span class=&quot;visuel__caption-source&quot;&gt;Source&amp;#160;: Wall Street Journal, cité dans DevOps.com, 2025, n.&amp;#160;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#7&quot;&gt;7&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;span&gt;
    
  &lt;&#x2F;figcaption&gt;
  
  
  
  &lt;a class=&quot;visuel__feedlink&quot; href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;#fig-5&quot;&gt;Voir la figure 5 sur le site ↗&lt;&#x2F;a&gt;
  
&lt;&#x2F;figure&gt;

&lt;p&gt;Une citation d&#x27;Armando Solar-Lezama, professeur au MIT, résume mieux que je ne saurais le faire : &lt;em&gt;« L&#x27;IA est comme une carte de crédit toute neuve qui va nous permettre d&#x27;accumuler de la dette technique d&#x27;une manière qu&#x27;on n&#x27;avait jamais pu auparavant »&lt;&#x2F;em&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#7&quot;&gt;7&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;le-terrain-change-avant-qu-on-ait-fini-d-apprendre&quot;&gt;Le terrain change avant qu&#x27;on ait fini d&#x27;apprendre&lt;&#x2F;h3&gt;
&lt;p&gt;Une dimension manque presque toujours dans les études : à quel stade d&#x27;apprentissage sont les développeurs mesurés ? Les outils évoluent à un rythme qui rend la stabilisation d&#x27;une pratique difficile. Entre Cursor début 2025, Cursor mi-2025, Claude Code à l&#x27;automne 2025, et les agents autonomes qu&#x27;on déploie en 2026, ce ne sont plus les mêmes objets.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai commencé par l&#x27;autocomplétion intelligente, avec Tabnine en 2018, puis Copilot. Codium — devenu Qodo — a été mon premier reviewer IA. Au printemps 2024, je faisais mes premiers Code Katas en ping-pong avec une IA. L&#x27;été suivant, un collègue m&#x27;a dit qu&#x27;il avait codé un projet entier sans écrire la moindre ligne lui-même. J&#x27;ai voulu essayer et j&#x27;ai constaté très vite que c&#x27;était plus efficace que de mixer ma production et celle de l&#x27;IA. À chaque transition, j&#x27;ai dû réapprendre à faire du vélo.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;la-success-story-est-visible-l-incident-l-est-moins&quot;&gt;La success story est visible, l&#x27;incident l&#x27;est moins&lt;&#x2F;h3&gt;
&lt;p&gt;Le dernier biais est statistique : on entend ceux qui réussissent avec l&#x27;IA. On entend moins &lt;span class=&quot;mark--soft&quot; data-fig=&quot;6&quot;&gt;ceux qui ont stabilisé pendant trois semaines un outil construit en trois jours&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;

&lt;figure class=&quot;visuel visuel--incidents visuel--side&quot; id=&quot;fig-6&quot; data-anchor=&quot;fig-6&quot; role=&quot;figure&quot; aria-labelledby=&quot;v4-title v4-desc&quot;&gt;
  &lt;header class=&quot;visuel__band&quot;&gt;
    &lt;span class=&quot;visuel__band-mark&quot; aria-hidden=&quot;true&quot;&gt;▍&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-num&quot;&gt;Figure 6&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-tag&quot;&gt;Incidents · 2025-2026&lt;&#x2F;span&gt;
  &lt;&#x2F;header&gt;


  &lt;p class=&quot;visuel__title&quot;&gt;Deux fuites emblématiques&lt;&#x2F;p&gt;




  &lt;p id=&quot;v4-title&quot; class=&quot;sr-only&quot;&gt;Deux incidents 2025-2026 emblématiques du trade-off vitesse↔sécurité de l&#x27;IA générative.&lt;&#x2F;p&gt;
  &lt;p id=&quot;v4-desc&quot; class=&quot;sr-only&quot;&gt;Lovable, faille CVE-2025-48757 : schémas de base de données générés sans politique de sécurité au niveau ligne, plus de 170 applications en production exposées. Moltbook, faille 2026 : endpoints API générés sans contrôle d&#x27;autorisation, 1,5 million de tokens d&#x27;authentification leakés.&lt;&#x2F;p&gt;

  &lt;ul class=&quot;visuel__incidents&quot; role=&quot;list&quot;&gt;
    &lt;li class=&quot;visuel__incident&quot;&gt;
      &lt;p class=&quot;visuel__incident-ref&quot;&gt;
        &lt;a href=&quot;https:&#x2F;&#x2F;nvd.nist.gov&#x2F;vuln&#x2F;detail&#x2F;CVE-2025-48757&quot;&gt;CVE-2025-48757&lt;&#x2F;a&gt;
      &lt;&#x2F;p&gt;
      &lt;h3 class=&quot;visuel__incident-target&quot;&gt;Lovable&lt;&#x2F;h3&gt;
      &lt;p class=&quot;visuel__incident-fault&quot;&gt;schémas DB générés sans &lt;em&gt;row-level security&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
      &lt;p class=&quot;visuel__incident-kpi&quot;&gt;
        &lt;span class=&quot;visuel__kpi-num visuel__kpi-num--ink&quot;&gt;+170&lt;&#x2F;span&gt;
        &lt;span class=&quot;visuel__kpi-unit&quot;&gt;apps exposées en prod&lt;&#x2F;span&gt;
      &lt;&#x2F;p&gt;
    &lt;&#x2F;li&gt;
    &lt;li class=&quot;visuel__incident&quot;&gt;
      &lt;p class=&quot;visuel__incident-ref&quot;&gt;incident · 2026&lt;&#x2F;p&gt;
      &lt;h3 class=&quot;visuel__incident-target&quot;&gt;Moltbook&lt;&#x2F;h3&gt;
      &lt;p class=&quot;visuel__incident-fault&quot;&gt;endpoints API générés sans contrôle d&#x27;autorisation&lt;&#x2F;p&gt;
      &lt;p class=&quot;visuel__incident-kpi&quot;&gt;
        &lt;span class=&quot;visuel__kpi-num visuel__kpi-num--pivot&quot;&gt;1,5&amp;#160;M&lt;&#x2F;span&gt;
        &lt;span class=&quot;visuel__kpi-unit&quot;&gt;tokens d&#x27;auth leakés&lt;&#x2F;span&gt;
      &lt;&#x2F;p&gt;
    &lt;&#x2F;li&gt;
  &lt;&#x2F;ul&gt;



  
  
  &lt;figcaption class=&quot;visuel__caption&quot;&gt;
    
    &lt;span class=&quot;visuel__caption-text&quot;&gt;CVE référencée + leak documenté. Dans les deux cas, code généré par IA déployé sans contrôle de sécurité (row-level security, autorisations endpoints).&lt;&#x2F;span&gt;
    
    
    &lt;span class=&quot;visuel__caption-source&quot;&gt;Source&amp;#160;: Vibe Coder Blog, &lt;em&gt;Security Researchers Sound the Alarm on AI Code Vulnerabilities&lt;&#x2F;em&gt;, n.&amp;#160;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#8&quot;&gt;8&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;span&gt;
    
  &lt;&#x2F;figcaption&gt;
  
  
  
  &lt;a class=&quot;visuel__feedlink&quot; href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;#fig-6&quot;&gt;Voir la figure 6 sur le site ↗&lt;&#x2F;a&gt;
  
&lt;&#x2F;figure&gt;

&lt;p&gt;Et pourtant, les incidents s&#x27;accumulent. La CVE-2025-48757 a exposé une faille chez Lovable, plateforme de codage IA, qui générait des schémas de base de données sans politiques de sécurité au niveau ligne. Plus de 170 applications en production affectées&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#8&quot;&gt;8&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. La faille Moltbook a leaké 1,5 million de tokens d&#x27;authentification, parce que les endpoints API générés ne vérifiaient pas les autorisations&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#8&quot;&gt;8&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Plus structurellement : selon Veracode, 45 % du code généré par IA contient au moins une vulnérabilité OWASP&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#9&quot;&gt;9&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. Une autre étude mesure que ce code contient 2,74 fois plus de vulnérabilités que le code écrit par des humains&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#10&quot;&gt;10&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#11&quot;&gt;11&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Les méthodologies varient, les chiffres se discutent. Le signal, lui, converge : produire vite avec l&#x27;IA coûte en qualité de livraison, et les métriques d&#x27;adoption ne le voient pas.&lt;&#x2F;p&gt;

&lt;figure class=&quot;visuel visuel--table visuel--inline&quot; id=&quot;fig-7&quot; data-anchor=&quot;fig-7&quot; role=&quot;figure&quot; aria-labelledby=&quot;v6-title v6-desc&quot;&gt;
  &lt;header class=&quot;visuel__band&quot;&gt;
    &lt;span class=&quot;visuel__band-mark&quot; aria-hidden=&quot;true&quot;&gt;▍&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-num&quot;&gt;Figure 7&lt;&#x2F;span&gt;
    &lt;span class=&quot;visuel__band-tag&quot;&gt;Synthèse&lt;&#x2F;span&gt;
  &lt;&#x2F;header&gt;


  &lt;p class=&quot;visuel__title&quot;&gt;Quatre angles morts du discours dominant&lt;&#x2F;p&gt;




  &lt;table class=&quot;visuel__table&quot; aria-labelledby=&quot;v6-title&quot; aria-describedby=&quot;v6-desc&quot;&gt;
    &lt;caption id=&quot;v6-desc&quot; class=&quot;sr-only&quot;&gt;Tableau de synthèse de la section : quatre angles morts du discours dominant sur la productivité IA, chacun avec son chiffre-clé et sa source.&lt;&#x2F;caption&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;col&quot;&gt;Ce que les métriques ratent&lt;&#x2F;th&gt;
        &lt;th scope=&quot;col&quot;&gt;Chiffre-clé&lt;&#x2F;th&gt;
        &lt;th scope=&quot;col&quot;&gt;Source&lt;&#x2F;th&gt;
      &lt;&#x2F;tr&gt;
    &lt;&#x2F;thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;row&quot;&gt;Perception &amp;nbsp;&lt;span class=&quot;visuel__sym&quot;&gt;≠&lt;&#x2F;span&gt;&amp;nbsp; réalité&lt;&#x2F;th&gt;
        &lt;td&gt;
          &lt;span class=&quot;visuel__table-num visuel__table-num--pivot&quot;&gt;−19&amp;#160;%&lt;&#x2F;span&gt;
          &lt;span class=&quot;visuel__table-meta&quot;&gt;vs +24&amp;#160;% attendu&lt;&#x2F;span&gt;
        &lt;&#x2F;td&gt;
        &lt;td&gt;&lt;span class=&quot;visuel__table-source&quot;&gt;METR &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#3&quot;&gt;3&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;span&gt;&lt;&#x2F;td&gt;
      &lt;&#x2F;tr&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;row&quot;&gt;Rédaction &amp;nbsp;&lt;span class=&quot;visuel__sym&quot;&gt;≠&lt;&#x2F;span&gt;&amp;nbsp; livraison&lt;&#x2F;th&gt;
        &lt;td&gt;
          &lt;span class=&quot;visuel__table-num visuel__table-num--ink&quot;&gt;+91&amp;#160;% &#x2F; +98&amp;#160;%&lt;&#x2F;span&gt;
          &lt;span class=&quot;visuel__table-meta&quot;&gt;revue · PR créées&lt;&#x2F;span&gt;
        &lt;&#x2F;td&gt;
        &lt;td&gt;&lt;span class=&quot;visuel__table-source&quot;&gt;Faros &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#4&quot;&gt;4&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;span&gt;&lt;&#x2F;td&gt;
      &lt;&#x2F;tr&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;row&quot;&gt;Dette technique invisible&lt;&#x2F;th&gt;
        &lt;td&gt;
          &lt;span class=&quot;visuel__table-num visuel__table-num--ink&quot;&gt;8,3&amp;#160;%&amp;#160;→&amp;#160;12,3&amp;#160;%&lt;&#x2F;span&gt;
          &lt;span class=&quot;visuel__table-meta&quot;&gt;part de copy-paste, 2020 → 2024&lt;&#x2F;span&gt;
        &lt;&#x2F;td&gt;
        &lt;td&gt;&lt;span class=&quot;visuel__table-source&quot;&gt;GitClear &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#5&quot;&gt;5&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&amp;#160;+ DORA &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#6&quot;&gt;6&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;span&gt;&lt;&#x2F;td&gt;
      &lt;&#x2F;tr&gt;
      &lt;tr&gt;
        &lt;th scope=&quot;row&quot;&gt;Success &amp;nbsp;&lt;span class=&quot;visuel__sym&quot;&gt;≠&lt;&#x2F;span&gt;&amp;nbsp; incident&lt;&#x2F;th&gt;
        &lt;td&gt;
          &lt;span class=&quot;visuel__table-num visuel__table-num--ink&quot;&gt;45&amp;#160;%&lt;&#x2F;span&gt;
          &lt;span class=&quot;visuel__table-meta&quot;&gt;du code IA = ≥ 1 CVE OWASP&lt;&#x2F;span&gt;
        &lt;&#x2F;td&gt;
        &lt;td&gt;&lt;span class=&quot;visuel__table-source&quot;&gt;Veracode &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#9&quot;&gt;9&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;span&gt;&lt;&#x2F;td&gt;
      &lt;&#x2F;tr&gt;
    &lt;&#x2F;tbody&gt;
  &lt;&#x2F;table&gt;



  
  
  &lt;figcaption class=&quot;visuel__caption&quot;&gt;
    
    &lt;span class=&quot;visuel__caption-text&quot;&gt;Quatre lignes, quatre études indépendantes : METR (expérience contrôlée), Faros (télémétrie 22&amp;#160;000 devs), GitClear + DORA (211&amp;#160;M lignes + benchmark décennal), Veracode (audit GenAI 2025).&lt;&#x2F;span&gt;
    
    
  &lt;&#x2F;figcaption&gt;
  
  
  
  &lt;a class=&quot;visuel__feedlink&quot; href=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;avec-l-ia-je-code-plus-lentement&#x2F;#fig-7&quot;&gt;Voir la figure 7 sur le site ↗&lt;&#x2F;a&gt;
  
&lt;&#x2F;figure&gt;

&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;la-vitesse-n-est-pas-la-precipitation&quot;&gt;La vitesse n&#x27;est pas la précipitation&lt;&#x2F;h2&gt;
&lt;p&gt;Lorsqu&#x27;on compare le temps de trajet en avion ou en voiture, on compare de porte à porte plutôt que le temps passé dans le véhicule. C&#x27;est la vitesse. Sauter dans le premier bus arrivé et se rendre compte que ce n&#x27;est pas la bonne direction, c&#x27;est de la précipitation. Automatiser une tâche de développement peut relever de l&#x27;un ou de l&#x27;autre. L&#x27;IA ne fait pas la différence entre les deux. C&#x27;est le développeur qui décide où et comment l&#x27;utiliser. Personne n&#x27;aime s&#x27;apercevoir que la mémoire de Claude Code a mélangé le nom d&#x27;un client avec un autre le jour de la démo. Cet arbitrage régulier prend du temps. Un temps incompressible mais indispensable qui se prend avant d&#x27;écrire. C&#x27;est le temps nécessaire à la qualité. Si je devais résumer en deux formules :&lt;&#x2F;p&gt;
&lt;div class=&quot;formules&quot; role=&quot;group&quot; aria-label=&quot;Deux formules clés&quot;&gt;
  &lt;p class=&quot;formules__row&quot;&gt;
    &lt;span class=&quot;formules__term&quot;&gt;Précipitation&lt;&#x2F;span&gt;
    &lt;span class=&quot;formules__eq&quot; aria-hidden=&quot;true&quot;&gt;=&lt;&#x2F;span&gt;
    &lt;span class=&quot;formules__rhs&quot;&gt;
      &lt;span class=&quot;formules__factor&quot;&gt;accélération&lt;&#x2F;span&gt;
      &lt;span class=&quot;formules__op&quot; aria-hidden=&quot;true&quot;&gt;−&lt;&#x2F;span&gt;
      &lt;span class=&quot;formules__factor&quot;&gt;attention&lt;&#x2F;span&gt;
    &lt;&#x2F;span&gt;
  &lt;&#x2F;p&gt;
  &lt;p class=&quot;formules__row&quot;&gt;
    &lt;span class=&quot;formules__term&quot;&gt;Vitesse&lt;&#x2F;span&gt;
    &lt;span class=&quot;formules__eq&quot; aria-hidden=&quot;true&quot;&gt;=&lt;&#x2F;span&gt;
    &lt;span class=&quot;formules__rhs&quot;&gt;
      &lt;span class=&quot;formules__factor&quot;&gt;accélération&lt;&#x2F;span&gt;
      &lt;span class=&quot;formules__op&quot; aria-hidden=&quot;true&quot;&gt;+&lt;&#x2F;span&gt;
      &lt;span class=&quot;formules__factor&quot;&gt;réflexion&lt;&#x2F;span&gt;
      &lt;span class=&quot;formules__op&quot; aria-hidden=&quot;true&quot;&gt;+&lt;&#x2F;span&gt;
      &lt;span class=&quot;formules__factor&quot;&gt;qualité&lt;&#x2F;span&gt;
    &lt;&#x2F;span&gt;
  &lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;p&gt;Avant l&#x27;IA, nous passions 10 % de notre temps à écrire du code, et 90 % à le relire, le concevoir, y réfléchir, le réorganiser et aller lire de la documentation. Si nous possédons un outil qui peut accélérer ces 10 %, le gain est faible à long terme. Il ne peut être pérenne qu&#x27;à deux conditions : savoir accélérer une part des 90 % et investir plus de temps sur ce qu&#x27;on n&#x27;accélère pas.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;ce-qui-vient-ensuite&quot;&gt;Ce qui vient ensuite&lt;&#x2F;h2&gt;
&lt;p&gt;Avec daily-ops, j&#x27;avais identifié le logiciel accidentel et ajouté la structure dès le 25 avril. Ce matin encore, quatre semaines plus tard, je corrigeais un bug né des premiers jours. La discipline ne suffit pas à effacer la précipitation initiale.&lt;&#x2F;p&gt;
&lt;p&gt;Si la vitesse mesurée n&#x27;est pas la productivité réelle, et si la discipline n&#x27;efface pas la précipitation, alors la question devient : qu&#x27;est-ce que l&#x27;IA m&#x27;apporte &lt;em&gt;vraiment&lt;&#x2F;em&gt; ? Ce sera l&#x27;objet du second article.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;note-methodique-quatre-biais&quot;&gt;Note méthodique — quatre biais&lt;&#x2F;h2&gt;
&lt;p&gt;Article basé sur mes recherches personnelles, dont je partage les sources. J&#x27;attire l&#x27;attention sur quatre biais qui peuvent creuser un écart entre nos points de vue :&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Early-adopter&lt;&#x2F;strong&gt; : la nature et le nombre d&#x27;années de mon expérience ont une influence. Nos domaines, niveau de responsabilité et organisation varient. J&#x27;essaie de me renseigner et de prendre en compte le panel le plus large possible, et suis conscient que ma vision a des angles morts.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Temporalité&lt;&#x2F;strong&gt; : certaines études citées ont plus d&#x27;un an en mai 2026. Le domaine de l&#x27;IA change assez vite pour que les données aient déjà perdu du sens. J&#x27;ai sélectionné les sources qui sont, à ma connaissance, toujours valables.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Sélection des incidents&lt;&#x2F;strong&gt; : je ne traite pas ici les incidents où l&#x27;IA n&#x27;est qu&#x27;un démultiplicateur d&#x27;une faute humaine évidente — supprimer la base de prod sans backup, exposer des credentials sans audit. Ces cas existent en abondance, mais ils racontent moins l&#x27;IA que la pratique qui l&#x27;entoure.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Mes croyances et connaissances&lt;&#x2F;strong&gt; : j&#x27;écris en faveur d&#x27;une pratique que j&#x27;ai adoptée. Y adhérer ou pas peut donner une compréhension différente de mes propos. Sur ce biais en particulier, à vous de faire la part des choses.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;notes-et-references&quot;&gt;Notes et références&lt;&#x2F;h2&gt;
&lt;!-- Notes en HTML manuel (id == label == ancre). NE PAS repasser en
     footnotes markdown `[^N]` : Zola renumérote alors selon l&#x27;ordre des
     seuls appels markdown, or les notes 1&#x2F;2 ne sont appelées que par des
     ancres HTML (encart paradoxe) et les figures portent des `#N` codés en
     dur — le compteur auto désynchronise tout. Cf. commit de cette correction. --&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Second Talent, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.secondtalent.com&#x2F;resources&#x2F;ai-coding-assistant-statistics&#x2F;&quot;&gt;&lt;em&gt;AI Coding Assistant Statistics &amp;amp; Trends [2025]&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, secondtalent.com, 2025.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;2&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;Stack Overflow, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;survey.stackoverflow.co&#x2F;2025&#x2F;&quot;&gt;&lt;em&gt;Developer Survey 2025&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, stackoverflow.co.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;3&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;3&lt;&#x2F;sup&gt;
&lt;p&gt;Becker, J. et al., &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2507.09089&quot;&gt;&lt;em&gt;Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, METR, arXiv:2507.09089, juillet 2025 (&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;metr.org&#x2F;blog&#x2F;2025-07-10-early-2025-ai-experienced-os-dev-study&#x2F;&quot;&gt;résumé METR&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;4&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;4&lt;&#x2F;sup&gt;
&lt;p&gt;Faros AI, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.faros.ai&#x2F;blog&#x2F;ai-software-engineering&quot;&gt;&lt;em&gt;The AI Productivity Paradox Research Report&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, faros.ai, 2025.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;5&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;5&lt;&#x2F;sup&gt;
&lt;p&gt;GitClear, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.gitclear.com&#x2F;ai_assistant_code_quality_2025_research&quot;&gt;&lt;em&gt;AI Copilot Code Quality 2025 Research Report&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, gitclear.com, février 2025.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;6&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;6&lt;&#x2F;sup&gt;
&lt;p&gt;Google, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;dora.dev&#x2F;research&#x2F;2024&#x2F;dora-report&#x2F;&quot;&gt;&lt;em&gt;Accelerate State of DevOps Report 2024&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, dora.dev.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;7&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;7&lt;&#x2F;sup&gt;
&lt;p&gt;Solar-Lezama, A., interview au &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.wsj.com&#x2F;&quot;&gt;&lt;em&gt;Wall Street Journal&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, citée dans &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;devops.com&#x2F;ai-in-software-development-productivity-at-the-cost-of-code-quality&#x2F;&quot;&gt;DevOps.com&lt;&#x2F;a&gt;, &lt;em&gt;AI in Software Development: Productivity at the Cost of Code Quality?&lt;&#x2F;em&gt;, 2025.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;8&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;8&lt;&#x2F;sup&gt;
&lt;p&gt;Vibe Coder Blog, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;blog.vibecoder.me&#x2F;security-researchers-ai-code-vulnerability-crisis&quot;&gt;&lt;em&gt;Security Researchers Sound the Alarm on AI Code Vulnerabilities&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, blog.vibecoder.me, avril 2026&amp;nbsp;; voir aussi &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;nvd.nist.gov&#x2F;vuln&#x2F;detail&#x2F;CVE-2025-48757&quot;&gt;CVE-2025-48757&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;9&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;9&lt;&#x2F;sup&gt;
&lt;p&gt;Veracode, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.veracode.com&#x2F;resources&#x2F;analyst-reports&#x2F;2025-genai-code-security-report&#x2F;&quot;&gt;&lt;em&gt;2025 GenAI Code Security Report&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, veracode.com.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;10&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;10&lt;&#x2F;sup&gt;
&lt;p&gt;SoftwareSeni, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.softwareseni.com&#x2F;risk-management-and-security-framework-for-legacy-system-modernization&#x2F;&quot;&gt;analyse de Veracode 2025 et Apiiro&lt;&#x2F;a&gt;, softwareseni.com, février 2026.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;11&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;11&lt;&#x2F;sup&gt;
&lt;p&gt;Futurity, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.futurity.org&#x2F;ai-generated-code-vulnerable-3330542&#x2F;&quot;&gt;&lt;em&gt;AI-generated code is vulnerable&lt;&#x2F;em&gt;&lt;&#x2F;a&gt;, futurity.org, 2026.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
  </entry>
  <entry xml:lang="fr">
    <title>Pourquoi ce site, et pourquoi maintenant</title>
    <published>2026-05-22T00:00:00+00:00</published>
    <updated>2026-05-22T00:00:00+00:00</updated>
    <link rel="alternate" type="text/html" href="https://bastiengallay.com/ecrits/pourquoi-ce-site/"/>
    <id>https://bastiengallay.com/ecrits/pourquoi-ce-site/</id>
    <summary type="html">D&#x27;un billard mal recopié sur Thomson TO9 à une discipline : pourquoi ce site existe.</summary><content type="html" xml:base="https://bastiengallay.com/ecrits/pourquoi-ce-site/">&lt;p&gt;Un été, à 9 ou 10 ans, je tenais un hors-série du magazine &lt;em&gt;Tilt&lt;&#x2F;em&gt; avec
des listings en BASIC. J&#x27;ai encore la couverture en tête. Avec mon
frère, nous avons copié plusieurs pages de code sur notre
Thomson TO9. Par séances de trente minutes à une heure, l&#x27;un dictait et
relisait pendant que l&#x27;autre tapait ce programme que nous ne comprenions qu&#x27;à
moitié. On a fini par abandonner. Vers la fin des vacances, j&#x27;ai repris le
hors-série et j&#x27;ai terminé seul. J&#x27;ai enfin pu lancer le programme. La
forme du billard et quelques billes s&#x27;affichaient. Mais un grand trait au
milieu de l&#x27;écran montrait qu&#x27;il y avait eu des erreurs de recopie. Le jeu
ne répondait à rien.&lt;&#x2F;p&gt;
&lt;figure class=&quot;ecrit-figure&quot;&gt;
  &lt;img src=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;pourquoi-ce-site&#x2F;tilt-hs05-aout-1987.webp&quot; width=&quot;1400&quot; height=&quot;1883&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; alt=&quot;Tilt - Micro Jeux - Numéro HS 05 - Août 1987 - Couverture&quot;&gt;
  &lt;figcaption class=&quot;fig-mark&quot;&gt;FIG. 1 · Couverture &lt;em&gt;Tilt — Micro-Jeux&lt;&#x2F;em&gt;, HS 05, août 1987 · &lt;a href=&quot;https:&#x2F;&#x2F;www.abandonware-magazines.org&#x2F;affiche_mag.php?mag=28&amp;amp;num=1013&quot; rel=&quot;external&quot;&gt;scan abandonware-magazines&lt;&#x2F;a&gt;&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;Patiemment, j&#x27;ai relu et comparé, me rendant compte que certains numéros de
ligne en BASIC avaient été décalés. Je démarrais le programme à nouveau,
voyant parfois un changement, parfois des erreurs de syntaxe nouvelles. J&#x27;ai
corrigé avec le listing. Il était plus fiable que mes
déductions. L&#x27;erreur venait de la transcription. Le programme, lui,
fonctionnait. La rentrée approchant, j&#x27;ai laissé tomber. Je n&#x27;avais plus
envie de revenir dessus.&lt;&#x2F;p&gt;
&lt;p&gt;Le décor de cet été-là s&#x27;était posé quelques années plus tôt.
J&#x27;apprenais à lire et à écrire
quand mes parents nous ont offert ce &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Thomson_TO9&quot;&gt;Thomson TO9&lt;&#x2F;a&gt;,
sur lequel j&#x27;ai découvert le BASIC. À cet âge, je pouvais lire tout seul &lt;em&gt;Un éléphant ça compte
énormément&lt;&#x2F;em&gt; d&#x27;Helme Heine. Je collais une étiquette en minuscules
cursives &lt;em&gt;garage de clarke&lt;&#x2F;em&gt;, et racontais &lt;em&gt;« Clarke a accéléré droit vers
le tremplin. Il a pris son envol et atterri de l&#x27;autre côté de la rivière.
Il avait échappé à l&#x27;avalanche. »&lt;&#x2F;em&gt; Je tapais à deux doigts des GOTO
infinis, un jeu &lt;em&gt;« nombre secret »&lt;&#x2F;em&gt; avec des IF&#x2F;PRINT&#x2F;INPUT. J&#x27;essayais de
dessiner un polygone avec POINT&#x2F;LINE — il s&#x27;avérait mal fermé à l&#x27;affichage.&lt;&#x2F;p&gt;
&lt;figure class=&quot;ecrit-figure&quot;&gt;
  &lt;img src=&quot;https:&#x2F;&#x2F;bastiengallay.com&#x2F;ecrits&#x2F;pourquoi-ce-site&#x2F;elephant-ca-compte-enormement.png&quot; alt=&quot;« Un éléphant ça compte énormément » d&#x27;Helme Heine, folio benjamin.&quot;&gt;
  &lt;figcaption class=&quot;fig-mark&quot;&gt;FIG. 2 · Helme Heine, &lt;em&gt;Un éléphant ça compte énormément&lt;&#x2F;em&gt;, Gallimard Jeunesse, coll. folio benjamin.&lt;&#x2F;figcaption&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;Ce qu&#x27;un enfant ne pouvait pas deviner, c&#x27;était comment ces trois gestes
allaient n&#x27;en faire qu&#x27;un. Le code, la lecture, l&#x27;écriture : une seule
discipline.&lt;&#x2F;p&gt;
&lt;p&gt;Cette discipline est &lt;mark class=&quot;mark mark--soft&quot;&gt;l&#x27;alignement de la pensée avec l&#x27;écrit&lt;&#x2F;mark&gt;
.
J&#x27;en ai appris l&#x27;exigence par le code, mais elle dépasse le code. Ce site existe pour
incarner cette exigence, par des objets concrets : outils, écrits, prises
de position.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;figure class=&quot;listing listing--right&quot;&gt;
  &lt;figcaption class=&quot;listing__header&quot;&gt;&lt;span class=&quot;listing__caption&quot;&gt;LISTING 1 · ARBORESCENCE&lt;&#x2F;span&gt;&lt;span class=&quot;listing__tag&quot; style=&quot;--tag-color: var(--c-info);&quot;&gt;TREE&lt;&#x2F;span&gt;
  &lt;&#x2F;figcaption&gt;
  &lt;pre class=&quot;listing__body&quot;&gt;&lt;code&gt;experiments&#x2F;
├── ai
│   ├── assist
│   ├── audiobook-pipeline
│   ├── autopreneur
│   ├── bmad-context-viewer
│   ├── mercurai
│   ├── notebooklm-py
│   ├── rhetorix
│   └── SDD
├── autopreneur
│   └── voice-notes
├── games
│   ├── drop-escape-clone
│   ├── lab-doku
│   └── mdr-serious-game
├── lang-tools
│   ├── carbon
│   └── lean4
├── media
│   └── music-gen
└── misc

22 directories&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;&#x2F;figure&gt;
&lt;p&gt;J&#x27;ai l&#x27;habitude de tester la moindre idée qui me passe par la tête. Je
stocke ces expériences dans un dossier &lt;code&gt;experiments&#x2F;&lt;&#x2F;code&gt;. Je le trie
systématiquement, impitoyablement : je compare chaque chantier 2 à 2. Seuls
les plus pertinents restent. C&#x27;est le &lt;em&gt;death-match&lt;&#x2F;em&gt; des prototypes pour gagner le
droit d&#x27;être promu au rang de projet. Et le prochain sur la ligne d&#x27;arrivée
est &lt;strong&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;rhetorix.lovable.app&#x2F;&quot;&gt;Rhetorix&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt; : décrypter la rhétorique d&#x27;un article de presse.
En novembre 2025, pour ma recherche d&#x27;emploi, j&#x27;ai bricolé quelques scripts
et prompts. J&#x27;en ai extrait &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;inflecv&quot;&gt;inflecv&lt;&#x2F;a&gt;,
qui transforme une offre d&#x27;emploi en CV adapté. Toujours pour piloter
l&#x27;IA, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;glance&quot;&gt;&lt;code&gt;&#x2F;glance&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; formate les
retours IA pour les rendre simples à lire et à survoler. Pour vérifier qu&#x27;un projet
évolue dans le bon sens, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;feature-torture&quot;&gt;&lt;code&gt;&#x2F;feature-torture&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; est un banc de
dissection d&#x27;une fonctionnalité pour juger si elle survit, mute ou
disparaît. Jusqu&#x27;ici, j&#x27;ai créé pour m&#x27;amuser ou me faciliter la vie. J&#x27;ai
partagé afin de m&#x27;imposer un standard de qualité — la qualité minimum
pour ne pas m&#x27;en vouloir, dans quelques semaines ou quelques mois,
quand je voudrai reprendre le travail.
C&#x27;est de cette matière que naissent les billets qu&#x27;on lit ici.&lt;&#x2F;p&gt;
&lt;p&gt;Pourquoi tenir à ce soin-là en 2026 ? Face à des projets et créations
uniformes, l&#x27;impression que quelqu&#x27;un a repris, remanié et perfectionné
100 fois son travail me manque. Le danger
de la génération automatique n&#x27;est pas le remplacement pur et simple, mais
que notre contenu devienne indiscernable de celui de l&#x27;IA. Il y a un an, une
vidéo IA montrait 3 bras par personne. En 2026, la différence de forme entre les
contenus automatiques ou manuels s&#x27;amenuise. Quand je mets en pause
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;lucid-lint&quot;&gt;&lt;code&gt;lucid-lint&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;, &lt;code&gt;&#x2F;feature-torture&lt;&#x2F;code&gt; ou un article, je veux être sûr
&lt;em&gt;qu&#x27;ils sont utilisables et que je pourrai les reprendre plus tard avec
plaisir&lt;&#x2F;em&gt;. Lorsque je les démarre, l&#x27;IA me sert à construire plus vite les
filets de sécurité, la documentation lisible, le suivi du projet. Demain
ou dans un an, je saurai où j&#x27;en suis sur chaque projet, et chaque projet
me racontera son histoire.&lt;&#x2F;p&gt;
&lt;!-- markdownlint-disable MD031 --&gt;
&lt;figure class=&quot;listing listing--left&quot;&gt;
  &lt;figcaption class=&quot;listing__header&quot;&gt;&lt;span class=&quot;listing__caption&quot;&gt;LISTING 2 · LUCID-LINT&lt;&#x2F;span&gt;&lt;span class=&quot;listing__tag&quot; style=&quot;--tag-color: var(--c-warning);&quot;&gt;v0.2.0&lt;&#x2F;span&gt;
  &lt;&#x2F;figcaption&gt;
  &lt;pre class=&quot;listing__body&quot;&gt;&lt;code&gt;$ lucid-lint check examples&#x2F;sample.md
~~~~~ ⟨ • ⟩ ─────  lucid-lint  v0.2.0
                    cognitive accessibility linter · prose · EN &#x2F; FR
                    ────────────────────────────────────────────────
warning  sample.md:3:1   Sentence is 29 words long (maximum 22).
warning  sample.md:46:1  Sentence has 4 commas (maximum 3).
info     sample.md:1:1   Kandel-Moles ease score 72.9 (target ≤ 9.0).

summary: 7 warnings, 1 info.

score: 50&#x2F;100
        structure    ▓▓▓░░░░░░░░░░░░░░░░░   5&#x2F;20
        rhythm       ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓  20&#x2F;20
        lexicon      ▓▓▓▓▓▓░░░░░░░░░░░░░░  10&#x2F;20
        syntax       ▓▓▓▓▓▓░░░░░░░░░░░░░░  10&#x2F;20
        readability  ▓▓▓░░░░░░░░░░░░░░░░░   5&#x2F;20
exit: 1&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;&#x2F;figure&gt;
&lt;!-- markdownlint-enable MD031 --&gt;
&lt;p&gt;Cet article est une première page. Les personnages sont présentés : des
expérimentations, des outils et des recherches. Je les mettrai en scène,
les ferai parler, au fil des chapitres à venir : certains conteront
l&#x27;échec d&#x27;un prototype ou l&#x27;excitation face à une idée prometteuse ;
parfois, vous suivrez un seul protagoniste de bout en bout ; enfin,
des séries analyseront les enjeux du code et de ce qu&#x27;on en fait. La table
des matières vous interpelle ? Écrivez-moi. Je prendrai le temps de vous
lire et de répondre.&lt;&#x2F;p&gt;
&lt;aside class=&quot;ours ours--cols&quot; aria-label=&quot;Références et outils cités&quot;&gt;
  &lt;div class=&quot;ours__col&quot;&gt;
    &lt;p class=&quot;ours__label&quot;&gt;Références&lt;&#x2F;p&gt;
    &lt;p&gt;FIG. 1 — &lt;em&gt;Tilt — Micro-Jeux&lt;&#x2F;em&gt;, hors-série n°5, août 1987, Éditions Mondiales. Scan : &lt;a href=&quot;https:&#x2F;&#x2F;www.abandonware-magazines.org&#x2F;affiche_mag.php?mag=28&amp;amp;num=1013&quot; rel=&quot;external&quot;&gt;abandonware-magazines.org&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
    &lt;p&gt;FIG. 2 — Helme Heine, &lt;em&gt;Un éléphant ça compte énormément&lt;&#x2F;em&gt;, Gallimard Jeunesse, coll. folio benjamin.&lt;&#x2F;p&gt;
    &lt;p&gt;Matériel — &lt;a href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Thomson_TO9&quot; rel=&quot;external&quot;&gt;Thomson TO9&lt;&#x2F;a&gt; (Wikipédia).&lt;&#x2F;p&gt;
  &lt;&#x2F;div&gt;
  &lt;div class=&quot;ours__col&quot;&gt;
    &lt;p class=&quot;ours__label&quot;&gt;Outils cités&lt;&#x2F;p&gt;
    &lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;lucid-lint&quot; rel=&quot;external&quot;&gt;lucid-lint&lt;&#x2F;a&gt; — linter d&#x27;accessibilité cognitive pour la prose.&lt;&#x2F;p&gt;
    &lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;feature-torture&quot; rel=&quot;external&quot;&gt;&#x2F;feature-torture&lt;&#x2F;a&gt; — banc de dissection pour une fonctionnalité.&lt;&#x2F;p&gt;
    &lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;glance&quot; rel=&quot;external&quot;&gt;&#x2F;glance&lt;&#x2F;a&gt; — formater les retours IA pour la lecture-survol.&lt;&#x2F;p&gt;
    &lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;bastien-gallay&#x2F;inflecv&quot; rel=&quot;external&quot;&gt;inflecv&lt;&#x2F;a&gt; — d&#x27;une offre d&#x27;emploi à un CV adapté.&lt;&#x2F;p&gt;
    &lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;rhetorix.lovable.app&#x2F;&quot; rel=&quot;external&quot;&gt;Rhetorix&lt;&#x2F;a&gt; — prototype, décrypter la rhétorique d&#x27;un article de presse.&lt;&#x2F;p&gt;
  &lt;&#x2F;div&gt;
&lt;&#x2F;aside&gt;
</content>
  </entry>
</feed>
