Je bosse sur un projet tout le long de l’année pour les cours, et je suis en train de découvrir durement les désastres du "Vibe-coding".

J’ai perso jamais touché à un LLM, mais on nous a fourni une base pour notre appli écrite par IA pour nous aider à nous lancer, après avoir vu au début du projet qu’il existait pratiquement aucune lib pour faire ce qu’on voulait.

J’ai tout de suite détesté, mais fait avec parce que j’étais le seul à être chafouin dans mon groupe et j’avais pas le temps de tout réécrire.

Déjà d’entrée de jeu, la complexité était dingue, alors que j’avais l’impression que ce qu’on faisait devait pas être aussi compliqué.

1 / 4

Vu que le projet est (sensé être) relativement simple, je m’en m’en sortait malgré tout, mais là je passe plus de temps à nager à contre-courant que de faire du code utile. Pourtant j’ai pas l’impression d’avoir touché une grosse partie du code…

Aujourd’hui, la dette technique est en train d’atteindre des proportions que j’ai jamais vu avant. C’est à un stade où on ne *peut pas* faire du code propre, on peut que faire des Hacks à la va-vite tellement y’a juste rien en place.

J’ai décidé d’étudier le détail ce qui a été écrit, pour essayer de comprendre où ça a merdé dans l’affaire, et bordel j’ai ouvert les yeux.

2 / 4

Y’a pratiquement aucune structure de donnée, tout est typé au pif (Python), et à part une lib qui aide au parsing de fichiers, aucune réelle abstraction est proposée.

L’architecture est dégueulasse. La majorité du code est dans un seul fichier de plus de 1 200 lignes, réparties dans quelques fonctions d’environ 100–200 lignes.

Y’a des classes qui servent à rien. Elles ont pas de propriétés, sont jamais dérivées, mais faut quand même instancier un objet pour taper dans une putain de fonction pure.

Y’a des fichiers qui sont ouverts, parsé, patchés, refermé plusieurs fois dans la même fonction,

3 / 4

Y’a du code mort dupliqué. J’ai jamais vu ça. Y’a une fonction qui est écrite, des wrappers qui demandent exactement les même arguments et les passent tel-quels sont défini 3 fois dans le fichier, et *absolument aucun* n’est utilisé dans toute la base de code.

Je crois que ce dernier c’est le pire. Je viens de supprimer 2 fichiers et pratiquement un quart du projet (en terme de volume de code), et j’ai retiré LITTÉRALEMENT AUCUNE feature.

Bref, je vais avoir un gros taff de refacto là, clairement.

Je m’étais contenté de faire du code propre dans les parties trop complexes pour que les autres y contribuent, mais là va falloir tout cramer.

4 / 4

Si je retiens un truc de l’histoire, c’est que si tu met en avant des IA pour du dev, tu devrais pas toucher à la MOINDRE ligne de code. Je veux plus jamais avoir à gérer ce genre de merdes.
@NuclearSquid moi ce que je retiens, c’est qu’il faut cramer les gens qui s’appuient sur cette merde gluante
@geobomatic En vrai ouais, valide. On peut en profiter pour générer un bout d’électricité avec la biomasse, histoire de pas faire de gâchis (c’est important l’écologie ^^)
@NuclearSquid @geobomatic Récemment, une connaissance n’a eu de cesse d’essayer de me convaincre de passer à l’IA, m’expliquant que ça me ferait gagner du temps, que ça me rendrait in fine plus compétitive, etc. La personne m’a également mise en garde (le pire étant qu’avec la mode actuelle, je pense qu’elle a raison) en me disant que trouver du boulot en tant que junior sans utiliser l’IA, désormais, c’est presque peine perdue.
@NuclearSquid @geobomatic Or quand je lis ça, bien que ça ne m’étonne pas, ça me conforte encore un peu plus dans l’idée que je n’ai rien à gagner à utiliser de l’IA.

