---
title: L’usine logicielle agentique, c’est celle de 2022 avec une seule case changée
description: Les agents de code n’ont pas inventé l’usine logicielle, ils y ont changé qui fabrique. Fabriquer prend des minutes au lieu de jours, donc la lenteur s’est déplacée vers la revue. Le schéma de 2022 de Dex Horthy, redessiné et animé : de 2022 à l’agentique, puis aux lumières éteintes.
date: 2026-09-24
updated: 2026-09-24
tags: agents de code IA, génie logiciel, revue de code, SDLC
---

Les agents de code n’ont pas inventé l’usine logicielle. Ils y ont changé une seule case. En 2022, une personne fabriquait le truc ; aujourd’hui c’est un agent, en quelques minutes au lieu de quelques jours. Tout le reste est resté, et la partie lente de la mise en production est passée de la fabrication à la revue.

Cette lecture vient de la keynote de Dex Horthy à l’AGNTCon + MCPCon Europe, [State of the Software Factory](https://www.youtube.com/watch?v=-w6RDNBAI0E&t=2633s). Il fait remonter l’idée d’usine logicielle à 1968, l’année où naît le terme « software engineering », puis dessine l’usine que faisaient tourner la plupart des équipes en 2022. Ce schéma m’a tellement plu que je l’ai redessiné. Changez d’onglet et regardez où s’entassent les carrés jaunes.

<figure class="factory" aria-labelledby="fx-caption">
<input class="factory-radio" type="radio" name="fx-stage" id="fx-2022" checked>
<input class="factory-radio" type="radio" name="fx-stage" id="fx-agentic">
<input class="factory-radio" type="radio" name="fx-stage" id="fx-off">
<div class="factory-tabs"><label for="fx-2022">2022</label><label for="fx-agentic">Agentique</label><label for="fx-off">Lumières éteintes</label></div>
<div class="factory-canvas">
<svg viewBox="0 0 440 730" role="img" aria-labelledby="fx-title fx-desc">
<title id="fx-title">L’usine logicielle, de 2022 aux lumières éteintes</title>
<desc id="fx-desc">Un flux vertical : équipe, choses à faire, fabrication, pull request, vérifications, revue, prod, puis utilisateurs et monitoring. Une boucle de reprise part de la revue et revient à la fabrication, et une boucle de retour part des utilisateurs et du monitoring et revient à l’équipe. En 2022, une personne fabrique et des personnes relisent. Dans l’usine agentique, une pile d’agents fabrique et la revue agentique s’ajoute à la revue humaine. Dans l’usine lumières éteintes, la revue humaine est barrée.</desc>
<defs>
<marker id="fx-arrow" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fx-head" d="M0,0 L8,4 L0,8 Z"/></marker>
<marker id="fx-arrow-rw" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fx-head-rw" d="M0,0 L8,4 L0,8 Z"/></marker>
<marker id="fx-arrow-fb" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fx-head-fb" d="M0,0 L8,4 L0,8 Z"/></marker>
<marker id="fx-arrow-c" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path class="fx-head-c" d="M0,0 L8,4 L0,8 Z"/></marker>
</defs>
<g class="fx-flow">
<path d="M350,72 V94" marker-end="url(#fx-arrow)"/>
<path d="M350,144 V166" marker-end="url(#fx-arrow)"/>
<path d="M350,298 V316" marker-end="url(#fx-arrow)"/>
<path d="M350,358 V376" marker-end="url(#fx-arrow)"/>
<path d="M350,442 V460" marker-end="url(#fx-arrow)"/>
<path d="M350,568 V586" marker-end="url(#fx-arrow)"/>
<path d="M126,636 V654" marker-end="url(#fx-arrow)"/>
<path d="M314,636 V654" marker-end="url(#fx-arrow)"/>
</g>
<g class="fx-loop fx-loop--rework fx-stage fx-in-2022 fx-in-agentic">
<path id="fx-loop1" d="M40,515 H20 V233 H38" marker-end="url(#fx-arrow-rw)"/>
<text class="fx-loop-label" transform="translate(12 374) rotate(-90)" text-anchor="middle">BOUCLE 1 · REPRISE</text>
</g>
<g class="fx-loop fx-loop--feedback">
<path d="M126,704 V716 H416 V44 H402" marker-end="url(#fx-arrow-fb)"/>
<path d="M314,704 V716"/>
<text class="fx-loop-label" transform="translate(430 380) rotate(-90)" text-anchor="middle">BOUCLE 2 · RÉCLAMATIONS · ÉVOLUTIONS · INCIDENTS</text>
</g>
<g class="fx-box">
<rect class="fx-r-human" x="40" y="16" width="360" height="56"/><rect class="fx-bar fx-r-human" x="40" y="16" width="6" height="56"/>
<text class="fx-label" x="52" y="34">ÉQUIPE</text>
<text class="fx-text" x="52" y="58">CEO / vision · product managers · ingénieurs</text>
</g>
<g class="fx-box">
<rect class="fx-r-auto" x="40" y="96" width="360" height="48"/><rect class="fx-bar fx-r-auto" x="40" y="96" width="6" height="48"/>
<text class="fx-label" x="52" y="114">À FAIRE</text>
<text class="fx-text" x="52" y="134">Linear · Jira · GitHub Issues</text>
</g>
<g class="fx-box">
<rect class="fx-r-human fx-stage fx-in-2022" x="40" y="168" width="360" height="130"/><rect class="fx-bar fx-r-human fx-stage fx-in-2022" x="40" y="168" width="6" height="130"/><rect class="fx-r-agent fx-stage fx-in-agentic fx-in-off" x="40" y="168" width="360" height="130"/><rect class="fx-bar fx-r-agent fx-stage fx-in-agentic fx-in-off" x="40" y="168" width="6" height="130"/>
<text class="fx-label" x="52" y="186">FABRICATION</text>
<text class="fx-tag fx-hot fx-stage fx-in-2022" x="388" y="186" text-anchor="end">HEURES–JOURS</text>
<text class="fx-tag fx-stage fx-in-agentic fx-in-off" x="388" y="186" text-anchor="end">MINUTES–HEURES</text>
<g class="fx-stage fx-in-2022">
<text class="fx-title fx-human" x="52" y="214">quelqu’un fabrique le truc</text>
<text class="fx-text" x="52" y="246">tests automatisés</text>
<text class="fx-text" x="52" y="266">tests manuels, p. ex. dans un navigateur</text>
</g>
<g class="fx-stage fx-in-agentic fx-in-off">
<text class="fx-title fx-agent" x="52" y="214">un agent fabrique le truc</text>
<rect class="fx-cell" x="52" y="226" width="164" height="20"/>
<rect class="fx-cell" x="224" y="226" width="164" height="20"/>
<rect class="fx-cell" x="52" y="252" width="164" height="20"/>
<rect class="fx-cell" x="224" y="252" width="164" height="20"/>
<text class="fx-cell-text" x="134" y="240" text-anchor="middle">orchestration</text>
<text class="fx-cell-text" x="306" y="240" text-anchor="middle">harnais</text>
<text class="fx-cell-text" x="134" y="266" text-anchor="middle">sandbox</text>
<text class="fx-cell-text" x="306" y="266" text-anchor="middle">modèle</text>
<text class="fx-text" x="52" y="289">tests automatisés + agentiques (computer use)</text>
</g>
</g>
<g class="fx-box">
<rect class="fx-r-auto" x="40" y="318" width="360" height="40"/><rect class="fx-bar fx-r-auto" x="40" y="318" width="6" height="40"/>
<text class="fx-label" x="52" y="342">PULL REQUEST</text>
</g>
<g class="fx-box">
<rect class="fx-r-auto" x="40" y="378" width="360" height="64"/><rect class="fx-bar fx-r-auto" x="40" y="378" width="6" height="64"/>
<text class="fx-label" x="52" y="396">VÉRIFICATIONS</text>
<text class="fx-text" x="52" y="416">ci/cd · tests unitaires</text>
<text class="fx-text" x="52" y="434">analyse statique · scans de sécurité</text>
</g>
<g class="fx-box">
<rect class="fx-r-review" x="40" y="462" width="360" height="106"/><rect class="fx-bar fx-r-human" x="40" y="462" width="6" height="106"/><rect class="fx-pill fx-stage fx-in-agentic" x="200" y="469" width="194" height="16"/>
<text class="fx-label" x="52" y="480">REVUE</text>
<text class="fx-tag fx-hot fx-stage fx-in-2022" x="388" y="480" text-anchor="end">HEURES–JOURS</text>
<text class="fx-tag fx-hot fx-stage fx-in-agentic" x="388" y="481" text-anchor="end">HEURES–JOURS · GOULOT</text>
<text class="fx-tag fx-alert fx-stage fx-in-off" x="388" y="480" text-anchor="end">SAUTÉE</text>
<g class="fx-stage fx-in-2022">
<text class="fx-text fx-human" x="52" y="504">un humain teste la modif</text>
<text class="fx-text fx-human" x="52" y="524">un humain relit la modif</text>
</g>
<g class="fx-stage fx-in-agentic fx-in-off">
<text class="fx-text fx-agent" x="52" y="504">revue de code agentique</text>
<text class="fx-text fx-agent" x="52" y="522">tests de régression agentiques</text>
<text class="fx-text fx-human" x="52" y="542">un humain teste la modif</text>
<text class="fx-text fx-human" x="52" y="560">un humain relit la modif</text>
</g>
<g class="fx-stage fx-in-off">
<path class="fx-strike" d="M48,538 H236 M48,556 H240"/>
<text class="fx-tag fx-alert" x="388" y="560" text-anchor="end">NON MERCI</text>
</g>
</g>
<g class="fx-box">
<rect class="fx-r-prod" x="40" y="588" width="360" height="48"/><rect class="fx-bar fx-r-prod" x="40" y="588" width="6" height="48"/>
<text class="fx-label" x="52" y="606">PROD</text>
<text class="fx-text" x="52" y="626">déploiement · feature flags · canaris</text>
</g>
<g class="fx-box fx-users">
<rect x="40" y="656" width="172" height="48"/><rect class="fx-bar fx-r-users" x="40" y="656" width="6" height="48"/>
<text class="fx-label" x="52" y="674">UTILISATEURS</text>
<text class="fx-text" x="52" y="694">l’utilisent, râlent</text>
</g>
<g class="fx-box">
<rect class="fx-r-prod" x="228" y="656" width="172" height="48"/><rect class="fx-bar fx-r-prod" x="228" y="656" width="6" height="48"/>
<text class="fx-label" x="240" y="674">MONITORING</text>
<text class="fx-text" x="240" y="694">vous réveille à 3 h</text>
</g>
<path id="fx-main" class="fx-track" d="M350,72 V636"/>
<path id="fx-feedback" class="fx-track" d="M126,704 V716 H416 V44 H402"/>
<g class="fx-token fx-stage fx-in-2022">
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.227;0.387;0.745;0.865;1" keyTimes="0;0.06;0.4;0.46;0.88;1"><mpath href="#fx-main"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" begin="-4.5s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.227;0.387;0.745;0.865;1" keyTimes="0;0.06;0.4;0.46;0.88;1"><mpath href="#fx-main"/></animateMotion></rect>
</g>
<g class="fx-token fx-stage fx-in-agentic">
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.227;0.387;0.745;0.865;1" keyTimes="0;0.06;0.14;0.2;0.86;1"><mpath href="#fx-main"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" begin="-3s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.227;0.387;0.745;0.865;1" keyTimes="0;0.06;0.14;0.2;0.86;1"><mpath href="#fx-main"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="9s" begin="-6s" repeatCount="indefinite" calcMode="linear" keyPoints="0;0.227;0.387;0.745;0.865;1" keyTimes="0;0.06;0.14;0.2;0.86;1"><mpath href="#fx-main"/></animateMotion></rect>
</g>
<g class="fx-token fx-stage fx-in-off">
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="4s" repeatCount="indefinite"><mpath href="#fx-main"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="4s" begin="-1.33s" repeatCount="indefinite"><mpath href="#fx-main"/></animateMotion></rect>
<rect x="-5" y="-5" width="10" height="10"><animateMotion dur="4s" begin="-2.67s" repeatCount="indefinite"><mpath href="#fx-main"/></animateMotion></rect>
</g>
<g class="fx-token fx-token--rework fx-stage fx-in-2022 fx-in-agentic">
<rect x="-4" y="-4" width="8" height="8"><animateMotion dur="5s" repeatCount="indefinite"><mpath href="#fx-loop1"/></animateMotion></rect>
</g>
<g class="fx-token fx-token--feedback">
<rect x="-4" y="-4" width="8" height="8"><animateMotion dur="7s" repeatCount="indefinite"><mpath href="#fx-feedback"/></animateMotion></rect>
<rect x="-4" y="-4" width="8" height="8"><animateMotion dur="7s" begin="-3.5s" repeatCount="indefinite"><mpath href="#fx-feedback"/></animateMotion></rect>
</g>
</svg>
</div>
<ul class="factory-legend" aria-label="Légende"><li><i class="fx-sw fx-r-human"></i>personnes</li><li><i class="fx-sw fx-r-agent"></i>agents</li><li><i class="fx-sw fx-r-auto"></i>tickets, PR, vérifications</li><li><i class="fx-sw fx-r-prod"></i>prod &amp; monitoring</li><li><i class="fx-sw fx-r-users"></i>utilisateurs</li><li><i class="fx-sw fx-sw-line fx-r-rework"></i>boucle de reprise</li><li><i class="fx-sw fx-sw-line fx-r-feedback"></i>boucle de retour</li><li><i class="fx-sw fx-sw-item"></i>une tâche</li></ul>
<figcaption id="fx-caption">
<span class="fx-stage fx-in-2022"><strong>2022.</strong> Des personnes fabriquent, des personnes relisent, et deux boucles renvoient le travail : la reprise depuis la revue, le retour depuis les utilisateurs et le monitoring.</span>
<span class="fx-stage fx-in-agentic"><strong>Agentique.</strong> Une pile d’agents remplace celui qui fabrique, et la fabrication ne prend plus que quelques minutes. La revue prend toujours des heures ou des jours, et le travail s’y entasse.</span>
<span class="fx-stage fx-in-off"><strong>Lumières éteintes.</strong> Personne ne lit le code. Le travail avance aussi vite que les vérifications le permettent, et la boucle de reprise disparaît.</span>
<span class="fx-credit">Redessiné d’après la keynote <a href="https://www.youtube.com/watch?v=-w6RDNBAI0E&amp;t=2633s" target="_blank" rel="noopener noreferrer">State of the Software Factory</a> de Dex Horthy, AGNTCon + MCPCon Europe 2026.</span>
</figcaption>
</figure>

## L’usine de 2022 avait déjà tout

Lisez-le de haut en bas. Une équipe qui a une vision met du travail dans un outil de tickets. Quelqu’un prend un ticket, le code, lance les tests, clique dans un navigateur pour vérifier et ouvre une pull request. La CI déroule sa batterie de vérifications, un humain teste la modif, un humain la relit. Ça part en production derrière des déploiements progressifs, des feature flags et des canaris. Les utilisateurs s’en servent.

Puis viennent les deux boucles :

1. **Reprise.** La revue trouve un problème et la PR repart chez qui l’a fabriquée.
2. **Retour.** Les utilisateurs envoient des demandes de fonctionnalités et des réclamations, le monitoring réveille quelqu’un à 3 h du matin, et tout ça revient sur la liste de l’équipe.

Rien de tout ça n’est de l’IA. C’est comme ça que la plupart des équipes livrent depuis dix ans.

<figure class="fd-fig sf-loops" aria-labelledby="sf1-cap" data-desc="Les deux boucles de l’usine de 2022. Boucle un, la reprise : la revue trouve un problème et la pull request repart chez qui l’a fabriquée, puis revient en revue. Boucle deux, le retour : les utilisateurs envoient des demandes de fonctionnalités et des réclamations, le monitoring réveille quelqu’un à 3 h du matin, et tout ça revient sur la liste de l’équipe. Rien de tout ça n’est de l’IA ; c’est comme ça que la plupart des équipes livrent depuis dix ans.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">Boucle 1</p>
<p class="mp-two-name">Reprise</p>
<svg class="mp-two-art" viewBox="0 0 300 120" aria-hidden="true">
<path id="sf1-rw" class="sf-none" d="M106,42 H194 V78 C170,112 130,112 106,78 Z"/>
<g class="fd-box"><rect x="14" y="30" width="92" height="60"/></g>
<g class="fd-box"><rect x="194" y="30" width="92" height="60"/></g>
<text class="sf-t" x="60" y="65" text-anchor="middle">Fabrication</text>
<text class="sf-t" x="240" y="65" text-anchor="middle">Revue</text>
<path class="fd-line" d="M106,42 H188"/><path class="fd-head" d="M188,37 L196,42 L188,47 Z"/>
<text class="mp-art-t" x="150" y="34" text-anchor="middle">PR</text>
<path class="sf-back" d="M194,78 C170,112 130,112 112,82"/><path class="sf-back-h" d="M108,90 L110,79 L118,85 Z"/>
<text class="sf-alert-t" x="150" y="118" text-anchor="middle">problème trouvé</text>
<g class="fd-token"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="4s" repeatCount="indefinite"><mpath href="#sf1-rw"/></animateMotion></rect></g>
</svg>
<p class="mp-two-line">La revue trouve un problème</p>
<p class="mp-two-line">La PR repart chez qui l’a fabriquée</p>
</div>
<p class="mp-two-vs" aria-hidden="true">et</p>
<div class="mp-two-card">
<p class="mp-two-who">Boucle 2</p>
<p class="mp-two-name">Retour</p>
<svg class="mp-two-art" viewBox="0 0 300 120" aria-hidden="true">
<path id="sf1-u" class="sf-none" d="M70,26 C130,26 150,52 194,56"/>
<path id="sf1-m" class="sf-none" d="M70,94 C130,94 150,68 194,64"/>
<circle class="sf-user" cx="34" cy="20" r="9"/><path class="sf-user" d="M18,44 C18,32 50,32 50,44 Z"/>
<text class="mp-art-t" x="60" y="46">utilisateurs</text>
<rect class="sf-pager" x="14" y="80" width="40" height="28"/><text class="sf-pager-t" x="34" y="98" text-anchor="middle">3 h</text>
<text class="mp-art-t" x="60" y="112">monitoring</text>
<path class="sf-fb" d="M70,26 C130,26 150,52 186,55.5"/><path class="sf-fb" d="M70,94 C130,94 150,68 186,64.5"/>
<g class="fd-box"><rect x="194" y="30" width="92" height="60"/></g>
<text class="sf-t" x="240" y="50" text-anchor="middle">À traiter</text>
<rect class="mp-ln" x="206" y="60" width="68" height="3"/><rect class="mp-ln" x="206" y="68" width="52" height="3"/><rect class="mp-ln" x="206" y="76" width="60" height="3"/>
<g class="fd-token fd-token-ui"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="3s" repeatCount="indefinite"><mpath href="#sf1-u"/></animateMotion></rect></g>
<g class="fd-token fd-token-alert"><rect x="-5" y="-5" width="10" height="10"><animateMotion dur="3s" begin="1.5s" repeatCount="indefinite"><mpath href="#sf1-m"/></animateMotion></rect></g>
</svg>
<p class="mp-two-line">Les utilisateurs envoient demandes et réclamations</p>
<p class="mp-two-line">Le monitoring réveille quelqu’un à 3 h</p>
<p class="mp-two-line">Tout atterrit sur la liste de l’équipe</p>
</div>
</div>
<p class="mp-strip"><b>Pas d’IA</b><span>La façon dont la plupart des équipes livrent depuis dix ans.</span></p>
<figcaption id="sf1-cap">Les deux boucles de l’onglet 2022, sorties du schéma. Toutes deux existaient bien avant le moindre agent.</figcaption>
</figure>

## Changer qui fabrique, déplacer le goulot

L’usine agentique garde toutes les cases. Seule la case fabrication change : elle devient une pile faite d’orchestration, d’un harnais (harness), d’une sandbox et d’un modèle, avec des agents qui testent leur propre travail, parfois en pilotant un vrai navigateur.

Fabriquer prend désormais des minutes ou des heures. La revue prend toujours des heures ou des jours. Alors les équipes font aussi entrer les agents dans la revue, avec de la revue de code agentique et des tests de régression agentiques qui attrapent les petits problèmes. Ça aide, mais la revue reste souvent le goulot d’étranglement. Dans l’onglet Agentique, les carrés traversent la fabrication en un éclair et font la queue à la revue.

<figure class="fd-fig sf-swap" aria-labelledby="sf2-cap" data-desc="Changer qui fabrique, déplacer le goulot. Dans l’usine de 2022, c’est une personne qui fabrique. Dans l’usine agentique, la fabrication devient une pile : orchestration, harnais, sandbox et modèle, avec des agents qui testent leur propre travail, parfois en pilotant un vrai navigateur. Toutes les autres cases restent. Un schéma de l’endroit où passe le temps : en 2022, la fabrication prend des jours et la revue des heures ou des jours. Avec les agents, la fabrication prend des minutes ou des heures alors que la revue prend toujours des heures ou des jours : le travail file à travers la fabrication et s’entasse à la revue. La revue de code agentique et les tests de régression agentiques aident, mais la revue reste souvent le goulot d’étranglement.">
<div class="sf-swap-in">
<p class="sf-k">La seule case qui change</p>
<div class="sf-swap-row">
<p class="sf-person"><svg class="sf-person-art" viewBox="0 0 40 40" aria-hidden="true"><circle cx="20" cy="13" r="8"/><path d="M5,38 C5,24 35,24 35,38 Z"/></svg><b>Une personne</b><span>2022</span></p>
<p class="sf-to" aria-hidden="true">→</p>
<div class="sf-stack-box">
<ol class="sf-list sf-stack"><li>Orchestration</li><li>Harnais</li><li>Sandbox</li><li>Modèle</li></ol>
<p class="sf-stack-note">Teste son propre travail, parfois dans un vrai navigateur</p>
</div>
</div>
<p class="sf-k sf-k-time">Où passe le temps, en schéma</p>
<div class="sf-era">
<p class="sf-era-n">2022</p>
<p class="sf-track" aria-hidden="true"><i class="sf-seg-b"></i><i class="sf-seg-r"></i></p>
<p class="sf-era-l"><b>Fabrication</b> jours <b>Revue</b> heures ou jours</p>
</div>
<div class="sf-era sf-era-now">
<p class="sf-era-n">Agentique</p>
<p class="sf-track" aria-hidden="true"><i class="sf-seg-b"></i><i class="sf-seg-r"><span class="sf-pile"><i></i><i></i><i></i><i></i></span></i></p>
<p class="sf-era-l"><b>Fabrication</b> minutes ou heures <b>Revue</b> toujours heures ou jours</p>
</div>
<p class="sf-key" aria-hidden="true"><span><i class="sf-key-b"></i>fabrication, personne</span><span><i class="sf-key-a"></i>fabrication, agent</span><span><i class="sf-key-r"></i>revue</span><span><i class="sf-key-w"></i>travail en attente</span></p>
</div>
<p class="mp-strip"><b>Le goulot</b><span>Il est passé de la fabrication à la revue.</span></p>
<figcaption id="sf2-cap">La case de fabrication du schéma, avant et après, et un schéma du temps passé de part et d’autre. La longueur des barres ne donne qu’un ordre de grandeur, pas des mesures.</figcaption>
</figure>

## Lumières éteintes : on arrête de lire le code

L’étape suivante, c’est ce que Dex appelle l’usine lumières éteintes (lights-off factory). Personne ne relit ; les vérifications décident. Investissez assez dans la CI, les tests agentiques et le monitoring, et ça pourrait presque marcher.

Le hic, c’est la maintenabilité. Un test vous dit qu’une fonctionnalité marche. Rien ne vous dit vite si le code sera encore facile à modifier dans deux mois. Les modèles progressent sur ce qu’un vérificateur sait noter, et la maintenabilité n’a pas de vérificateur rapide : rien dans l’entraînement ne les pousse vers une architecture propre.

[SlopCodeBench](https://arxiv.org/abs/2603.24755), de l’université du Wisconsin à Madison, mesure exactement ça. Les agents ne reçoivent pas toute la spec d’emblée. Ils la reçoivent par étapes et doivent étendre leur propre code à chaque fois, comme grandissent les vrais projets. Le chiffre que donne Dex dans sa conférence : au lancement, le meilleur modèle, GPT 5.5, y obtenait **14,8 %**. Sur les benchmarks en un seul coup comme Terminal-Bench, tout le monde tourne autour de 95 %, dit-il.

Sa conclusion est simple : si le code qu’un modèle écrit sans surveillance se dégrade avec le temps, alors pour l’instant, lisez le code.

<figure class="fd-fig sf-bench" aria-labelledby="sf3-cap" data-desc="Pourquoi l’usine lumières éteintes est difficile. Un test vous dit vite qu’une fonctionnalité marche. Rien ne vous dit vite si le code sera encore facile à modifier dans deux mois, donc rien dans l’entraînement ne pousse les modèles vers une architecture propre. SlopCodeBench, de l’université du Wisconsin à Madison, donne la spec aux agents par étapes et les oblige à étendre leur propre code à chaque fois. Les chiffres de Dex dans sa conférence : sur les benchmarks en un seul coup comme Terminal-Bench, tout le monde tourne autour de 95 pour cent. Sur SlopCodeBench au lancement, le meilleur modèle, GPT 5.5, obtenait 14,8 pour cent. Sa conclusion : pour l’instant, lisez le code.">
<div class="sf-bench-in">
<ul class="sf-list sf-checks">
<li class="sf-check-ok"><p class="sf-q">Ça marche ?</p><p class="sf-a">Un test le dit, vite</p></li>
<li class="sf-check-no"><p class="sf-q">Facile à modifier dans deux mois ?</p><p class="sf-a">Aucun vérificateur rapide</p></li>
</ul>
<div class="sf-score">
<p class="sf-score-n">Toute la spec d’un coup<span>Terminal-Bench et consorts</span></p>
<p class="sf-score-bar" aria-hidden="true"><i class="sf-w95"></i></p>
<p class="sf-score-v">~95 %</p>
</div>
<div class="sf-score sf-score-low">
<p class="sf-score-n">Spec par étapes<span>SlopCodeBench, GPT 5.5, meilleur au lancement</span></p>
<p class="sf-score-bar" aria-hidden="true"><i class="sf-w15"></i></p>
<p class="sf-score-v">14,8 %</p>
</div>
</div>
<p class="mp-strip"><b>Pour l’instant</b><span>Lisez le code.</span></p>
<figcaption id="sf3-cap">Les deux chiffres de Dex dans sa conférence, à l’échelle. La barre du haut, c’est son « autour de 95 % » pour tout le monde sur les benchmarks en un seul coup, pas un score mesuré.</figcaption>
</figure>

## Ce qui a vraiment changé

Qui fabrique : une personne est devenue une pile d’agents que vous configurez. Où passe le temps : de l’écriture du code à sa planification, à sa revue et au branchement des retours. En quoi consiste le métier : moins écrire, plus décider.

Le reste de la conférence de Dex se lit sur le même schéma :

- **Planifiez avant de fabriquer.** Vingt ou trente minutes en amont font gagner des heures à la revue.
- **Donnez de la contre-pression aux agents.** Un navigateur, `curl`, l’appli qui tourne, pour qu’ils vérifient leur travail avant qu’un humain le fasse.
- **Branchez la boucle 2 en direct.** Une alerte d’astreinte qui arrive avec la PR qui, d’après l’agent, la corrige. Vous mergez, vous retournez vous coucher.
- **Laissez les agents expérimenter.** Des feature flags, trois versions d’une interface, et les vrais utilisateurs choisissent.
- **Capitalisez.** Relisez les anciennes sessions d’agents et transformez ce qui a mal tourné en skills et en mémoire.

<figure class="fd-fig sf-map" aria-labelledby="sf4-cap" data-desc="Le reste de la conférence de Dex épinglé sur l’usine. Aux tickets : un, planifier avant de fabriquer, parce que vingt ou trente minutes en amont font gagner des heures à la revue. À la fabrication : deux, donner de la contre-pression aux agents, un navigateur, curl et l’appli qui tourne, pour qu’ils vérifient leur travail avant qu’un humain le fasse ; et cinq, capitaliser, en relisant les anciennes sessions d’agents et en transformant ce qui a mal tourné en skills et en mémoire. À la revue, les heures que la planification fait gagner. À la livraison : quatre, laisser les agents expérimenter, avec des feature flags et trois versions d’une interface, et laisser les vrais utilisateurs choisir. Sur la boucle de retour qui va des utilisateurs et du monitoring à la liste : trois, brancher la boucle 2 en direct, pour qu’une alerte d’astreinte arrive avec la pull request qui, d’après l’agent, la corrige.">
<ol class="sf-list sf-stages">
<li><p class="sf-stage">Tickets</p><ul class="sf-list sf-pins"><li><b>1</b>Planifier avant de fabriquer<span>Vingt ou trente minutes en amont font gagner des heures à la revue</span></li></ul></li>
<li class="sf-stage-agent"><p class="sf-stage">Fabrication</p><ul class="sf-list sf-pins"><li><b>2</b>Contre-pression<span>Un navigateur, curl, l’appli qui tourne : il vérifie d’abord son propre travail</span></li><li><b>5</b>Capitaliser<span>Les anciennes sessions deviennent skills et mémoire</span></li></ul></li>
<li><p class="sf-stage">Revue</p><ul class="sf-list sf-pins"><li class="sf-pin-quiet">Là où la planification rapporte</li></ul></li>
<li><p class="sf-stage">Livraison</p><ul class="sf-list sf-pins"><li><b>4</b>Expérimenter<span>Feature flags, trois versions d’une interface, les vrais utilisateurs choisissent</span></li></ul></li>
<li class="sf-stage-loop"><p class="sf-stage">Boucle 2</p><ul class="sf-list sf-pins"><li><b>3</b>La brancher en direct<span>L’alerte d’astreinte arrive avec la PR qui, d’après l’agent, la corrige</span></li></ul></li>
</ol>
<p class="mp-strip"><b>Même schéma</b><span>Chaque conseil tombe sur une case qui existait déjà.</span></p>
<figcaption id="sf4-cap">Les cinq pratiques de la liste, chacune épinglée sur la case qu’elle change. La boucle 2, c’est la boucle de retour qui va des utilisateurs et du monitoring à la liste.</figcaption>
</figure>

## Mon usine tourne sur l’onglet Agentique

Mon installation en est exactement là. Le travail entre dans GitHub Issues. Un agent fabrique dans son propre worktree, un modèle d’un autre fournisseur relit la modif, et chaque changement finit en pull request que je merge moi-même. La partie lente, c’est ma file de revue. Exactement comme sur le schéma.

<figure class="fd-fig sf-mine" aria-labelledby="sf5-cap" data-desc="Ma propre usine, sur l’onglet Agentique. Le travail entre dans GitHub Issues. Un agent fabrique dans son propre worktree. Un modèle d’un autre fournisseur relit la modif. Chaque changement finit en pull request que je merge moi-même, et c’est là que le travail attend : la partie lente, c’est ma file de revue.">
<ol class="sf-list sf-chain">
<li><p class="sf-chain-k">Tickets</p><p class="sf-chain-n">GitHub Issues</p></li>
<li class="sf-chain-agent"><p class="sf-chain-k">Fabrication</p><p class="sf-chain-n">Un agent, dans son propre worktree</p></li>
<li class="sf-chain-agent"><p class="sf-chain-k">Revue</p><p class="sf-chain-n">Un modèle d’un autre fournisseur</p></li>
<li class="sf-chain-me"><p class="sf-chain-k">Merge</p><p class="sf-chain-n">Moi, chaque pull request</p><p class="sf-queue" aria-hidden="true"><i></i><i></i><i></i><i></i><i></i></p></li>
</ol>
<p class="mp-strip"><b>La partie lente</b><span>Ma file de revue. Exactement comme sur le schéma.</span></p>
<figcaption id="sf5-cap">Mon installation sur les mêmes cases. Les agents sont en bleu ; les carrés sont les pull requests qui m’attendent.</figcaption>
</figure>

Regardez les [dix minutes où Dex dessine l’usine](https://www.youtube.com/watch?v=-w6RDNBAI0E&t=2633s), elles en valent la peine. Et si votre équipe tourne vraiment lumières éteintes, j’aimerais savoir comment vous empêchez la base de code de pourrir.
