Tous les articles

Faut-il encore apprendre à coder quand l'IA sait le faire ?

Écouter l'article (expérimental) · 08:13

00:00 / 08:13

Un champ dense de lignes de code qui s'estompe dans l'obscurité, sous une constellation clairsemée de nœuds de jugement qui reste allumée

Deux questions que les développeurs ne cessent de poser sont, au fond, la même question. La première demande si c'est du temps perdu que de passer des années à apprendre à coder, alors que l'IA aura remplacé les programmeurs d'ici dix ans. La seconde vient d'un étudiant qui apprend le front-end tout seul sur YouTube, retape de mémoire le code de chaque tutoriel, et se demande sans le dire s'il construit une vraie compréhension ou s'il ne fait que mémoriser des schémas. La première, c'est la peur macro : le métier est-il en train de disparaître. La seconde, c'est la peur intime : suis-je seulement en train d'apprendre quelque chose. C'est le même doute vu par les deux bouts. Est-ce que ça vaut la peine d'acquérir la compétence à la main, quand la machine peut produire le résultat ?

La réponse est oui. Mais la raison n'est pas celle, rassurante, que les optimistes invoquent d'habitude.

Un réconfort bien mince

La réponse habituelle, c'est que cette prophétie est vieille. Le remplacement des programmeurs est annoncé par cycles depuis Herbert Simon, en 1960, et à chaque fois les années passent et il y a plus de développeurs qu'avant, pas moins. L'IA hallucine. C'est un assistant imparfait, pas un remplaçant. Tout cela est vrai, et tout cela est un peu trop confortable.

La version la plus tranchante du contre-argument ne prétend pas que l'IA code bien. Elle soutient que la question de savoir si l'IA code bien est hors sujet. La traduction professionnelle a été « complètement vidée de sa substance » par la traduction automatique, et les traducteurs s'étaient donné exactement les mêmes assurances que les programmeurs aujourd'hui. Ce qui a scellé leur sort, ce n'était pas la qualité. C'était que les clients se sont finalement contentés de moins cher, plus rapide, moins bon. Reformulez tout le débat sous cet angle et il cesse d'être « l'IA sait-elle coder ? » pour devenir « à quel point doit-elle être bonne avant que quelqu'un cesse de vous payer ? »

Je ne vais pas esquiver cet argument, parce qu'il a un vrai tranchant, et ce tranchant frappe un groupe bien précis. Quand un développeur expérimenté épaulé par l'IA absorbe le travail de plusieurs juniors, les pertes apparaissent d'abord tout en bas, au niveau débutant. On retire le barreau du bas de l'échelle. Et aucun des deux camps, optimiste ou pessimiste, n'a de vraie réponse à la question de savoir comment on fait grandir la prochaine génération de seniors une fois que les postes de juniors qui les ont formés ont disparu. Si quelqu'un vous dit que coder est parfaitement à l'abri, il vous vend du réconfort.

Pourquoi l'argument pour l'apprentissage s'est renforcé

Et pourtant, les raisons d'apprendre à coder ne se sont pas affaiblies. Elles se sont inversées.

La chose la plus incisive que j'aie entendu quelqu'un dire à ce sujet tient en une phrase sur ce que fait réellement une IA quand on lui demande d'expliquer du code : elle va m'expliquer ce que fait le code, ce que je sais déjà, puisque je vois le code sous mes yeux. Le savoir pour lequel on paie un développeur n'est pas dans le code. L'intention, la raison pour laquelle une décision a été prise, la contrainte qui n'est écrite nulle part, l'histoire qui explique pourquoi c'est ainsi et pas de la manière évidente, rien de tout cela ne se lit dans le code source. Donc une machine qui lit ce même code source ne peut pas le produire non plus.

Voilà où passe la vraie ligne de partage. L'IA est très douée pour la couche du « quoi » : la syntaxe, le code standard, la tuyauterie, la reformulation de ce que le code fait de façon évidente. Elle ne touche pas à la couche du « pourquoi » : décider quoi construire, encoder l'intention, raisonner sur le fait que la chose est réellement correcte, tenir en tête le contexte qui ne figure dans le fichier de personne. La production mécanique de la syntaxe est en train d'être automatisée, et voici ce que l'étudiant inquiet a pris à l'envers : ça n'a jamais été ni la partie difficile, ni la partie qui a de la valeur.

Ce qui veut dire que la causalité fonctionne dans l'autre sens. « Pourquoi apprendre ce que l'IA automatise ? » Parce que le fait que l'IA l'automatise est précisément ce qui rend l'autre chose rare. Quand tout le monde peut générer le résultat et que presque personne ne sait dire si ce résultat est juste, savoir dire si le résultat est juste devient tout le métier. Et ce jugement-là ne s'achète pas, aucun prompt ne vous y mène. Vous le gagnez en apprenant les fondamentaux à la dure, ces mêmes fondamentaux que la machine vous tend désormais gratuitement.

La version débutant a une réponse plus tranchante

