J’ai passé des semaines à écrire un système de dialogue entre animateurs pour ma radio. Deux voix qui se répondent à propos du morceau qu’elles viennent de choisir, chacune dans sa langue. Quatre versions successives : réaction simple, dialogue, passage de relais, puis appariement des animateurs par affinité.
Quarante-huit commits d’avance sur le projet d’origine.
Le 5 juillet, l’auteur du projet a fusionné sa propre implémentation. Développée en parallèle, sans qu’aucun de nous ne sache que l’autre y travaillait.
Regarder honnêtement
La tentation, à ce moment-là, est de comparer pour gagner. J’ai comparé pour savoir.
Chez moi : deux appels au modèle de langage, en parallèle, à chaque morceau. Chez lui : un seul appel qui produit l’échange entier, et pas à chaque morceau — deux pauses par heure, à la vingtième et à la cinquantième minute.
Ce détail-là m’a fait comprendre que j’avais perdu. Ces minutes ne sont pas choisies au hasard : les jingles d’identification tombent à :15, :30 et :45, la vérification de l’heure à :00. En plaçant les dialogues à :20 et :50, il rend une collision structurellement impossible. Deux animateurs ne peuvent pas se parler dessus. Ce n’est pas un correctif, c’est une conception.
Moi, j’avais un système plus bavard, plus cher, et qui pouvait se marcher dessus.
Le test
J’ai déclenché un échange à la main, sur du code qui n’était plus le mien :
Milo: Flow Rhythm really nails that empty-pocket, full-head feeling.
Iris: Oui. C'est exactement l'état où les idées peuvent enfin se déposer.
Milo: Always feels like you've just cleared space for them to land.
Iris: Comme une table vide, juste avant qu'on y pose une tasse de thé.
Quatre répliques, un seul appel, chacun dans sa langue, et ils se répondent vraiment.
L’inventaire des pertes
J’ai jeté : un tableau de bord des décisions de sélection, des boutons de vote pour les auditeurs, plusieurs améliorations de l’algorithme de choix, un contexte local, un système d’affinité entre animateurs, une comptabilité fine des coûts.
Certaines de ces choses n’existent nulle part ailleurs. Elles sont conservées dans une branche, une étiquette et une image Docker — récupérables, jamais reprises, probablement.
Ma station, elle, a survécu intacte. Mes animateurs, mes émissions, mes compétences personnalisées : tout est passé sans une erreur. Parce que la configuration ne vivait pas dans le code.
Ce qui restait de mon côté
En cherchant ce que je pouvais remonter au projet d’origine, j’ai trouvé quatre correctifs. Trois réparaient du code que j’avais moi-même écrit — donc sans objet ailleurs. Le quatrième ne se reproduisait pas.
J’ai failli ouvrir une contribution pour un cinquième bug, avant de vérifier : il venait d’identifiants périmés sur ma propre machine. Une commande a suffi.
Quatre candidatures annoncées, zéro contribution envoyée. C’est le bon résultat. La retenue est une compétence.
Ce que ça coûte, ce que ça rapporte
Ce que ça coûte est évident. Ce que ça rapporte l’est moins : je suis passé d’un projet dérivé de quarante-huit commits à zéro divergence. Les mises à jour redeviennent triviales. Chaque amélioration que quelqu’un d’autre écrira m’arrivera gratuitement.
Le travail dérivé n’est pas un actif. C’est une dette avec une bonne histoire.
Le principe
Comparer pour savoir, pas pour gagner. Et quand on a perdu, jeter vite.
Radio IA en direct : radio.robotariis.com