06 novembre 2024
L'IA comme sparing partner
Le développeur va-t-il devenir une espèce en voie de disparition? Sera-t-il bientôt remplacé par une intelligence artificielle qui le rendra complètement dépassé et obsolète ? Plus besoin de coder, de déboguer ou de jongler avec des frameworks obscurs – il suffirait de dire à l'IA : "Crée-moi une application qui fait ça", et nous verrions sous nos yeux ébahis la machine s'exécuter en quelques secondes.
Est-ce que ça arrivera un jour ? Peut être ! Bientôt ? Probablement pas.
Certes, les outils d'intelligence artificielle transforment le métier de développeur. Pourtant, leur efficacité dépend principalement de leur utilisation, judicieuse ou non, et qui reste complémentaire aux compétences de programmation.
Si l’IA peut générer des lignes de code, c'est encore au développeur de définir l'architecture et de trouver des solutions à des problèmes qu'une machine ne peut anticiper.
En effet, un développeur, c’est avant tout un résolveur de problèmes : une personne qui transforme des instructions humaines en instructions compréhensibles et exécutables par les machines. Or maintenant, un modèle de langage de grande envergure, ou LLM (Large Language Model) comme ChatGPT, peut parfaitement traduire des instructions textuelles en code. Mais le rôle d’un développeur va bien au-delà de cette simple transposition technique. C’est lui qui déchiffre les besoins réels, anticipe les attentes, et conçoit des solutions intelligentes et adaptées à un contexte spécifique.
La machine ne va pas remplacer l’Homme, mais plutôt l’épauler dans ses tâches quotidiennes, dans le seul but d'aller plus loin et plus vite. Dans le cadre du développement informatique, on peut voir l’IA comme un partenaire de pair programming virtuel. C’est en tout cas comme ça que se définit l’outil leader du marché aujourd’hui: GitHub Copilot.
Qu'est-ce que GitHub Copilot ?
GitHub Copilot est un plug-in, c'est-à-dire un module complémentaire que l'on ajoute à un logiciel pour étendre ses fonctionnalités. Dans ce cas, on l'intègre à un IDE (integrated development environment ou "environnement de développement intégré" en français), un éditeur de texte spécialisé pour la programmation.
L'outil a été construit en collaboration entre GitHub et OpenAI, en utilisant une version avancée d’un LLM. Le modèle a été formé en analysant d’énormes quantités de code public disponible sur GitHub. Rien que pour Python, il a pu s’entraîner sur 150 giga octets de code disponibles dans environ 50 millions de repository. Ainsi, Copilot a "appris" à coder en regardant comment des millions de développeurs l'ont fait avant lui et est désormais capable de reconnaître des structures de code, des bibliothèques, et des patterns de programmation communs.
Depuis son lancement en version bêta en juin 2021, GitHub Copilot a rapidement attiré l'attention de la communauté de développeurs. Dès 2022, il est sorti en version stable, disponible par abonnement, et s'est intégré dans divers IDE. Au fur et à mesure que Copilot gagnait en popularité, des millions de développeurs ont adopté cet assistant virtuel. Début 2024, GitHub a annoncé que Copilot aidait déjà plus de 1,3 million de développeurs à travers le monde, et ce nombre continue de croître à mesure que l'outil devient de plus en plus performant et intégré dans les environnements de développement professionnels.
Avantages et inconvénients
Ce type d’assistant virtuel promet un gain de productivité important, à raison ! Il est donc essentiel d'examiner attentivement ses avantages et ses limites. En effet, chaque innovation arrive avec son lot de changements et de bouleversements. L’essor de l’IA dans le développement peut faire écho à l’introduction de la calculatrice en mathématiques. Certes, notre dépendance à la calculatrice a réduit nos capacités en calcul mental, mais a-t-on encore besoin de faire ces calculs manuellement, surtout quand la précision et la rapidité priment ? Qu’en est-il ici ?
Les avantages
Auto-complétion intelligente
Les suggestions automatiques permettent un gain de temps considérable. En proposant des fragments de code précis et adaptés au contexte, elles aident à maintenir le flux de travail sans interrompre l’attention du développeur. Attention : une auto-complétion excessive peut également être le symptôme d’un cas de duplication de code, nécessitant par la suite un refactoring pour optimiser et maintenir une base de code propre.
Création d'algorithmes et syntaxe automatisée
Pour cela on donne des instructions claires, par exemple :
En Rust, génère-moi une méthode de tri à bulles pour une liste d’objets 'Voiture' par date de construction
Copilot pourra rapidement nous fournir des solutions adaptées, qui constitueront une première version sur laquelle on pourra affiner le travail.
Apprentissage facilité et assistance au débogage
Pour les développeurs qui doivent apprendre de nouveaux langages, l’IA est une aide précieuse, fournissant des exemples concrets, facilitant la correction d’erreurs, et suggérant des bonnes pratiques du langage en question.
Auto-formation et pair programming virtuel
En mode pair programming, l’IA peut proposer des refactos de code en expliquant les changements apportés. Cela permet non seulement d’apprendre des techniques de code plus efficaces, mais aussi de découvrir des annotations et des mots-clés utiles pour simplifier le code. Cette approche stimule l’évolution des compétences, comme le ferait un collègue humain expérimenté.
Bien sûr, nous pouvons aussi comprendre que cela peut entraîner quelques désagréments.
Les inconvénients
Un risque de dépendance à l’outil
En utilisant l’IA au moindre problème (qui elle consulte des milliers d’autres documents pour répondre), on perd l’habitude de faire des recherches google et d’utiliser la consultation de documentation, une démarche pourtant fondamentale et souvent salvatrice qui distingue les développeurs expérimentés des plus juniors. Une trop grande dépendance à l’IA risque de limiter les développeurs lorsqu'ils doivent faire sans, leur capacité à coder sans assistance et à résoudre des problèmes étant moins travaillées.
Perte de connaissances algorithmiques
C’est un domaine souvent complexe et mal-aimé par les jeunes développeurs. Maintenant que l’IA réalise parfaitement cette tâche pour eux, (et pour les moins jeunes !), on imagine bien qu’encore moins de monde risque de s’y intéresser.
Risque accru de faille de sécurité
Les suggestions automatiques de code peuvent inclure des vulnérabilités potentielles ou des pratiques non sécurisées, ce qui exige non seulement une vigilance accrue de la part du développeur mais aussi qu’il ne se contente pas de copier-coller le code fourni.
Divulgation de données confidentielles
Là aussi, une mauvaise utilisation de l’outil peut avoir des conséquences. Quand on donne des informations en entrée à l’IA, il faut s’assurer de ne pas transmettre des données confidentielles. La prudence est de mise.
En pratique, ça donne quoi ?
Finissons avec un exemple concret: admettons qu’on doive écrire une fonction et la tester avec des tests unitaires.
Une mauvaise utilisation de l’intelligence artificielle serait de lui demander de générer directement des tests unitaires après avoir écrit la fonction. En effet, on obtient des tests qui ne valident uniquement que le comportement de la fonction écrite, sans même vérifier si elle répond vraiment aux exigences fonctionnelles. Le risque est d’avoir des tests qui, au lieu de garantir le bon fonctionnement du code, se contentent de reproduire et valider d’éventuelles erreurs de conception ou d’implémentation.
Une meilleure approche consistera à définir dans un premier temps les cas d’usage en s’aidant éventuellement de l’IA. On lui indique les cas courants et les exceptions que la fonction doit gérer, et l’IA propose des tests unitaires basés sur ces fonctionnalités. Ensuite, on développe la fonction en tenant compte de ces tests initiaux, quitte à utiliser l’assistance de l’IA pour le code de la fonction elle-même.
En conclusion
L'intégration d’outils d’assistance comme GitHub Copilot dans le travail des développeurs ne rend pas les gens plus ou moins intelligents: elle redéfinit simplement les compétences en jeu.
À mesure que l’automatisation et l’intelligence artificielle évoluent, les compétences qui faisaient autrefois la différence sont appelées à changer. Comme souvent, les développeurs qui feront le plus preuve d'adaptabilité vont se démarquer.
Vous êtes prêt à exploiter la puissance de l'IA pour booster la productivité de vos équipes ? Contactez-nous pour en savoir plus !
Sources :
Copilot by the Numbers: Microsoft's Big AI Bet Paying Off -- Visual Studio Magazine
Image de couverture : © Franz Harvin Aceituna sur Unsplash