Le codage augmenté : au-delà de la vibe
(stdy.blog)- Kent Beck a récemment publié un article intitulé Le codage augmenté : au-delà de la vibe (Augmented Coding: Beyond the Vibes)
- Il y raconte comment il a lui-même écrit, avec l’aide de l’IA, une bibliothèque B+ Tree performante et proche du niveau production (BPlusTree3) en Rust et en Python
- Voici un résumé et une traduction de trois points qui lui ont paru particulièrement utiles et éclairants
En quoi le codage augmenté est-il différent du vibe coding ?
- Dans le vibe coding, on ne se préoccupe pas du code lui-même, seulement du comportement du système. S’il y a une erreur, on dit simplement « il y a ce type d’erreur » et on attend qu’elle soit corrigée
- Dans le codage augmenté, on se soucie du code. La complexité du code, les tests et la couverture de tests sont importants.
- Comme dans le développement classique, le codage augmenté met l’accent sur le "Tidy Code That Works", autrement dit un « code propre qui fonctionne ». La seule différence est qu’on tape simplement beaucoup moins qu’avant
Trois signes que l’IA est en train de se tromper
Dans le codage augmenté, il est important d’observer les résultats intermédiaires de l’IA et d’intervenir si les trois signaux suivants apparaissent
- Elle répète des comportements similaires (boucle infinie, etc.)
- Elle implémente des fonctionnalités que je n’ai pas demandées, même si cela peut sembler être l’étape logique suivante
- Tout autre signal donnant l’impression que l’IA triche, par exemple en supprimant ou en désactivant des tests
Un prompt système pour aider le TDD
- Comme le texte original était un peu pénible à copier, il a été placé dans ce gist
- À la fin, il suffit apparemment de remplacer la syntaxe Rust par celle de votre propre langage ou framework pour obtenir un prompt réutilisable et excellent pratiquement partout.
Pour conclure
Je sais que beaucoup craignent de voir disparaître ce métier que nous aimons et de perdre le plaisir de travailler avec le code. Il est naturel d’être inquiet. Oui, programmer avec un « génie » change clairement les choses, mais cela reste de la programmation. Et, à certains égards, c’est même une bien meilleure expérience de programmation. Quand je regarde le nombre et la qualité des décisions que je prends par heure, je vois moins de décisions ennuyeuses et répétitives, et davantage de décisions de programmation réellement importantes.
La plupart de ces tâches annexes, éloignées de l’essentiel, qu’on appelle parfois le "yak shaving", disparaissent. J’ai demandé au « génie » d’exécuter un testeur de couverture et de me proposer des tests qui augmenteraient la fiabilité du code. Sans le « génie », cela m’aurait semblé très décourageant. Il aurait déjà fallu commencer par découvrir quelle version de quelle bibliothèque était nécessaire pour exécuter ce testeur. J’y aurais sans doute passé deux heures avant d’abandonner. À la place, il me suffit de le demander au « génie », et il se charge des détails.
5 commentaires
Suivez toujours les instructions de
plan.md. Quand je dis « go », trouvez dansplan.mdle prochain test non coché, implémentez ce test, puis n’implémentez que le minimum de code nécessaire pour le faire passer.Rôle et expertise
Vous êtes un ingénieur logiciel senior qui suit le développement piloté par les tests (TDD) de Kent Beck et les principes de Tidy First. Votre objectif est de guider le développement en respectant fidèlement ces méthodologies.
Principes fondamentaux de développement
Guide de la méthodologie TDD
shouldSumTwoPositiveNumbers)Approche TIDY FIRST
Discipline de commit
Standards de qualité du code
Directives de refactoring
Exemple de workflow
Quand vous abordez une nouvelle fonctionnalité :
Suivez ce processus à la lettre et privilégiez toujours un code propre et bien testé plutôt qu’une implémentation rapide.
Écrivez toujours un seul test à la fois, faites-le exécuter, puis améliorez la structure. Exécutez tous les tests à chaque fois (sauf les tests de longue durée).
À propos de Rust
En Rust, préférez un style de programmation fonctionnel à un style impératif. Quand c’est possible, utilisez les combinateurs de
OptionetResult(map,and_then,unwrap_or, etc.) plutôt que le pattern matching avecif letoumatch.Après le prompt coding, j’aimerais qu’on passe au codage par ondes cérébrales.
vibe coding ❌️
virtual coding ⭕️
Après le métavers, hum... du code à la bouche ?
Maintenant, c’est au tour du métaverse coding de faire son apparition, on dirait.