Le piège des prémisses
Pour moi, le plus difficile dans la collaboration avec des programmeurs juniors, que ce soit en open source ou au travail, c'est d'éviter le piège des prémisses. C'est là que les hypothèses fondamentales intégrées dans la première ébauche du code ne sont pas remises en question avant que vous ayez déjà passé beaucoup trop de temps à améliorer l'implémentation. C'est la même chose avec l'IA.
Car l’IA est aujourd’hui comme un excellent programmeur junior, doté d’une connaissance encyclopédique de la syntaxe et des API, mais également affligé des mêmes propensions à produire des solutions trop compliquées et subtilement défectueuses.
On pourrait y voir un signal positif pour l'avenir de la programmation de l'IA. La trajectoire actuelle suit l'arbre de progression du programmeur humain et, à terme, comme les meilleurs juniors, elle atteindra des niveaux de compétence supérieurs dans les détails subtils de l'esthétique du code, du raisonnement sur les problèmes nouveaux et de la cohérence architecturale. J'espère que ce sera le cas.
Mais cela ne change rien au fait que, jusqu'à présent, je n'ai vu aucun des modèles d'IA que j'utilise depuis un an produire un code de qualité dans des domaines que je connais très bien. Et comprenez moi bien, ici je parle principalement de code, mais il en va de même pour tout les domaines pour lesquels je l’ai utilisé.
Il y aura parfois une lueur d'espoir, comme chez les programmeurs juniors prometteurs, mais dans l'ensemble, les solutions nécessitent presque toujours une quantité importante de travail de refonte.
C'est là que ce piège de prémisse éclate !
J'ai vu cela à plusieurs reprises avec le code Python et JavaScript qui sort de l'IA, donc je doute que ce soit si particulier à un langage plutôt qu'à un autre. Mais la propension à intégrer des dépendances inutiles, la présentation trop verbeuse et les impasses architecturales sont là tout le temps.
C'est ce que j'entends de la part de personnes qui essaient d'utiliser l'IA pour écrire des systèmes entiers à leur place sans être elles-mêmes des programmeurs compétents. C'est une incroyable précipitation de voir un prototype prendre vie en quelques minutes, mais le fait de faire avancer ce prototype vers quelque chose qui fonctionne de manière fiable se transforme souvent en une danse d'un pas en avant, deux pas en arrière. (Un peu comme les nombreuses histoires de personnes qui se font avoir par un programmeur junior à peine qualifié sur Upwork !).
Bien que cela soit frustrant, cela prend tout son sens lorsque l'on considère les données de formation qui ont été utilisées pour enseigner ces modèles. Le flux incessant de tutoriels en ligne de base, les réponses simplifiées de Stack Overflow et la triste réalité selon laquelle une bonne partie du contenu de programmation sur Internet est créé par des aveugles qui guident d'autres aveugles.
Les programmeurs expérimentés ont tous commencé avec le même régime d'information, mais ont fini par atteindre des niveaux de compréhension et de maîtrise plus élevés en travaillant sur des bases de code propriétaires. Là où tous les compromis absents du code de type didacticiel se révèlent et demandent à être pesés avec finesse.
Je pense que le prochain grand bond en avant de ces modèles dans le cadre du paradigme actuel ne se produira probablement pas tant qu'ils ne seront pas exposés à un vaste corpus de code propriétaire d'entreprise. Et la manière dont cela va se produire n'est pas encore tout à fait claire.
En attendant, en tant que programmeur senior, vous feriez bien de traiter l'IA comme vous le feriez avec un programmeur junior. Vous gagnerez rarement du temps en lui demandant de produire un système entier, ou même un sous-système, si vous vous souciez de la qualité finale de l'architecture ou de l'implémentation. En effet, pour vérifier les hypothèses qui ont été intégrées dans son cheminement, vous devrez passer autant de temps à comprendre les choix qu'à faire le travail vous-même.
Je reste optimiste quant à l'écriture de code (ou de texte) par l'IA pour nous tous, mais je reste également réaliste quant à ses capacités actuelles. Je suis également conscient du danger d'inciter des programmeurs plus expérimentés, y compris moi-même, à signer des contrats de sous-traitance, alors que cela sape notre endurance à l'apprentissage continu, car nous nous appuyons trop sur l'IA qui écrit pour nous plutôt que de lui apprendre comment.
Espérons que cet article vieillisse mal d'ici quelques années !
Merci de m’avoir lu!