Le périmètre
Avant même le contenu : quels fichiers ont été touchés ? Y en a-t-il que tu n’avais pas demandés ? Un diff qui déborde du périmètre est un signal à lui seul, même si chaque ligne prise isolément semble correcte.
Pratiquer · la discipline qui protège
Faire produire du code est devenu facile. Juger ce code, c’est ce qui sépare un dev augmenté de quelqu’un qui accumule de la dette sans le savoir. Ce chapitre est probablement le plus rentable de toute la formation.
Le principe non négociable : le code que tu merges est ton code. « C’est l’IA qui l’a écrit » n’a jamais réparé une production cassée ni convaincu un reviewer.
1 · La méthode
Relire linéairement un gros diff ne marche pas : l’attention s’épuise et on valide la fin sans la lire. Quatre passes ciblées sont bien plus efficaces.
Avant même le contenu : quels fichiers ont été touchés ? Y en a-t-il que tu n’avais pas demandés ? Un diff qui déborde du périmètre est un signal à lui seul, même si chaque ligne prise isolément semble correcte.
Le changement résout-il le problème posé, ou un problème voisin plus facile ? C’est le piège classique : l’agent traite le symptôme visible plutôt que la cause. Un test qui passe ne prouve pas que la bonne chose a été corrigée.
Là où le code IA est le plus faible : valeur nulle ou vide, erreur réseau, échec d’écriture, entrée hostile, concurrence. Le chemin nominal est presque toujours correct ; les bords sont souvent traités à la va-vite ou pas du tout.
Ce code ressemble-t-il au reste du projet ? Réutilise-t-il les helpers existants ou réinvente-t-il une fonction déjà présente ? Un agent qui n’a pas lu tout le repo duplique volontiers ce qu’il ne connaît pas.
2 · Signaux d’alerte
Ces défauts reviennent si souvent qu’ils méritent une checklist mentale. Ils sont rarement visibles au premier coup d’œil, parce que le code « a l’air » propre.
Un import vers un paquet qui n’existe pas, ou qui existe mais ne fait pas ça. Au-delà du bug, c’est un risque de sécurité réel : des attaquants publient des paquets aux noms fréquemment hallucinés.
Un try / catch qui capture tout et ne fait rien, ou qui log et
continue comme si de rien n’était. Ça transforme une panne visible en corruption
silencieuse — le pire scénario en production.
Le test le plus facile à écrire est celui qui vérifie que le mock renvoie ce qu’on lui a dit de renvoyer. Il passe toujours, il ne prouve rien. Vérifie qu’un test échouerait si tu cassais volontairement la logique.
Entrées non vérifiées, requêtes construites par concaténation, données de formulaire utilisées directement. Le chemin heureux fonctionne, l’entrée hostile passe aussi.
Trois couches, une interface et une factory pour un besoin qui tenait en quinze lignes. Le code paraît « professionnel » mais devient coûteux à maintenir. Demande toujours la version la plus simple qui marche.
Une fonction utilitaire recréée alors qu’elle existait déjà ailleurs, avec un nom légèrement différent. Deux implémentations divergentes du même besoin, c’est un bug futur garanti.
Le code que tu merges est ton code. « C'est l'IA qui l'a écrit » n'a jamais réparé une production cassée ni convaincu un reviewer.
Le principe non négociable de ce chapitre3 · Le filet
Les points de restauration d’un agent ne couvrent que ses propres éditions de fichiers. Une commande lancée, une migration appliquée, un fichier supprimé au terminal : rien de tout ça ne s’annule. Git est le seul vrai filet.
Jamais d’agent qui travaille directement sur la branche principale. Le retour arrière doit rester trivial.
Un état propre et commité avant de lancer une grosse tâche : c’est ce qui rend le diff lisible ensuite.
Un sujet par commit. Un commit géant mélangeant fix, refacto et formatage est impossible à relire et à annuler proprement.
Le diff complet, pas seulement le résumé de l’agent. C’est le dernier moment où une erreur coûte encore peu.
4 · Déléguer la relecture
Une seconde passe automatique attrape beaucoup de choses, à condition de savoir ce qu’elle ne remplace pas.
Demande à ton agent
Relis le diff que tu viens de produire, en tant que
reviewer critique et sans complaisance.
Pour chaque point trouvé, donne le fichier, la ligne
et la gravité (critique / important / cosmétique).
Cherche en priorité :
- dépendances ou API inventées
- erreurs avalées silencieusement
- entrées non validées
- tests qui ne testeraient rien si je cassais la logique
- code dupliqué avec l'existant du projet
Ne corrige rien : je veux d'abord le rapport.
Vérifie que c’est acquis
L’agent te livre une fonctionnalité avec des tests, et tous les tests passent du premier coup. Quel est le bon réflexe ?
À retenir
Relis par passes plutôt que linéairement, connais les défauts typiques du code généré, exige des tests qui savent échouer, et garde git comme filet réel. L’IA accélère la production ; c’est ta relecture qui décide de ce qui entre en production.