Cette semaine, c’est Kévin Ganthy, ingénieur pédagogique de l’école O’clock qui prend la plume pour nous parler de la relation entre l’IA et les développeurs : alors coder avec l’IA, ou pas ?
Plutôt que de relater sans cesse les mêmes débats sur l’intelligence artificielle et le métier de développeur, je vais apporter mon expérience.
Je n’en utilise que deux principalement. En première position, loin devant, GitHub Copilot qui porte bien son nom. C’est un vrai copilote lors du développement, surtout lorsque je code dans des langages inconnus. Ensuite, il y a ChatGPT, l’incontournable. Lister ces fonctionnalités ici rendrait l’article obsolète dans deux semaines 🤷♂️. Ils m’aident dans la recherche et la synthétisation d’informations sur de nouveaux sujets complexes. Voyons comment coder avec l’IA plus en détail.
Toute petite histoire de l’IA pour les développeurs
Faisons rapidement le point sur les IA à ce jour. Cette assistance pleine de promesses pour le développeur a du potentiel. Elle nous assure un gain de temps et une réduction de la complexité sur beaucoup de sujets. C’est un atout majeur dans les domaines très cartésiens et normés comme le développement web, applications et logiciels.
Une Intelligence Artificielle est la somme d’un énorme jeu de données, d’une analyse de motifs (pattern) et de statistiques. Je ne vais pas vous expliquer les réseaux neuronaux, car j’en suis incapable. Du peu que j’ai compris, GitHub Copilot s’appuie sur des millions de lignes de codes open source, écrites par des gens talentueux. À défaut d’avoir leur skills (NDLR : compétences), j’insère une partie de leur savoir dans mon propre code.
Cette insertion partielle de code fonctionnel ne peut (mal)heureusement pas concevoir une application comme je l’entends, ou du moins comme je l’imagine. C’est pourquoi la position d’O’clock n’est pas si tranchée sur l’IA. Des compétences solides dans le développement sont requises pour ne pas prendre de mauvaises directions. Cela implique un apprentissage et une mise en pratique par l’humain, aka vous ! A contrario, si l’IA souhaite compléter mon code ligne par ligne plutôt que de tout taper, là c’est valable.
GitHub Copilot : un pair-programmer de choix
Comme je le disais en introduction, GitHub Copilot est un outil d’intelligence artificielle conçu pour assister les développeurs. Il va proposer des suggestions de code et des complétions automatiques en temps réel, facilitant ainsi le processus de programmation.
GitHub Copilot me rend des services immenses au quotidien pour un tarif ridicule. Il est d’ailleurs gratuit pour les étudiants et formateurs, ça tombe bien !
Prenons un exemple simple et réel, je suis obligé de coder en Ruby pour un projet. Je n’en ai jamais fait et la deadline ne me permet pas de passer deux semaines à creuser ce langage étonnant.
Spoiler, je n’ai tapé aucune ligne de code, tout au plus les premiers caractères. Ici, je dois parcourir une liste de fichiers pour lire le contenu. Mon expérience de développeur me permet de structurer ma pensée et mon code. Je sais donc qu’il faut :
- Factoriser ces instructions dans une fonction
- Récupérer la liste des fichiers qui correspondent à une expression régulière
- Parcourir chaque fichier
- Extraire le contenu du fichier.
GitHub Copilot me suggère le code ligne après ligne. Il comprend ce que je veux faire en analysant le fichier en cours. Point non négligeable, on voit que mon code est très commenté, ce qui ne serait jamais arrivé dans mon langage favori 😎.
Finalement, j’ai pu réaliser tout mon script, long de 193 lignes exactement. Je sais précisément ce qu’il fait et où il le fait. En revanche, je suis encore incapable de rédiger du Ruby en mode avion.
Pour réaliser un projet en un temps record, l’IA ne fait pas tout. Une bonne formation donnera un bagage au développeur qui aura ensuite les clés pour coder avec l’IA et l’utiliser à son plein potentiel et relever n’importe quel défi.
Coder avec l’IA : analyse globale du code
GitHub Copilot donne accès à un agent conversationnel directement dans l’IDE. Il a les mêmes capacités que ChatGPT, en étant restreint au développement. En bonus, il a tout le code de mon application en visuel.
On peut par exemple lui demander son avis sur la qualité du code que l’on vient de produire.
Il se place en maître Jedi, distillant un apprentissage strict et froid, mais vraiment satisfaisant. On pourra push son code et ne pas craindre les reviews des collègues 😄.
Plus largement, il est capable d’analyser tout le workspace pour sortir une analyse détaillée.
C’est assez bluffant !
ChatGPT : fini les questions bêtes !
On ne le présente plus mais je vais en dire un mot quand même. ChatGPT est un modèle de langage basé qui permet de générer des réponses textuelles, de mener des conversations naturelles et d’assister les utilisateurs dans une variété de tâches en langage naturel.
Dans le contexte professionnel, mon utilisation de ChatGPT se résume à deux choses :
-
- Éclaircir des sujets complexes sur lesquels j’ai très peu de connaissances. Il me fera une synthèse rapidement et me permettra d’avoir une vue d’ensemble de mon problème. Je pourrai ensuite approfondir avec lui ou avec les documentations officielles. Je pourrai alors avancer étape par étape avec un fil conducteur clair.
-
- Lui demander ce que GitHub Copilot n’arrive pas à résoudre. C’est finalement assez rare, mais quand même. ChatGPT à une plus grande vision d’ensemble et peut donner des pistes pertinentes.
Donc non, je n’utilise pas ChatGPT pour coder l’intégralité de mon front à partir d’un wireframe. Seul Sam Altman y arrive dans ses démonstrations 🤔.
Je vois cet outil comme une pote très curieux et qui saura répondre à mes questions les plus bêtes, sans me juger. Et oui, au bout de quinze ans de développement, j’ai encore des questions que je n’oserais pas poser à voix haute dans l’open space.
Par exemple, je ne comprends rien à AWS et leur documentation est horrible :
C’est quand même bien pratique !
Alors, IA vs. développeurs, qui gagne ?
De mon point de vue, l’intelligence artificielle augmente les capacités de n’importe quel développeur. Elle permet même à des personnes de le devenir dans une certaine mesure. Donc, on ne peut pas se poser la question de cette façon. “Trump vs. Harris ?” oui, “IA vs. développeurs ?” non 😎
Finalement, je ne pourrais plus me passer de cet environnement de développement. C’est comparable à l’arrivée de VsCode après Notepad++. Coder avec l’IA demande moins d’effort, la vitesse de développement est grisante et je m’améliore exponentiellement. Avec l’assistance de l’IA, j’ai de plus en plus envie de coder et la seule question qui me reste est : “quelles sont mes limites ?”