Cela recadre aussi la question, plus modeste, de l'étudiant. Le verdict quasi unanime, chaque fois que la question se pose parmi ceux qui enseignent, est que les débutants en particulier ne devraient pas s'appuyer sur l'IA, et la raison n'est pas la nostalgie. C'est qu'un novice est incapable de distinguer un résultat correct d'un résultat faux énoncé avec aplomb, et faire cette distinction, c'est toute la compétence qu'il est là pour acquérir. L'affirmation assurée selon laquelle, à l'ère de l'IA, apprendre à programmer est devenu extrêmement facile, que plus rien ne reste incompris, s'effondre au premier contact, parce que tous ceux qui ont réellement appris quelque chose savent que « plus rien qui reste incompris » est exactement la sensation qu'on éprouve quand on n'a rien compris du tout.

La formule que l'on ressort, c'est qu'on n'apprend pas en tapant, on apprend en résolvant des problèmes. C'est juste, mais ça sous-estime ce que l'étudiant faisait déjà. Retaper du code de mémoire force le rappel au lieu de la simple reconnaissance, et c'est dans le rappel que la mémoire se forme vraiment ; c'est une vraie technique, pas du gâchis. La solution n'est pas d'arrêter. C'est de passer au niveau supérieur : prendre la technique, pas le projet, et la reconstruire quelque part où le tutoriel n'est jamais allé. Une todo list devient une boîte à recettes. Puis on bloque, on lit la documentation, et on se débloque. Le fait de bloquer n'est pas le bug de l'apprentissage du code. C'est le mécanisme même, et c'est exactement l'étape qu'une machine fera volontiers à votre place si vous la laissez faire. Voilà le piège.

Ce que j'ai en jeu dans votre réponse

J'ai quelque chose en jeu dans votre décision, et autant le dire clairement. Je construis des outils qui génèrent du code. L'un d'eux transforme une phrase en plan et ouvre ses propres pull requests. Chacune de ces pull requests ne vaut rien sans un humain qui comprend le code assez bien pour le lire et dire non. Les machines que je construis sont exactement aussi sûres que le jugement de la personne qui relit ce qu'elles produisent, pas davantage.

Alors quand je dis à un étudiant d'apprendre les fondamentaux par la voie lente, je ne fais pas de sentimentalisme sur un métier d'artisan. Je décris le seul travail que les outils ne peuvent pas accomplir tout seuls, et le seul qui prend de la valeur chaque fois qu'ils s'améliorent.

Le code ne devient pas obsolète. La partie qu'une machine peut taper, elle, le devient, et cette partie n'a jamais été ce pour quoi on vous payait. Ce qui reste, c'est la partie que l'on n'atteint qu'en se débattant à travers celle qui est en train d'être automatisée : savoir quoi construire, et savoir reconnaître quand la machine s'est trompée. Apprenez à coder. Non pas malgré l'IA. À cause d'elle.

Les questions auxquelles cet article répond

  • Est-ce que ça vaut encore le coup d'apprendre à coder si l'IA écrit le code à ma place ?

    Oui, et la raison s'est inversée plutôt qu'affaiblie. L'IA est très douée pour la couche du quoi, la syntaxe, le code standard, la tuyauterie, la reformulation de ce que le code fait de façon évidente, et elle ne touche pas à la couche du pourquoi : décider quoi construire, encoder l'intention, raisonner sur le fait que la chose est réellement correcte. Quand tout le monde peut générer le résultat et que presque personne ne sait dire s'il est juste, savoir le dire devient tout le métier, et ce jugement ne s'achète pas, aucun prompt ne vous y mène.

  • La traduction automatique a vidé le métier de traducteur. Pourquoi la programmation y échapperait-elle ?

    L'objection a un vrai tranchant et il ne faut pas l'esquiver. Ce qui a scellé le sort des traducteurs n'était pas la qualité, c'était que les clients se sont finalement contentés de moins cher, plus rapide, moins bon, et la même pression frappe d'abord le niveau débutant dans le logiciel, où un développeur expérimenté épaulé par l'IA absorbe le travail de plusieurs juniors. Ce qu'elle n'atteint pas, c'est la part du travail qui n'a jamais figuré dans le code source : l'intention, la contrainte qui n'est écrite nulle part, la raison pour laquelle une décision a été prise ainsi et pas de la manière évidente. Si quelqu'un vous dit que coder est parfaitement à l'abri, il vous vend du réconfort.

  • Un débutant doit-il utiliser l'IA pour apprendre à programmer ?

    Non, pas pour les fondamentaux, et la raison n'est pas la nostalgie. Un novice est incapable de distinguer un résultat correct d'un résultat faux énoncé avec aplomb, et faire cette distinction, c'est toute la compétence qu'il est là pour acquérir. L'affirmation selon laquelle, à l'ère de l'IA, apprendre à programmer est devenu extrêmement facile et que plus rien ne reste incompris s'effondre au premier contact, parce que c'est exactement la sensation qu'on éprouve quand on n'a rien compris du tout.

  • Retaper de mémoire le code des tutoriels, est-ce du temps perdu ?

    Non. Retaper de mémoire force le rappel au lieu de la simple reconnaissance, et c'est dans le rappel que la mémoire se forme vraiment, donc c'est une vraie technique et pas du gâchis. Ce qui manque, c'est le passage au niveau supérieur : prendre la technique, pas le projet, et la reconstruire quelque part où le tutoriel n'est jamais allé, pour qu'une todo list devienne une boîte à recettes. Ensuite on bloque, on lit la documentation, on se débloque, et c'est exactement l'étape qu'une machine fera volontiers à votre place si vous la laissez faire.