Also available in English.

Le code que je n’ai jamais Ă©crit

Au sĂ©minaire annuel de mon entreprise, mon N+1 a dit que l’IA Ă©crivait environ 70 % du code. J’ai rĂ©pondu que pour moi c’était plutĂŽt 90 %. Les autres dĂ©veloppeurs Ă©taient d’accord avec moi. AprĂšs coup, ils m’ont fait remarquer qu’il n’était peut-ĂȘtre pas trĂšs prudent de le dire comme ça, et mon N+1 et le directeur ont paru surpris.

J’y ai repensĂ© ensuite. Mon chiffre est une estimation issue de ma pratique de Claude Code, je n’ai rien mesurĂ©. Mais surtout, nous ne parlions probablement pas de la mĂȘme chose. Moi, je parlais du code qui se retrouve dans les fichiers Ă  la fin. Lui parlait peut-ĂȘtre de la part du travail de dĂ©veloppement que l’IA prend en charge.

Cette conversation m’a fait rĂ©aliser qu’un pourcentage de code Ă©crit ne veut rien dire tant qu’on n’a pas dit oĂč on place la frontiĂšre. Et celle-ci a dĂ©jĂ  bougĂ© plusieurs fois depuis que je programme.

TombĂ© dans la marmite quand j’étais petit

Je ne suis pas assez vieux pour avoir connu les cartes perforĂ©es mais j’ai commencĂ© fin des annĂ©es 1980 sur un Amstrad CPC 464. On allumait la machine et on arrivait directement sur l’invite de commande. On pouvait taper PRINT 1 et ça rĂ©pondait. Programmer Ă©tait une expĂ©rience normale, pas une activitĂ© Ă  part.

Mon pĂšre avait des magazines d’informatique qui publiaient des programmes Ă  recopier en BASIC. Je me souviens avoir passĂ© des heures sur les listings de Cherry-Paint, un programme de dessin publiĂ© par CPC Revue en 1986. D’aprĂšs le site le code du programme Ă©tait Ă©talĂ© sur cinq numĂ©ros et pour le premier il y avait environ 20 Ko de code Ă  saisir (on Ă©tait motivĂ©s). Une partie Ă©tait du BASIC, et l’animation Ă©tait du code machine donnĂ© sous forme de nombres hexadĂ©cimaux. Dans le deuxiĂšme Ă©pisode (CPC Revue n°6), l’auteur fournissait pour ça un chargeur en BASIC qui demandait huit nombres hexadĂ©cimaux par ligne, suivis d’une somme de test. Si le total calculĂ© ne correspondait pas, il redemandait la ligne. Je ne comprenais pas ce que je recopiais, mais l’ordinateur pouvait me dire que je m’étais trompĂ©.

Capture d'écran de Cherry-Paint sur Amstrad CPC

Revue CPC n°8 (1986) - CHERRY PAINT

Le langage machine de l’Amstrad, ce sont les instructions binaires exĂ©cutĂ©es directement par le processeur. L’assembleur en est la reprĂ©sentation symbolique, plus lisible pour un humain. J’ai relu le dĂ©but du livre Le Langage Machine pour l’Amstrad CPC. Dans la section « Le premier programme machine », il met cĂŽte Ă  cĂŽte un programme BASIC qui remplit la mĂ©moire Ă©cran et le mĂȘme travail en code machine. Le BASIC met environ une minute et le code machine environ un dixiĂšme de seconde. Cela fait un rapport de 600 d’aprĂšs ses propres chiffres. L’argument du chapitre est qu’on a tout intĂ©rĂȘt Ă  apprendre le langage machine.

Peu de gens le faisaient, et je comprends pourquoi. Le BASIC n’était pas trĂšs Ă©voluĂ© mais beaucoup plus simple Ă  comprendre.

Ce que j’ai arrĂȘtĂ© d’écrire

Dans les annĂ©es 1990, j’étais clairement un geek. Il y a eu Visual Basic et Delphi. J’ai fait de l’assembleur sous Windows, du C++, un peu de shell sous Mandrake puis de l’assembleur pour coder Pac-Man sur une TI-89 en prĂ©pa (peut-on faire plus nerd ?). Au dĂ©but des annĂ©es 2000, j’ai dĂ©couvert PHP 3, un langage interprĂ©tĂ©. Ensuite le JavaScript, la programmation objet, les frameworks, les patterns, Java, Node.

Electric Dreams 1984, Un film trĂšs geek et la premiĂšre IA dont je me souvienne

À chaque Ă©tape, il y a une partie du code que j’ai cessĂ© d’écrire. Avec Delphi, je n’écrivais plus l’affichage des fenĂȘtres. En PHP, je n’ai plus gĂ©rĂ© la mĂ©moire Ă  la main ni passĂ© par une Ă©tape de compilation. Avec Symfony, je n’écris pas le noyau HTTP, le conteneur de services ni la couche d’accĂšs Ă  la base. Sur un projet de l’entreprise, j’ai comptĂ© les lignes de PHP, lignes vides et commentaires compris, sans les tests. Le dossier src/ en contient 198 702 et vendor/ 1 910 041 (dĂ©pendances de dĂ©veloppement comprises, c’est donc un ordre de grandeur). Environ neuf lignes sur dix ne sont donc pas dans notre code. Et src/ contient dĂ©jĂ  du code Ă©crit ou réécrit par l’IA, la part que j’ai Ă©crite moi-mĂȘme est donc encore plus petite. Je n’ai jamais Ă©crit la plus grande partie du code qui s’exĂ©cute quand quelqu’un ouvre une page.

Note

C’est amusant car ces 90 % tombent presque exactement sur mon estimation du sĂ©minaire, mais ça ne veut rien dire, ils ne mesurent pas la mĂȘme chose.

