Je veux vous parler d'un sentiment que j'ai continué à ressentir au travail. Notre équipe expédiait plus rapidement que jamais. Tests réussis. Les déploiements étaient propres. Les dirigeants étaient heureux. D’après chaque mesure que nous avons suivie, les choses allaient très bien. Mais lors d’appels incidents, j’ai commencé à remarquer quelque chose d’inconfortable. Quelqu'un demanderait « pourquoi le système se comporte-t-il ainsi sous charge ? » et l'appel deviendrait silencieux. Non pas parce que les ingénieurs étaient incompétents : ils étaient brillants. Mais parce que la réponse résidait dans un code qu’une IA avait écrit il y a trois sprints, et que personne ne l’avait vraiment intériorisé. Nous l'avions examiné. Nous l'avions approuvé. Mais nous ne le possédons pas vraiment comme vous possédez quelque chose que vous avez construit vous-même à 2 heures du matin pour combattre un bug. Je ne pouvais pas nommer ce que je regardais se produire. Maintenant je peux. Nous avons un nom pour les raccourcis dans le code : dette technique. Nous disposons d’outils pour le mesurer, de cadres pour le réduire, de cultures d’ingénierie entières construites autour de son remboursement. Mais il n’y a pas encore de nom pour la dette qui s’accumule lorsqu’une IA écrit votre système et qu’aucun humain de votre équipe ne comprend pleinement pourquoi cela fonctionne. Je l'appelle dette cognitive – et je pense que ce sera la crise déterminante du génie logiciel de la prochaine décennie.
La dette technique réside dans le code. Vous pouvez le récupérer, le pelucher, le refactoriser. La dette cognitive vit chez les gens. C’est l’érosion de la compréhension humaine des systèmes dont nous dépendons. Lorsqu'un ingénieur senior écrit un système distribué complexe pendant des mois, il externalise son modèle mental dans le code lui-même : conventions de dénomination, couches d'abstraction, commentaires, documents d'architecture. Le code est lisible car la réflexion qui le sous-tend y est intégrée. Lorsqu’une IA écrit le même système en quelques heures, elle résout le problème correctement. Mais il ne code aucun modèle mental. Aucune réflexion n’est intégrée. Le code fonctionne, mais il existe dans un vide conceptuel. J'appelle ces architectures orphelines : des composants qui fonctionnent parfaitement mais n'appartiennent à aucune compréhension ...
[Courte citation de 8% de l'article original]