L’IA est en train de rendre les développeurs juniors inutiles
(beabetterdev.com)- Les outils d’IA ne créent chez les développeurs juniors qu’une compétence superficielle : ils produisent rapidement du code, mais il devient fréquent d’être incapable d’expliquer pourquoi cette approche a été choisie
- La vraie valeur des développeurs seniors ne réside pas dans la vitesse d’écriture du code, mais dans la reconnaissance des schémas d’échec accumulée au fil des années et des erreurs
- Même en utilisant l’IA, le processus de lutte volontaire consistant à analyser soi-même les erreurs, suivre le code et formuler des hypothèses reste indispensable
- Pour chaque ligne de code que l’on commit, il faut pouvoir expliquer soi-même pourquoi telle bibliothèque, tel pattern et quels sont les trade-offs ; sinon, ce n’est pas prêt pour la mise en production
- Il faut cesser d’utiliser l’IA comme simple générateur de réponses et l’employer comme tuteur, afin d’apprendre les avantages et inconvénients de plusieurs approches
La racine du problème : la compétence superficielle créée par l’IA
- L’usage des LLM a rendu possible l’implémentation et le déploiement rapides de fonctionnalités, mais on se retrouve parfois incapable d’expliquer pourquoi un certain code a été choisi
- Lors des code reviews, le phénomène de compétence superficielle (shallow competence) se répand : certains ne savent pas répondre quand on leur demande pourquoi ils ont choisi une approche
- Le schéma consistant à accepter tel quel le code proposé par l’IA se répète
- En apparence, la productivité semble élevée, mais la compréhension de l’intention de conception et des trade-offs reste insuffisante
- Avec le temps, ce problème pourrait conduire à une perte de confiance
Pourquoi les développeurs seniors ont de la valeur
- Si les développeurs expérimentés coûtent cher, ce n’est pas parce qu’ils écrivent du code rapidement, mais parce qu’ils ont appris au fil du temps ce qu’il ne faut pas faire
- Ce que les entreprises paient réellement, c’est cette reconnaissance des schémas d’échec née d’expériences comme prendre de mauvaises décisions d’architecture et vivre avec leurs conséquences, ou être réveillé à 2 heures du matin pour un incident en production
- Aujourd’hui, de nombreux développeurs juniors sautent précisément cette étape en s’appuyant sur l’IA
5 stratégies
-
1. Apprendre correctement les fondamentaux
- Il faut savoir ce qu’est un bon code pour pouvoir évaluer ce que produit l’IA ; sinon, on finit par accepter ses sorties aveuglément
- Livres recommandés : Head First Design Patterns (comprendre les patterns de code et les raisons de les choisir) et Designing Data-Intensive Applications (les principes de conception des systèmes orientés données)
-
2. Étudier des cas d’incident
- Il est recommandé de lire les documents de post-mortem détaillés publiés lors d’incidents majeurs par Cloudflare, AWS, Azure, Google et d’autres grands services
- On y trouve la cause, l’analyse de la cause racine, la méthode de correction et les mesures de prévention de récidive
- Chez Amazon, on parle de COE (Correction of Errors), et la plupart des grandes entreprises tech, comme Facebook, ont aussi des documents internes comparables
- Comprendre comment un système complexe s’est effondré marque bien plus durablement que la simple lecture de documentation
- Il est recommandé de lire les documents de post-mortem détaillés publiés lors d’incidents majeurs par Cloudflare, AWS, Azure, Google et d’autres grands services
-
3. Provoquer volontairement la difficulté
- Avant l’IA, résoudre soi-même les problèmes n’était pas une option mais la norme ; désormais, il existe une échappatoire disponible 24 h/24
- Avant de coller une erreur dans l’IA, il faut d’abord lire la stack trace, suivre le code, vérifier les logs et formuler une hypothèse sur ce qui ne va pas
- C’est ainsi que se construit un véritable instinct de débogage
- On peut faire appel à l’IA ensuite
- Participer à l’astreinte et prendre les tickets que personne ne veut traiter est la manière la plus efficace d’apprendre comment fonctionnent réellement les systèmes
-
4. Ne jamais mettre en production du code que l’on ne comprend pas
- Si, en code review, on vous demande pourquoi vous avez choisi une certaine approche et que vous répondez « l’IA l’a suggérée », vous perdez immédiatement toute crédibilité
- Le problème n’est pas d’avoir utilisé l’IA, mais de ne pas avoir fait l’effort de comprendre le code que l’on soumet
- Pour chaque ligne que l’on commit, il faut pouvoir expliquer pourquoi cette bibliothèque, pourquoi ce pattern, et quels sont les trade-offs
- Même si cela ralentit, la compréhension doit passer avant tout ; se forger une réputation de simple copieur-colleur est très difficile à rattraper
- Si, en code review, on vous demande pourquoi vous avez choisi une certaine approche et que vous répondez « l’IA l’a suggérée », vous perdez immédiatement toute crédibilité
-
5. Prompter le « pourquoi » plutôt que la réponse
- Au lieu de demander uniquement une solution à l’IA, il faut lui demander plusieurs approches et l’explication de leurs avantages et inconvénients respectifs
- Cela produit deux effets :
- on apprend réellement les trade-offs
- comme l’IA déroule son raisonnement, sa recommandation elle-même peut changer, ce qui permet parfois d’obtenir une meilleure réponse
Un conseil réaliste face à la pression de la vitesse : équilibrer productivité et apprentissage
- La crainte de se faire distancer en ralentissant est réaliste, mais il n’est pas nécessaire d’arrêter complètement de produire
- Il faut pratiquer cet apprentissage volontaire et inconfortable pendant les temps calmes, les side projects ou les tickets moins exposés à la compétition
- Il faut distinguer consciemment le temps passé à construire de vraies compétences et le temps passé à simplement produire des sorties
Utiliser l’IA comme tuteur
- Nous disposons aujourd’hui d’un tuteur IA capable d’expliquer n’importe quoi au niveau de profondeur souhaité, ce que les générations précédentes de développeurs n’avaient pas
- Il ne faut pas seulement faire exécuter du travail à l’IA, mais l’utiliser de façon à demander des explications et la faire enseigner
- La valeur d’un développeur ne réside pas dans sa capacité à produire du code, mais dans sa capacité à regarder n’importe quel code et à juger s’il est bon ou non
- Que le code ait été généré ou non par l’IA, la compétence essentielle est la capacité à distinguer le bon du mauvais
- Seuls l’apprentissage délibéré et l’accumulation d’expériences d’échec peuvent forger une compétitivité durable à long terme
20 commentaires
S'il avait au moins lu le texte produit par l'IA, on n'en serait pas là.
Le problème, ce n'est pas simplement les juniors, mais les juniors qui se contentent de faire du copier-coller en un clic.
En réalité, ça existait déjà avant l'IA.
C'est juste que Stack Overflow a été remplacé par l'IA.
On ne sait pas encore si l’IA remplacera réellement les développeurs, ni même si c’est vraiment possible, donc il ne semble pas nécessaire de l’encenser aveuglément. En pratique, même sur reddit, on voit pas mal de messages de personnes qui ont créé quelque chose, attirent des utilisateurs, mais demandent de l’aide sans même savoir ce qui est risqué dans leur propre service.
Autrefois, quand on fabriquait les choses à la main, on formait les gens selon un modèle d’apprentissage, puis après la révolution industrielle, on est passé au travail simple et répétitif.
Aujourd’hui, les gens ne font plus que fixer du regard le code qui sort à la chaîne de la ligne 4, comme des pièces qui défilent sur un convoyeur.
Quand quelqu’un qui ne fait que du contrôle de pièces demande : « Pourquoi vous avez conçu ça comme ça ? », même après 10 ans de travail, il n’a souvent rien d’autre à répondre que : « C’est la machine qui le faisait comme ça. »
???: « Réfléchis soigneusement à ce qu’il ne faut pas faire »
MDRRR, c'est tellement vrai, MDR
MDR
MDRRRRR
Au final, quand les capacités de raisonnement et de mémoire de l’IA augmenteront, tout ce débat deviendra sans objet. De toute façon, on n’aura même plus besoin des seniors.
Au final, j’ai l’impression que l’essentiel dépend de la manière dont la personne qui l’utilise réfléchit et s’en sert.
Il y a certes davantage de risques de se laisser entraîner sans y penser, dans un environnement où l’on se contente de tout lui confier sans réfléchir, mais si on l’utilise bien, on peut apprendre et développer bien plus vite et plus précisément qu’avant.
En revanche, j’aimerais qu’on définisse rapidement un nouveau cadre et de nouvelles méthodes exemplaires d’apprentissage, différents des approches traditionnelles d’apprentissage et d’acquisition d’expérience, pour mieux guider celles et ceux qui débutent.
J’ai plutôt l’impression que ce que les seniors ont acquis par l’expérience, les juniors vont désormais pouvoir l’apprendre plus vite.
De toute façon, le junior développeur qui ne faisait que du simple copier-coller, comme le dit l’auteur, était déjà inutile à l’époque de Stack Overflow.
C’est juste que, à l’ère de l’IA, l’habitude de copier-coller du code depuis Stack Overflow
s’est déplacée vers les réponses de l’IA.
Et de toute façon, les juniors développeurs qui étudiaient sérieusement auparavant
progresseront encore plus vite vers un niveau senior à l’ère de l’IA.
Si l’on part du principe qu’on n’a même plus besoin de regarder le bas niveau et qu’on peut aussi apprendre plus vite grâce à l’IA, qui ira embaucher cher un développeur junior coréen diplômé d’une université en 4 ans ?
Ils embaucheront plutôt à moindre coût, avec ces agents IA présentés comme des solutions miracles à tout faire, en recrutant, en onboardant et en traduisant avec l’IA, des gens comme Rahul Singh (24 ans, master à l’IIT) en Inde ou Zhang Wei (26 ans, major de promotion à Tsinghua).
Je suis particulièrement inquiet pour les juniors actuels, surtout pour les hommes, si l’on tient compte du fait que le service militaire leur ajoute souvent deux ans avant l’entrée dans la vie active.
Si l’on utilise principalement l’IA, on n’aura pas l’occasion d’échouer, et on n’en tirera donc pas les leçons d’ingénierie. Ce qui n’est pas exprimé dans les livres ou les écrits ne peut pas non plus être couvert par l’IA.
Comme l’IA échoue elle aussi, ne deviendrons-nous pas des personnes capables d’« échouer avec l’IA et de surmonter cela ensemble » ?
D’après votre réponse, si c’est l’IA qui échoue, alors qui surmonte l’échec ? Un junior fraîchement diplômé de l’université ?
Je laisse un commentaire courtois et mesuré.
Je suis d’accord. L’idée, c’est de chercher ensemble et de résoudre les problèmes ensemble. Vous n’avez sans doute pas essayé de cette façon, alors j’ai l’impression que vous cherchez peut-être à imposer votre réponse comme la seule bonne un peu trop fermement. De mon côté aussi, je vais essayer de laisser un commentaire aussi aimable et mesuré que possible~^^
Au final, dans 10 ans, on deviendra des juniors avec 10 ans d’expérience (propulsés par l’IA).
Vu la vitesse d’amélioration des modèles d’IA, au moment où les développeurs juniors d’aujourd’hui deviendront seniors,
il me semble que même les seniors seront déjà en train d’être remplacés.
Cela revient à dire que l’IA remplace les juniors qui étaient censés devenir des seniors. Vive l’IA, vive l’IA, mille fois vive l’IA.
C’est la bonne réponse.
Réactions sur Hacker News
Je pense qu’à l’avenir, une période d’apprentissage sans IA sera indispensable
Dans tout apprentissage technique, la clé reste la « pratique répétée, les mains dans le cambouis »
À mon avis, le parcours d’apprentissage évoluera ainsi : « formation de l’intuition sans IA → usage progressif de l’IA pour en comprendre les limites → expert natif de l’IA »
Mais on ne sait pas encore comment mettre cela en œuvre à grande échelle
Ironiquement, l’IA est utile comme tuteur personnalisé, tout en étant une tentation qui pousse à éviter la pratique
Le système éducatif actuel, centré sur les examens, renforce au contraire cette dépendance à l’IA
C’est pourquoi j’ai prédit le retour de l’apprentissage en alternance, et je vois dans la proposition de preceptorship de Microsoft un signe en ce sens
Il est encourageant de voir qu’une grande entreprise a identifié le problème et proposé une solution
Ces outils m’aidaient à comprendre où je m’étais trompé, mais au final, l’essentiel restait la pratique manuelle
Mais l’usage actuel de l’IA, ce n’est pas simplement apprendre la théorie, c’est plutôt comme faire travailler un esclave
Historiquement, cette méthode n’a jamais produit de maîtrise
Énormément de gens sont déjà incapables de contrôler leur addiction aux réseaux sociaux
La conférence Simple Made Easy de Rich Hickey a eu une grande influence sur ma carrière
L’IA n’a pas de « goût » et tend à produire plus de code
La vraie ingénierie, c’est l’art de créer les fonctionnalités les plus impactantes avec le moins de code possible
Même avant, les développeurs juniors existaient davantage pour apprendre que pour être productifs
C’est pour cela qu’on leur confiait volontairement une tâche d’une semaine, alors qu’un senior pouvait la terminer en quelques heures
Aujourd’hui, les entreprises cherchent à éviter ce « coût de formation »
Tout le monde ne regarde que le gain à court terme, provoquant un effondrement à long terme
Sans juniors, il n’y aura plus de seniors, et au final, c’est toute l’industrie qui s’effondrera
Les juniors sont aussi nécessaires pour réduire les coûts et maintenir l’équilibre de la structure de promotion
Mais avec l’arrivée de l’IA, il est désormais possible que même les développeurs intermédiaires soient remplacés
Du point de vue des objectifs à court terme, « un junior, c’est une productivité négative »
S’ils sont lents, ce n’est pas à cause de leur niveau, mais à cause de processus organisationnels inefficaces
Je dis toujours aux étudiants : « un junior doit écrire du code lui-même »
Comme dans ce texte de htmx, les seniors doivent permettre aux juniors d’écrire du code
Parce que les seniors viennent des juniors
On est passé à une logique du type : « si vous avez besoin de seniors, recrutez des seniors »
Cela pourrait devenir une répétition de la génération COBOL
L’écart entre seniors et juniors s’est creusé, et l’expérience acquise en se frottant directement aux problèmes est en train de disparaître
Moi, avec 30 ans d’expérience, j’obtiens aujourd’hui des tarifs de mission élevés
Si coder est un art, il faudra peut-être finir par survivre dans une concurrence digne des artistes
Si tout le monde renonce à former des juniors, cela finira par provoquer un effondrement de l’offre de seniors
Mais l’incitation à briser les règles pour un profit à court terme est forte
En réalité, beaucoup de développeurs seniors ne sont pas si brillants que ça
La qualité d’un projet finit toujours par baisser après un certain point
La plupart n’étaient seniors que par le titre, et moi aussi je n’étais senior que de nom, avec en réalité un niveau intermédiaire
Managers, recruteurs, développeurs : tout le monde fait semblant de travailler, et la vraie valeur vient d’une petite minorité de gens réellement compétents
Le scénario qui me fait peur, c’est que nous finissions réduits au rôle de gestionnaires de prompts
Un avenir où l’on se contentera de faire confiance au code corrigé par l’IA sans vraiment comprendre la base de code
Le plaisir d’une résolution de problème en profondeur existe toujours
Simplement, je suis heureux de ne plus avoir à utiliser directement des stacks comme React ou NextJS
Ceux qui ont acquis de solides fondamentaux avant l’IA ont vraiment de la chance aujourd’hui
Ce n’est que l’étape suivante de la culture du « left-pad »
C’est ainsi que l’IA fonctionne mieux, et que la connaissance métier des humains peut vraiment s’exprimer
Je ressens la même inquiétude
Il n’y a presque plus de revue, et toute considération d’architecture à long terme a disparu
On dirait que la société dans son ensemble est en train d’accepter une baisse de qualité
En ce moment, j’ai l’impression que les juniors sont plus utiles que les seniors
Quand on pose une question à un senior, il répond seulement : « l’IA a dit ça »
À l’inverse, les juniors ont une vraie envie d’apprendre, et les profils staff restent d’excellents mentors
À l’inverse, certains profils intermédiaires ne savent plus rien faire sans IA
Ils ne comprennent pas le problème, et comme l’IA le résout à leur place, ils deviennent au contraire insensibles à leur propre incompétence
L’abus des LLM provoquera une dégradation cognitive
J’essaie de n’embaucher que des personnes non contaminées par les LLM
Cet article lui-même donne l’impression d’avoir été écrit par un LLM
Le style du type « It’s not X, but Y » est bien trop typique
Le simple fait de penser que la majorité du contenu web est désormais générée par l’IA me déprime
Au final, nous allons vers un monde où la distinction entre vrai et faux disparaît
Du coup, je me dis que je devrais peut-être aller apprendre la soudure
Cet article a exactement le même style
À la racine du problème, il y a les seniors
Ils ne donnent aux juniors que des tâches sans intérêt, sans leur laisser l’occasion d’utiliser de nouveaux outils
Désormais, au lieu de « modifier un modèle d’e-mail », il faut leur confier des sujets comme « créer un service d’automatisation de processus internes »
Il est difficile pour les juniors d’apprendre quand ils ne savent même pas ce qu’ils ignorent, et les seniors ont eux aussi plus de mal à enseigner
Grâce à l’IA, j’ai pu recruter un junior qui ne connaissait même pas le HTML
Avant, c’était impossible, mais maintenant, avec un peu de persévérance, l’entrée dans le métier est possible
Au final, si on choisit la voie facile, on obtient des résultats à cette hauteur
Je me demande comment un junior comme ça a pu être recruté
Si on ne choisit que la facilité, la profondeur de la vie disparaît
Moi non plus, je n’ai jamais suivi ce genre de cours
Au final, l’IA risque d’épuiser la source même de la créativité
Si les humains ne produisent plus de nouvelles idées, l’IA ne fera plus que se répliquer elle-même
Ce cycle mènera à une stagnation technologique et une dépendance
L’apprentissage non supervisé pourrait permettre de dépasser ces limites
Si les bons développeurs disparaissent, même une mauvaise IA devient utile