Personne ne conteste ça, parce que ça ne se voit pas. Si on avait posĂ© la question « quelle part du code Ă©crivez-vous vous-mĂȘme » Ă  un dĂ©veloppeur Symfony il y a dix ans, la rĂ©ponse aurait Ă©tĂ© faible aussi, avec une autre frontiĂšre.

Mon travail n’a d’ailleurs jamais Ă©tĂ© d’écrire du code. Le travail d’un chauffeur de taxi n’est pas de savoir lire un plan ni de brĂ»ler du carburant : il est de choisir le trajet, de gĂ©rer l’imprĂ©vu et de rĂ©pondre de l’état du vĂ©hicule. Le mien est de comprendre le besoin derriĂšre la demande, de dĂ©cider comment (et parfois si) le construire, puis d’en assumer les consĂ©quences longtemps aprĂšs que le code a Ă©tĂ© Ă©crit.

Une couche de plus

Avec Claude Code, je dĂ©cris ce que je veux en français. L’agent produit du PHP, que l’interprĂ©teur PHP exĂ©cute, lui-mĂȘme compilĂ© en langage machine. Le langage naturel est devenu une couche de plus dans une pile qui en avait dĂ©jĂ  beaucoup.

DHH le dit Ă  sa façon. Dans son keynote d’ouverture de Rails World 2026, le 23 septembre, il affirme Ă  environ 38 minutes que « English is a better programming language than Ruby », en prĂ©cisant que c’est « a little more vague ». Il y explique que 37signals (l’entreprise derriĂšre Basecamp et HEY) a arrĂȘtĂ© d’écrire du code Ă  la main. Sur un point, il va plus loin que moi : le code Rust que ses agents produisent, il dit ne pas le regarder, il juge le rĂ©sultat de l’extĂ©rieur. Il raconte aussi pourquoi on avait choisi les abstractions : le temps d’un programmeur coĂ»tait cher. Si une machine Ă©crit le code de bas niveau, dit-il en substance, on peut avoir des programmes 30 Ă  100 fois plus rapides. C’est le mĂȘme argument de vitesse que dans le livre de mon enfance.

Le langage naturel est aussi la premiĂšre couche qui ne soit pas un langage formel. Une ligne de PHP a un sens et un seul. Une phrase en français peut en avoir plusieurs, et le mĂȘme agent peut produire deux rĂ©sultats diffĂ©rents Ă  partir de la mĂȘme phrase.

Pourquoi je lis encore

À chaque couche, j’ai d’abord arrĂȘtĂ© d’écrire le code qu’elle produisait, puis je n’ai plus eu besoin de le lire. Avec l’agent, j’en suis au premier stade : j’écris trĂšs peu de PHP, mais je le lis encore, et mĂȘme plus qu’avant. Je ne sais pas si c’est transitoire. J’écris ceci en octobre 2026 et la pratique change vite.

Certains sont dĂ©jĂ  plus loin. Simon Willison ne relit plus chaque ligne que ses agents Ă©crivent, mĂȘme pour de la production, et les traite comme une autre Ă©quipe dont il utilise le service sans lire le code. Il en est lui-mĂȘme mal Ă  l’aise. Une Ă©quipe humaine a une rĂ©putation Ă  dĂ©fendre et rĂ©pond de son travail, alors que Claude Code n’a pas de rĂ©putation professionnelle. Il craint aussi qu’à force de succĂšs il finisse par lui faire confiance au mauvais moment. Il s’appuie sur ses 25 ans d’expĂ©rience pour que ce pari reste raisonnable.

Je ne lis pas l’assembleur que produit le compilateur. Je ne lis pas non plus le code de Symfony en dehors des cas oĂč quelque chose ne marche pas. Je fais confiance Ă  ces couches parce qu’elles se comportent toujours pareil, que des millions de personnes les utilisent et qu’un problĂšme finit par ĂȘtre corrigĂ© pour tout le monde.

La sortie d’un agent est un travail fait pour moi, Ă  cet instant, Ă  partir d’une description qui peut ĂȘtre comprise de plusieurs façons. Le rĂ©sultat peut ĂȘtre correct, ou correct avec une modification de trop, ou sans rapport avec ce que je voulais. Je ne peux pas encore le traiter comme je traite un compilateur. Si un jour je le fais, ce ne sera pas parce que c’est devenu Ă  la mode, mais parce que je l’aurai vĂ©rifiĂ© assez souvent pour avoir confiance.

DHH a dĂ©jĂ  tranchĂ© pour le Rust, il ne le lit pas. Je n’ai pas encore tranchĂ© pour le PHP.

Retour aux 70 et 90 %

Mon N+1 comptait peut-ĂȘtre le travail, et moi le code. Les deux chiffres peuvent coexister, ils ne placent pas la frontiĂšre au mĂȘme endroit. J’aurais pu donner le mĂȘme genre de rĂ©ponse dans les annĂ©es 2000 en parlant du framework, avec un chiffre diffĂ©rent.

Ce qui me frappe, c’est qu’on continue de juger le travail d’un dĂ©veloppeur Ă  ce qu’il Ă©crit, alors que la part qu’il Ă©crit lui-mĂȘme diminue Ă  chaque Ă©tape depuis que je programme, sans que personne ne s’en inquiĂšte. L’IA fait bouger la frontiĂšre beaucoup plus vite que d’habitude, et ça se voit. C’est ce qui a rendu la conversation du sĂ©minaire un peu bizarre. Que l’IA Ă©crive 70 ou 90 % du code m’intĂ©resse moins que de savoir Ă  partir de quand une couche qu’on ne lit plus cesse d’ĂȘtre un pari.