@Poulpette @geobomatic
De ce que je vois, ça te fait gagner beaucoup de temps si tu sais pas coder (vu que les LLM sont très bon pour copier-coller du code trouvé sur le ’ternet — un peu fait pour ça, quoi — alors que toi t’as pas de culture technique donc tu sais pas quoi chercher), mais ça t’en fait perdre beaucoup au long terme si tu sais coder (parce que le code que ça te fait est juste impossible à maintenir)

PS : Ça fait gagner du temps si tu sais pas coder, mais je pense pas que tu puisses aller beaucoup plus loin qu’un petit script si tu te repose que sur ça, hein.

@NuclearSquid @geobomatic Pour faire une comparaison, à mes yeux, ça fait gagner autant de temps qu’apprendre à « jouer du piano » en recopiant note à note et par mimétisme un truc trouvé sur YouTube. Ça donne l’illusion de pouvoir sortir une pièce d’un certain niveau en « peu de temps », sauf qu’en sortant de là, on n’a toujours rien appris, on ne sait rien, et comme tu le signales, sur le long terme, ça fait plus de mal que de bien.

@Poulpette @NuclearSquid @geobomatic ... Du coup je me demande bien si ce temps qu'il passe à vérifier le code de ses devs est inférieur à 30% de sa journée ou non 🤔 mais bon il devait le faire avant aussi j'imagine.

Bref, pour lui c'est très bien, mais c'est un outil qu'il faut savoir utiliser correctement, et soigneusement vérifier, sinon on fait de la merde.

J'ai le sentiment que beaucoup de monde a choisi cette seconde option.

@Poulpette @NuclearSquid @geobomatic J'ajouterais que, d'après ce que j'ai compris de ses explications, il travaille plutôt en mode : "écris moi une fonction/procédure qui fait ci ou ça". L'architecture applicative, c'est lui qui l'a en tête.
@RachelC_Y @Poulpette @NuclearSquid @geobomatic j'ai aussi ce profile de dev senior, et oui l'IA bien utilisée, ça marche, et même sur des gros sujet d'architecture. Le truc c'est qu'il faut lui préciser exactement le contexte et ce qui est attendu.
@RachelC_Y @Poulpette @NuclearSquid @geobomatic Si c'est "ajoute telle fonctionalité" sans rien dire d'autre, alors oui on se retrouve avec un blougigoulba de code inmaintenable. Si on lui dit en gros "cette appli suit une architecture hexagonale, je veux rajouter telle fonctionalité, propose moi un plan", et qu'on ajuste/valide avant de lancer le dev, oui ça mache plutôt bien.
@RachelC_Y @Poulpette @NuclearSquid @geobomatic NB : si on laisse un junior qui sort d'école sans surveillance, on se retrouve aussi avec du code inmaintenable. C'est pas spécifique à l'IA, c'est juste que l'IA est plus rapide.

@jigso @RachelC_Y @Poulpette @NuclearSquid @geobomatic

Et utiliser le plus de test et de contrôle possible.

Curieusement beaucoup de LLM s'en sortent bien sur du Rust ( alors que c'est pas vraiment ce qu'il y a le plus dans la data d'entraînement )

Avec Leptos pour du front-end et sqlx avec le check du SQL à la compilation, ça me permet vraiment de me focaliser sur le code métier que jamais je ferrais générer.

@Aedius @jigso @RachelC_Y @Poulpette @NuclearSquid Nan mais si écrire du code ne leur plait plus, faut changer de taff, au lieu de cramer l’eau potable, faire monter les prix de la RAM et produire du CO₂ à tout va hein…

@geobomatic @jigso @RachelC_Y @Poulpette @NuclearSquid

De toute façon écrire le code c'est ni ce qui prends du temps ni ce qui est compliqué.

@Aedius @geobomatic @jigso @RachelC_Y @Poulpette @NuclearSquid yep, c'est l'algorithme qui prend du temps
Après, c'est "juste" de la traduction