Comment savons-nous ce que nous savons ?
[SOTA]
Quand nous faisons évoluer le code d’un système, comment savons-nous ce que nous savons ? Nous avons exploité autant que possible la matière qui se trouve là sous la forme d’artefacts :
- le code lui même
- les tests autovérifiants
- la documentation, les spécifications, les schémas, les diagrammes, etc.
- les logs du gestionnaire de source
- ce qui a été consigné dans l’ADR
- les CR de revues
- les CR de tests
- les rapports d’exécution, d’incidents, d’audits
- les traces des conversations IM, email, notes etc.
- les récaps d’activités, les plannings, etc.
Nous avons interrogé et écouté ce que nous disent tous les acteurs du système, via
- meetings
- ateliers
- observations
- interviews
- communications officielles et officieuses
- explications, histoires et anecdotes
- confidences, humeurs…
Et en supplément de cela,
- nous fouillons dans nos bibliothèques, nos blogs favoris, nos cours en ligne, pour y relever des patterns de savoir-faire applicables ici
- nous nous appuyons sur notre culture : ce qui va sans le dire, nos standards, nos connaissances “universelles” locales, les lieux-communs, ainsi que nos intuitions, forgées par l’expérience
Et si aucune de ces sources ne conduisait à ce qu’il faut savoir,
- nous (re-)construisons le savoir, par analyse, déduction, généralisation
- nous essayons des trucs, en créant des variations, de manière contrôlée autant que possible
En tant que nous contribuons à un projet de développement, comme “tech” ou “métier”, c’est dans cette dimension que nous devons chercher de la “productivité” et non dans le nombre de lignes de code ou de points d’incrément par sprint.
La vitesse et la précision auxquelles nous pouvons savoir ce que nous savons conditionne la vitesse à laquelle nous pouvons prendre de bonnes décisions. La fameuse VBD, la métrique impossible à mesurer.
Dans quelques années (quelques mois selon certains) une IA pourra refondre du code existant. Avec cet outil supplémentaire, capable de générer en quelques secondes des centaines de lignes de code, la même question se posera : comment savons-nous ce que nous savons ?
Des années durant j’ai entendu (je m’exposais volontairement) la scie : “ah oui les tests automatisés, c’est bien, mais qui teste les tests ?”
Je reprends cette mise en abyme : comment une IA qui génère du code se protège-t’elle de ses propres hallucinations ?
Un développeur, même peu expérimenté, peut à tout le moins poser des questions autour de lui à propos de ce qu’il ne sait pas. Remplaçons le par une IA : devenus des génies du prompt, nous générons plus vite, plus de code. Plus de matière à investiguer, vérifier, valider, débugguer. En quoi cela améliorera la vitesse à laquelle nous prenons de bonnes décisions ?
Mystère.
C’est magique.