Le fait d’écrire un code qui fonctionne ne suffit plus à prouver que l’on a appris à programmer, selon Ardit Sulce, formateur Python dont les cours ont été suivis par plus de 650 000 étudiants sur Udemy. Alors que les outils d’intelligence artificielle sont capables de produire de grandes parties d’applications, l’essentiel se déplace de l’écriture de chaque ligne vers la compréhension de ce que produisent ces outils, sa vérification, la détection de ses erreurs et la compréhension de la manière dont les composants du système s’interconnectent.
Cette vision a été exposée dans une interview publiée par JetBrains Blog avec Sulce, qui possède 10 ans d’expérience dans l’enseignement de la programmation et est titulaire d’un master en technologies géospatiales de l’University of Münster, en Allemagne. Il est également fondateur et développeur principal de la plateforme ActiveSkill Dev, qui utilise l’intelligence artificielle comme tuteur personnel pour apprendre la programmation et le développement logiciel.
L’intelligence artificielle a davantage changé les questions qu’elle n’a supprimé le rôle de l’enseignant
Sulce affirme que le nombre de questions quotidiennes qu’il reçoit de ses étudiants a diminué de cinq à dix fois par rapport à la période précédant la généralisation de l’intelligence artificielle générative. Lorsqu’un étudiant rencontre un problème, il peut obtenir une réponse immédiate au lieu de publier une question sur la page de discussion et d’attendre l’enseignant ou l’assistant pédagogique.
Mais les questions qui subsistent, selon sa description, sont devenues plus importantes et reposent davantage sur le jugement : quelle voie faut-il suivre ? Le projet peut-il figurer dans le portfolio ? Et comment ce que l’étudiant apprend s’inscrit-il dans une vision plus large ? De ce point de vue, le rôle d’un cours ne se limite pas à répondre à une question précise ; il consiste à proposer un parcours structuré dans un domaine où le débutant ne connaît même pas ses questions fondamentales.
Les attentes des apprenants ont également changé. Un cours de Python qui ignore le lien entre le langage et l’intelligence artificielle leur paraît dépassé ; ils veulent apprendre à utiliser les outils pour accélérer l’écriture du code et créer des applications reposant sur des modèles de langage, des agents et l’automatisation. En revanche, l’enseignant reste important pour déterminer ce qu’il faut apprendre et dans quel ordre, ainsi que pour susciter la motivation et la curiosité, dont Sulce estime que les outils d’intelligence artificielle ont encore du mal à reproduire automatiquement.
Toutes les difficultés d’apprentissage ne se valent pas
Sulce distingue l’effort qui construit la compréhension de la friction qui fait perdre du temps. Chercher pourquoi une boucle s’exécute une fois de plus ou suivre le flux des données dans le programme peut faire partie de l’apprentissage. En revanche, les problèmes d’installation d’une définition défectueuse, une erreur de configuration obscure ou un cours ancien qui n’est plus compatible avec l’environnement actuel sont des obstacles qui peuvent être délégués à l’intelligence artificielle sans perte pédagogique évidente.
Selon cette règle, le débutant doit se demander : résoudre ce problème m’apportera-t-il une compréhension que je pourrai réutiliser plus tard, ou me ramènera-t-il simplement au point de départ ? Sulce insiste sur le fait que l’écriture manuelle du code reste importante pendant la phase d’apprentissage, car elle aide à construire un modèle mental des variables, des boucles et du flux des données. Dans le travail professionnel, en revanche, écrire tout le code manuellement peut devenir moins important que vérifier ce que produisent les outils.
Trois compétences pour les développeurs au début de leur parcours
- Lire du code qu’ils n’ont pas écrit : le développeur doit lire des dépôts GitHub, ses anciens projets et les productions des agents, puis déterminer si le code est correct et reste adapté lorsque les entrées changent.
- Exprimer précisément ce qui est demandé : Sulce estime qu’une bonne demande adressée au modèle est une spécification qui définit ce que le code doit faire et ne doit pas faire, ainsi que son comportement dans les cas limites. Cela se rapproche du concept d’exigences, qui relevait souvent de la responsabilité d’une autre partie.
- Comprendre le système à l’échelle globale : connaître des éléments isolés du code ne suffit pas ; le développeur doit comprendre les composants de l’application et la manière dont ils sont reliés, ce qui lui permet de superviser l’intelligence artificielle au lieu de devenir dépendant de ses productions.
Il en résulte une évolution de la manière d’évaluer les étudiants et les candidats à l’emploi. Au lieu de se contenter de demander de créer une application, Sulce propose de fournir du code généré par l’intelligence artificielle contenant un problème précis, comme une erreur dans les limites d’une boucle, l’absorption silencieuse des exceptions ou un comportement incorrect en présence d’une entrée vide, puis de tester la capacité de la personne à détecter et à expliquer le problème. Il est également possible d’organiser une session de débogage en direct afin d’observer la manière dont elle circonscrit la panne.
Un parcours progressif, du code à la supervision
Sulce divise l’apprentissage en trois étapes : écrire manuellement de petits programmes réels dans un environnement de développement intégré, puis utiliser l’intelligence artificielle comme enseignant pour expliquer ce que l’apprenant ne comprend pas lorsqu’il passe à des projets plus importants, et enfin l’utiliser comme collègue de travail qui écrit des parties du code pendant que l’apprenant les vérifie.
Cette progression suppose une augmentation graduelle de la taille des projets : d’un script à une application utilisant une base de données, puis à un projet qui gère des utilisateurs, à un service déployé et à une application qui se connecte à une interface de programmation d’application. En pratique, ce parcours relie la connaissance de la syntaxe à la compréhension des systèmes, au lieu de supposer que la compréhension architecturale apparaîtra automatiquement après des années d’écriture de code.
L’interview confirme que l’apprentissage dans un environnement de développement professionnel n’est pas un détail formel. Les projets qui reposent sur l’intelligence artificielle comprennent des clés API dans des fichiers d’environnement, des environnements virtuels, des conflits de dépendances, des différences entre les versions des paquets et des fichiers créés ou modifiés par les agents. Par conséquent, la capacité à exécuter le projet, à vérifier les changements, à corriger les pannes et à modifier le code en toute sécurité détermine si l’apprenant supervise réellement l’outil ou se contente d’accepter ce qu’il produit.