Retour d’expérience après quelques semaines d’utilisation quotidienne des deux assistants de programmation basés sur l’IA GPT 3.5 : GitHub Copilot et Copilot Chat.
Tout d’abord, il convient de différencier le premier, outil de complétion de code contextuel, du second, assistant interactif.
Copilot trouve sa force dans l’analyse et la génération de code, permettant ainsi au développeur de piocher dans un ensemble de complétions. Les suggestions sont élaborées, d’une part, à partir des onglets ouverts dans l’IDE, et d’autre part, à partir des projets publics mis à disposition par GitHub.
Nous avons ainsi pu tester son utilisation dans le cadre d’une application Laravel 9 interfacée avec un serveur MongoDB, ainsi que lors de la création d’une application mobile React native. Du PHP au javascript, en passant par la génération de requêtes Mongo, Copilot apporte sans conteste une plus-value.
⏰ Une économie de temps
Bien que moyennement, seul un quart des propositions soient retenues, GitHub Copilot permet indéniablement d’économiser du temps lors de la création de classes ou de méthodes (boilerplate), et ce, quel que soit le langage.
En complément, Copilot Chat s’est avéré être un compagnon appréciable lors de la recherche de bugs, de l’optimisation de code, ou du portage de code d’un langage vers un autre. En effet, ce dernier nous a permis de porter des fragments de SDK écrits en Kotlin vers Swift, sans connaissance préalable dudit langage. De même, il nous a permis d’identifier très rapidement des dysfonctionnements au sein de fonctions PHP, d’optimiser certaines portions de code parfois trop verbeux, ou encore de migrer du code PHP d’une version vers une autre.
Si le gain semble réel, cet outil a toutefois ses limites. En effet, il ne saurait remplacer la réflexion humaine et nécessite pour en faire bon usage, a minima, une connaissance suffisante du langage et de son écosystème. De surcroit, un mauvais prompt peut induire une perte de temps et d’argent.
🚦 Des inconvénients
Bien que l’on parle « d’intelligence artificielle », on aurait tort de croire que celle-ci raisonne comme un humain. Si elle a la capacité d’interpréter un contexte, elle n’a jusqu’ici pas la capacité de conceptualiser. Ainsi, le code produit est à la hauteur du développeur, avec son style rédactionnel, ses nomenclatures, ses choix de nommage de variables… De surcroit, étant intégré sous forme de plugin, Copilot analyse continuellement le contexte, ce qui accroît la consommation des ressources machines, déjà conséquentes (IDE, docker, etc.).
🔒 Confidentialité et sécurité
De manière plus générale, l’utilisation de tels outils pose plusieurs problèmes. Le recours aux dépôts GitHub peut être source de failles de sécurité, tant dans l’exposition de notre code que dans l’usage de portions de code externes. Quid également du respect des copyrights ? D’autre part, l’IA peut être source de bugs « non-humains », difficiles à identifier par la suite.
🌐 Limites et considérations
Bien que nous constations de jour en jour des progrès fulgurants dans les domaines de la robotique et de l’IA, ces outils n’en sont encore qu’à leurs balbutiements et ne sauraient être autre chose, à ce stade, qu’une aide pour les développeurs.
GitHub Copilot et Copilot chat offrent des fonctionnalités prometteuses pour accélérer le processus de développement, économiser du temps et résoudre certains problèmes algorithmiquement simples. Cependant, il est crucial de reconnaître leurs limites actuelles et de maintenir un équilibre entre l’utilisation de ces outils et le développement de compétences humaines fondamentales.
En réduisant globalement la pensée critique et la créativité de leurs utilisateurs, ces outils ne risquent-ils pas d’induire une dépendance excessive, au détriment de la compréhension des concepts fondamentaux ?
En fin de compte, ces technologies devraient être considérées comme des compléments au savoir-faire des développeurs plutôt que comme des substituts, et leur utilisation devrait être accompagnée d’une réflexion continue sur les implications éthiques, sécuritaires et cognitives qu’elles soulèvent.