- Uncle Bob, connu pour Clean Code, affirme que nous sommes entrés dans une époque où l’IA écrit du code de manière écrasante, bien plus vite que les développeurs, et appelle à une évolution du rôle des développeurs
- Puisque l’IA peut achever en 5 minutes un travail qui prenait auparavant une journée, l’époque où les développeurs écrivaient eux-mêmes le code est terminée
- Mais cela donne au contraire aux développeurs une puissance immense, leur permettant d’accomplir des choses auparavant inimaginables
- La couverture de tests était pénible, mais les développeurs peuvent désormais demander à l’IA d’assurer la couverture de tests et utiliser un testeur de mutation pour vérifier la validité réelle des tests
- En combinaison avec des outils d’analyse de la complexité cyclomatique (cyclomatic complexity), il est possible de demander à l’IA d’élever la qualité du code à un niveau bien supérieur à ce qu’elle était auparavant
Script de la vidéo jointe
Regardons les choses en face. L’IA écrit du code plusieurs fois plus vite que vous. Ce qui vous prendrait une journée, l’IA le termine en 5 minutes. C’est fini. L’époque où vous écriviez vous-mêmes le code est révolue. Je le sais. Acceptez-le.
Mais voilà. Cela vous donne au contraire une puissance immense. Parce que vous pouvez désormais faire des choses dont vous n’auriez même pas osé rêver auparavant.
Prenez par exemple la couverture de tests. Je sais à quel point c’était pénible. Il fallait écrire tous ces fichus tests. Et même avec des tests, cela ne voulait pas dire que le code fonctionnait correctement. On lançait la couverture de code, on esquissait un petit sourire en disant : « Bon, d’accord, mais ça ne veut pas dire que le code fonctionne… ça veut juste dire qu’il s’exécute. »
Maintenant, on peut corriger cela. Parce qu’on a de la puissance de calcul (horsepower). Demandez à l’IA de couvrir le code, puis lancez un testeur de mutation. Oui, c’est un outil. Et cet outil aussi, vous pouvez demander à l’IA de le créer. Elle le fait en 5 minutes. Ensuite, faites exécuter cet outil par l’IA. Cet outil modifie le code source et relance tous les tests. Si les tests n’échouent pas ? Elle écrit des tests qui les feront échouer. Là, vous obtenez une véritable couverture de tests.
Je vous le jure, vous obtenez une véritable couverture de tests.
Et vous savez ce qu’on peut faire d’autre ? On peut analyser la qualité du code. On peut écrire un outil qui examine la complexité cyclomatique. En réalité, il existe déjà un excellent outil. Un outil vieux de 20 ans. Il s’appelle CRAP. C’est un bon nom. Je ne sais pas ce que cela signifie exactement. Et je n’ai pas envie de le savoir. C’est une combinaison de couverture de tests et de complexité cyclomatique. Vous pouvez demander à l’IA de faire descendre le score CRAP à 5 ou moins, à 4 ou moins. Alors l’IA découpera les grandes fonctions en petits morceaux et fera en sorte que tout soit couvert par des tests.
Réfléchissez à la puissance dont vous disposez. Vous pouvez élever la qualité du code à un niveau jamais vu auparavant.
Je sais. Je suis ce vieux monsieur de Clean Code. Mais je vais être honnête. Si vous poussez l’IA à travailler à fond, vous pouvez rendre le code bien, bien plus propre.
6 commentaires
Avis sur Reddit
On dirait la voix de méchant que Mark Hamill fait d’habitude
On dirait vraiment un développeur qui en a vu de toutes les couleurs
if (f == -1) { printf("open failed\n"); exit(1); }L’IA l’écrira à ma place, et ajoutera des types d’erreur séparés avec des messages et des paramètres pertinents pour toutes les causes d’échec possibles. L’IA n’est pas paresseuse comme moi, donc je peux désormais me concentrer sur la logique de traitement des fichiers
On a l’impression d’entrer dans une époque où la majeure partie du code est du code boilerplate. Ce qu’il faut, c’est la capacité à bien transmettre les exigences, et à garder un moyen de vérifier en continu la sécurité (OWASP) et les performances du code généré
C’est extrêmement non déterministe, et même les modèles récents peuvent varier au cours d’une même journée entre « ça fera l’affaire » et « quasiment inutilisable »
Le langage naturel a toujours été, est toujours et restera probablement ambigu et imprécis, donc il y a de fortes chances que ce problème ne soit jamais résolu. C’est précisément pour cela qu’on utilise des formules mathématiques plutôt que de dire « euh, ajoute X à Y et quand ça arrive dans Z, réfléchis bien »
En ce moment même, j’essaie encore de comprendre comment gérer correctement les permissions avec Claude, et sa manière d’implémenter de nouvelles actions / des changements de permissions était un exemple parfait de code qui « marche à peu près mais cassera un jour »
Claude écrit bien du code, mais pas toujours du bon code
Ce qu’il faut comprendre avec l’IA, c’est qu’elle n’est pas meilleure que les humains pour « réfléchir », elle est juste plus rapide. Elle fait les choses à peu près comme la plupart des gens les feraient si on le leur demandait, et en code ce n’est souvent pas terrible
Avant déjà, on pouvait embaucher plusieurs développeurs, leur expliquer ce qu’on voulait, et récupérer un résultat truffé de bugs, où un seul changement en cassait trois autres ailleurs. Claude fait exactement pareil si on le laisse faire. Je l’ai vu en pratique, et la réponse consiste toujours à aller lire le code produit puis à lui demander de le refactoriser pour qu’il casse moins et soit plus robuste
Tant qu’on utilise Claude pour écrire du code, il faudra continuer à être capable de juger si ce code tient la route. C’est comme si on lui faisait rédiger un CV ou des documents comptables à notre place : il faut quand même vérifier le résultat
On n’écrira peut-être plus le code à l’ancienne, mais il faudra toujours savoir lire ce qui est généré et l’examiner à la lumière de son expérience
Le problème, c’est que tout le monde pense que parce qu’il parle anglais, il peut demander à Claude de lui construire un programme. Mais parler anglais ne permet pas non plus de demander à Claude d’écrire une thèse de doctorat réfutant le rayonnement de Hawking. Il n’y a tout simplement aucun moyen de savoir si le résultat est correct
Il y a aujourd’hui plus de programmeurs employés qu’au moment où Microsoft a introduit le scaffolding. Il y en avait aussi plus quand des langages comme Basic ont permis d’écrire des instructions lisibles par des humains au lieu de l’assembleur, qu’à l’époque encore antérieure des cartes perforées
Les ordinateurs ont toujours été programmés avec des jeux d’instructions de moins en moins contraints et de plus en plus faciles à lire et à écrire
Je respecte Bob Martin, mais je pense qu’il a tort cette fois. Les gens continueront à écrire des instructions pour les ordinateurs. Simplement, ce ne sera plus dans un ensemble restreint d’instructions concrètes, mais dans un langage bien moins contraint et bien plus lisible pour les humains
Rien n’est terminé. Ça ne fait que commencer. La programmation vient de lancer un nouveau langage, et il s’appelle English
On produit déjà des quantités record de logiciels, et ça va encore s’accélérer. On va écrire plus de code qu’avant, et même si ça devient beaucoup plus rapide, on finira quand même avec davantage de personnes travaillant d’une manière ou d’une autre avec les logiciels. Parce que le coût de production s’est tellement effondré, ce qui ressemble au paradoxe de Jevons
Penser que « cette fois c’est différent » est présomptueux, et même des gens très intelligents ont du mal à imaginer ce que signifie une croissance exponentielle sur plusieurs dimensions. Les grands modèles de langage ne sont pas les seuls à s’améliorer
Donc oui, ça me paraît juste
C’est bien le pic de la bulle, non ? J’en fais l’annonce ici ☎️
La manière dont il en parle suppose des métriques de qualité logicielle, des tests professionnels et des années de compréhension de la qualité du code
Ces outils ne sont pas encore assez mûrs. Ou en tout cas pas largement adoptés. Je ne suis même pas certain que l’industrie les adoptera
Les pratiques CI/CD non plus n’étaient pas si difficiles à mettre en place, mais beaucoup d’entreprises ne les ont jamais adoptées complètement et ont continué à recruter davantage pour travailler de façon inefficace. Ce sera pareil à l’avenir, sauf si l’IA gère tout cela par défaut. Les outils actuels comme Claude Code, Cursor et Codes ne suffisent pas
On dirait Matrix si cet homme était un Agent
Pour bien piloter l’IA, il faut un niveau d’expertise technique de tout premier ordre. Si on se contente de demander à l’IA d’ajouter encore et encore du code, ce ne sera pas maintenable
En plus, je n’ai encore jamais entendu parler d’un seul produit de niveau marché exploité uniquement par de l’IA. Donc il faut se calmer
La prochaine étape, ce sera peut-être de faire du vibe coding directement avec le cerveau humain
Merci pour ce bon article.
En voyant les avis des développeurs en activité, on dirait vraiment que l’ère des codeurs est terminée. Cela ne semble pas différent des ouvriers qui cassaient les machines pendant la révolution industrielle. Un nouveau langage assez convaincant est apparu, et si vous ne vous y adaptez pas rapidement, vous serez « éliminé ».
Il y a aussi beaucoup trop de cas où l’on balance simplement du code en vrac..
https://eslint.org/docs/latest/rules/complexity
Les avis sur reddit semblent plutôt négatifs ou empreints de sarcasme.
En pratique, dans les situations où l’IA permet justement de faire avancer de façon concrète des points longtemps repoussés, comme la couverture de tests ou les tests E2E, cette attitude paraît au contraire assez cynique.