Tribunes

Oui, vous devez utiliser l'IA pour coder, mais pas comme ça !

Oui, vous devez utiliser l'IA pour coder, mais pas comme ça !
L’usage de l‘IA dans le développement ne se discute plus. Mais comment le faire à bon escient ? A défaut, l’efficacité des équipes de développeurs risque non pas d’augmenter, mais bien de s’effondrer. (Photo : Markus Spike/Unsplash)

L'utilisation de l'IA a augmenté la quantité de code fourni, donc la quantité de code à retravailler ! N'utilisez pas plus d'IA que vous ne pouvez en gérer.

PublicitéSi vous êtes épuisé par l'évolution constante du paysage de l'IA, vous n'êtes pas un cas isolé. Dans un post bien senti, Victor Dibia, le cerveau de Microsoft Research, décrit le « type particulier de fatigue que l'on ressent lorsqu'on essaie de suivre le rythme sans précédent des progrès de l'IA ». Cependant, si vous êtes un développeur, vous n'avez plus la possibilité d'ignorer l'impact de l'IA générative sur le développement de logiciels. Certes, votre compteur kilométrique peut varier selon que vous êtes un développeur plus ou moins expérimenté, mais nous sommes arrivés à un point où vous vous devez tout simplement d'utiliser l'IA pour vous aider dans votre travail.

La bonne question est : comment ? Sankalp Shubham, ingénieur en IA appliquée, décrit l'évolution des assistants de codage à base d'IA et donne d'excellents conseils sur la manière de les utiliser efficacement. Il compare l'assistance au codage à une voiture : des fonctions comme l'auto-complétion vous donnent un maximum de contrôle, mais avancent lentement (première vitesse), tandis que des fonctions plus ambitieuses, comme le fonctionnement en agent, « délaissent un contrôle granulaire pour davantage de vitesse et d'automatisation ». L'ironie est que les développeurs plus expérimentés ont tendance (à juste titre) à jouer la carte de la sécurité, autrement dit de rester en première, tandis que les développeurs plus juniors donnent à l'IA plus de contrôle afin d'aller plus vite, quitte à casser des choses au passage.

Plus d'assistance, plus de problèmes

Il s'agit là d'un point crucial. L'IA est indispensable aux développeurs de logiciels, mais pas parce qu'elle supprime du travail. Elle modifie plutôt la manière dont les développeurs doivent travailler. Pour ceux qui se contentent de confier leurs tâches de développement à une machine, les résultats sont tout simplement désastreux. Le chercheur en informatique Santiago Valdarrama appelle cela le processus 'fouette-modèle'. Ce dernier peut être décomposé comme suit :
1. Demandez à un modèle de générer du code.
2. Le code comporte un bogue.
3. Demandez au modèle de corriger le bogue.
4. Vous avez maintenant deux bogues différents.
5. Demandez au modèle de corriger les bogues.
6. Il y a maintenant un troisième bogue.

Comme Santiago Valdarrama le résume, « c'est la triste réalité pour ceux qui ne peuvent pas comprendre le code que leur modèle d'IA a généré ». Donc, si l'IA contribue au développement de logiciels, mais elle ne remplace pas les développeurs. Sans l'intelligence humaine, elle est sujette à toutes sortes d'erreurs qui ne seront pas détectées, ce qui crée toutes sortes de problèmes. Comme le dit Charity Majors, directrice technique de l'éditeur d'outil d'observabilité Honeycomb, l'IA n'a rien fait pour « faciliter le travail de gestion, de compréhension ou d'exploitation... du code. En fait, elle n'a fait que rendre des tâches difficiles plus ardues encore ».

PublicitéSi l'on utilise mal l'IA, les choses s'aggravent, au lieu de s'améliorer. Yegor Denisov-Blanch, chercheur à l'université de Stanford, note que son équipe a constaté que l'IA augmente à la fois la quantité de code livré et la quantité de code à retravailler, ce qui signifie que « le code utile livré n'augmente pas forcément » avec l'emploi de la technologie. En bref, « certaines personnes parviennent à être moins productives avec l'IA ». Et non plus. Alors, comment s'assurer que les assistants de codage vous permettent d'en faire davantage ?

Conduire lentement pour mieux maîtriser son véhicule

Comme le rappelle Sankalp Shubham avec son analogie automobile, « plus le rapport de vitesse d'une voiture est bas, plus vous contrôlez le moteur, mais moins vous roulez vite ». Appliqué au développement, cela donne : « si vous avez le sentiment de maîtriser la situation, passez à la vitesse supérieure. Si vous vous sentez dépassé ou bloqué, rétrogradez ». Voilà le secret. Cet équilibre est toujours personnel - il dépend de chaque développeur - et nécessite un certain niveau de lucidité de la part de ce dernier, mais telle est bien la clé. Comme le dit Sankalp Shubham, « le codage assisté par l'IA consiste à comprendre quand vous avez besoin d'un contrôle plus granulaire et quand vous devez abandonner ce contrôle pour aller plus vite », en reconnaissant que « le choix de ces vitesses supérieures laisse plus de place aux erreurs et aux problématiques de confiance ».

Les ingénieurs les plus expérimentés semblent comprendre cet équilibre, conservant une certaine prudence face aux outils d'IA (c'est-à-dire qu'ils les utilisent pour accomplir davantage de tâches à des 'vitesses inférieures', comme l'auto-complétion). Le problème vient plutôt des ingénieurs débutants et des profils non-ingénieurs qui ont tendance à faire confiance aux outils d'IA bien plus qu'ils ne le devraient. Dans une certaine mesure, nous pouvons blâmer les années de marketing provenant des plateformes Low-code et No-code, qui promettent de transformer tout un chacun en développeur sans aucune de connaissances en matière de logiciels. Ou avec simplement un vernis de connaissances. Car il s'agit d'un faux espoir.

Savoir encadrer l'IA

La solution ? Si vous souhaitez utiliser des assistants de développement à base d'IA, ne vous en servez pas comme excuse pour ne pas apprendre à coder. Les robots ne vont pas le faire à votre place. Les ingénieurs qui tireront le meilleur parti des assistants d'IA sont ceux qui connaissent le mieux les logiciels. Ils sauront quand donner le contrôle à l'assistant et comment limiter cette assistance (peut-être en réduisant la portée du problème sur lequel ils l'autorisent à travailler). Les ingénieurs moins expérimentés courent le risque d'aller vite, mais de se retrouver bloqués ou de ne pas détecter les bogues créés par l'IA.

En bref ? L'IA ne peut pas remplacer une bonne programmation, parce qu'elle ne fait pas vraiment de la bonne programmation. Elle peut néanmoins toujours s'avérer très utile, mais cette utilité est fortement corrélée à l'expertise du développeur qui l'utilise.

Partager cet article

Commentaire

Avatar
Envoyer
Ecrire un commentaire...

INFORMATION

Vous devez être connecté à votre compte CIO pour poster un commentaire.

Cliquez ici pour vous connecter
Pas encore inscrit ? s'inscrire

    Publicité

    Abonnez-vous à la newsletter CIO

    Recevez notre newsletter tous les lundis et jeudis

    La question du moment
    Les vulnérabilités IT publiées par les éditeurs de logiciels sont-elles régulièrement patchées sur vos infrastructures en fonction de leur impact estimé ?