Le codage de l’IA passe du copilote au pilote automatique
Une nouvelle génération d’outils de codage basés sur l’IA a émergé et prétend être des versions plus autonomes des assistants précédents comme GitHub Copilot, Amazon CodeWhisperer et Tabnine.
L’un de ces nouveaux venus, Devin AI, a été surnommé ingénieur logiciel en IA par son créateur, le laboratoire d’IA appliquée Cognition. Selon Cognition, Devin peut effectuer toutes ces tâches sans aide : créer un site Web à partir de zéro et le déployer, rechercher et corriger les bogues dans les bases de code, et même entraîner et affiner son propre grand modèle de langage.
Suite à son lancement, des alternatives open source à Devin sont apparues, notamment Devika et OpenDevin. Entre-temps, les fabricants d’assistants confirmés ne sont pas restés les bras croisés. Des chercheurs de Microsoft, développeur de GitHub Copilots, ont récemment mis en ligne un article sur le serveur de préimpression arXiv présentant AutoDev, qui utilise des agents d’IA autonomes pour générer du code et des cas de test, exécuter des tests et vérifier les résultats, et corriger les bogues dans les cas de test.
C’est passionnant de voir davantage de versions d’assistants de codage d’IA dotés de nouvelles capacités, déclare Ben Dechrai, codeur et défenseur des développeurs chez la société de logiciels Sonar. Ils valident la nécessité d’outils d’IA générative dans les flux de travail des développeurs.
Dechrai ajoute que ces copilotes de codage peuvent aider les ingénieurs logiciels à écrire du code plus rapidement, leur permettant ainsi de se concentrer sur des tâches plus stratégiques et créatives. Un autre avantage de ces outils de programmation est la possibilité de créer un modèle de code, note Saurabh Bagchi, professeur de génie électrique et informatique à l’Université Purdue. Tout comme pour l’ingénierie rapide, les développeurs doivent fournir à ces assistants le type de logiciel requis pour produire un modèle, puis un ingénieur logiciel peut combler les lacunes, explique-t-il.
Pour développer des systèmes intuitifs, vous avez besoin d’un processus itératif avec des humains impliqués pour fournir des commentaires. Saurabh Bagchi, Université Purdue
Ces lacunes incluent des considérations de sécurité et de fiabilité. Les ingénieurs logiciels doivent rechercher les failles de sécurité dans le code généré par l’IA, ainsi que les types de cas extrêmes qui pourraient provoquer son crash.
Les développeurs doivent toujours s’assurer que des normes de qualité rigoureuses sont en place lors de l’analyse et de la révision du code écrit avec l’IA générative, tout comme ils le feraient avec du code développé par un humain, explique Dechrai. Les assistants de codage IA sont doués pour suggérer du code, réfléchir sur le code et raisonner sur son efficacité, mais même dans ce cas, ce n’est pas précis à 100 %.
Dechrai prévient que les codeurs autonomes sont encore si nouveaux que les développeurs apprennent simplement quels cas d’utilisation seront les plus bénéfiques. Et ils devront être mis au point dans le monde réel pour voir dans quelle mesure ils sont capables de tenir leur promesse, dit Bagchi.
Les codeurs d’IA contre les humains
Des prédictions pessimistes quant au remplacement des ingénieurs logiciels humains suivront également l’émergence de ces ingénieurs logiciels IA, mais cela ne se produira pas de si tôt. Devin, par exemple, n’a résolu que 14 % d’un sous-ensemble de problèmes GitHub provenant de référentiels de codes réels. Il y a encore un long chemin à parcourir pour que cela devienne quelque chose sur lequel je peux compter les yeux bandés, dit Bagchi.
Il note que ces outils de programmation autonomes ont un autre angle mort : le fait que le développement de logiciels se fait en collaboration. Les copilotes codeurs essaient de tout faire, et ils pourraient le faire raisonnablement bien. D’un autre côté, différents ingénieurs logiciels ont leurs propres spécialités, qu’il s’agisse du front-end, du back-end, de la pile complète ou des données, pour n’en nommer que quelques-uns, et ils travaillent tous ensemble pour créer un produit cohérent.
Pour développer des systèmes intuitifs, vous avez besoin d’un processus itératif avec des humains impliqués pour fournir des commentaires, explique Bagchi. L’intuition humaine fondamentale, la profondeur et l’imagination doivent être mises à profit.
C’est pourquoi Bagchi pense que ces versions non assistées ne domineront pas l’espace occupé par les assistants de codage, du moins pour le moment. Les modèles qui se trouvent en dessous ont une architecture similaire et, à mesure que la technologie continue d’évoluer, ils s’amélioreront tous les deux, dit-il. Mais le modèle Copilot ou CodeWhisperer semble le plus prometteur et mieux adapté au développement de logiciels complexes où les humains travaillent avec l’aide de l’IA.
Pourtant, les programmeurs devraient commencer à utiliser ces outils s’ils ne l’ont pas déjà fait, sinon ils risquent d’être laissés pour compte, explique Dechrai. Si vous voulez savoir si un assistant de codage IA est vraiment bénéfique, vous devez l’utiliser vous-même, apprendre à le connaître et voir où il échoue.
Bagchi fait écho à ce sentiment : essayez-les avec les cas d’utilisation que vous avez et soulignez-les avec les types de logiciels que vous créez. Mais comme les copilotes de codage non assistés sont une technologie naissante, ils sont susceptibles de s’améliorer rapidement. Il faut donc les suivre, ajoute-t-il.
De plus, les ingénieurs logiciels devront systématiquement garantir que le code est sécurisé, fiable et maintenable tout au long de son cycle de vie, explique Dechrai. Il appartiendra toujours au développeur de bien comprendre le résultat et comment il a été généré.