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 J'ai un ami développeur sénior, qui lui a une très bonne expérience des LLM. C'était intéressant d'échanger avec lui parce que c'est vraiment la seule voix de ce type que j'ai autour de moi. Il me dit qu'il gagne environ 30% dans une journée, que l'IA lui génère le code que lui aurait fait. Il fait très attention à bien lui dire de faire comme lui aurait fait et le résultat est là.

Il encadre une équipe de développeurs, et là en revanche ça ne va pas. Les gars lui disent "ça c'est écrit par l'IA" et ne regardent pas. Il passe une partie de ses journées à leur expliquer qu'ils sont responsables de la qualité du code...

@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
@RachelC_Y @Poulpette @NuclearSquid @geobomatic review du code de llm c'est beaucoup plus épuisant que de review du code écrit par un humain. Si maintenant il doit deviner dans le code qu'il review de ses collègues ce qui est organique ou pas, c'est sûr il y passe plus d'énergie qu'avant.
@corpsmoderne @Poulpette @NuclearSquid @geobomatic Non, d'après ce que j'ai compris (à nouveau je ne fais que répéter), ça fait partie de ses procédures de revue : qu'est-ce que tu as fait, qu'est-ce que l'IA a fait, tu es responsable de tout le code.
@RachelC_Y @Poulpette @NuclearSquid @geobomatic tu disais : "là manifestement ça ne va pas" => son message a du mal à passer on dirait...
@corpsmoderne @Poulpette @NuclearSquid @geobomatic Oui. Apparemment les juniors se désengagent de ce qui est créé par l'IA. Ce qui rejoint un principe que je répète toujours : on ne sous-traite pas ce qu'on ne maîtrise pas.

@Poulpette @NuclearSquid @geobomatic autre son de cloche : dans mon équipe après plusieurs stagiaires qui manifestement ne faisaient que laisser copilote coder, un·e junior qui n'utilise pas de llm au quotidien aura un avantage compétitif certain ^^ .

(note: on en a aussi tiré des leçons sur notre façon de (mal) les encadrer)

(On est certainement pas un cas représentatif de l'industrie though)

@corpsmoderne @NuclearSquid @geobomatic Dans mon cas, sans pouvoir rien affirmer, je pense que la personne s’attendait à ce que je sois parfaitement autonome alors qu’elle sait que je débute et que le projet de départ, selon elle, était de prendre un débutant pour le former et lui déléguer une partie de ses tâches au bout d’un certain temps. Sauf que rien qu’à l’idée que je lise de la doc normalement, sans passer par une IA pour « apprendre », j’ai senti que ça coinçait déjà. (1/4)
@corpsmoderne @NuclearSquid @geobomatic En tant que prof de premier métier, c’est là que je rebondis sur ta première parenthèse : la personne dont je parle n’est pas pédagogue et l’a admis. Elle ne savait finalement pas quoi me faire faire, n’a pas anticipé certaines choses que j’ai pu faire. Je pense qu’elle attendait que ce soit une IA qui me « forme », ou plutôt que j’aie « le bon sens » de me « former » en parfaite autonomie avec une IA, ce qui est une aberration. (2/4)
@corpsmoderne @NuclearSquid @geobomatic Tout le monde n’est pas pédagogue, et ce n’est pas un problème en soi (il faut de toute pour faire un monde), mais je pense que l’IA va aussi mettre en exergue des problèmes d’encadrement qui se voyaient peut-être moins avant, ou moins bien, ou moins vite. Vouloir qu’un débutant apprenne correctement dès le départ, c’est une chose (apprentissage de l’autonomie inclus). (3/4)
@corpsmoderne @NuclearSquid @geobomatic Vouloir qu’un débutant ait les mêmes réflexes qu’une personne expérimentée, en revanche, c’est une erreur de jugement doublée d’une possible envie de ne pas effectuer son boulot d’encadrant, de formateur. Or enseigner nous oblige à apprendre nous aussi, à faire des efforts, à préparer des trucs (des cours, typiquement), à se mettre à la place d’autrui, et ça, tout le monde n’a pas envie de le faire. L’IA apparaît alors comme le sauveur. (4/4)
@corpsmoderne @NuclearSquid @geobomatic J’ajouterai que si, en effet, le développeur est responsable de ce qu’il produit (cela vaut aussi pour le développeur débutant), j’ai l’impression, au fil de mes lectures, que l’IA devient aussi une excuse pour reporter toute la responsabilité sur ceux qui maîtrisent le moins le métier. Certains supérieurs peuvent se dédouaner en disant que le débutant ne sait pas gérer l’IA et qu’après tout, il a un bon outil à dispo, à lui de s’assurer que tout est bon.
@Poulpette @corpsmoderne @NuclearSquid @geobomatic ah tiens, ça me rappelle moi, on nous a fait une présentation qui vaut pour "documentation" et mon chef m'a dit de balancer la transcription dans l'ia et à ajouté que ce serait bon à 90% (et je les trouve comment les 10% halluciné ? ><)
@Poulpette @NuclearSquid @geobomatic moi c'est mon chef et un collègue qui me disent qu'il faudra repasser derrière à chaque fois ><
(On a déjà stack overflow pour ça ^^")