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.