---
title: Le travail d’un précepteur, c’est de livrer des seniors
description: Microsoft et Carnegie Mellon s’attendent à ce que l’IA assèche le vivier des débutants, et ont créé PRAISE pour l’empêcher. La nouvelle étiquette ne va pas au junior mais au senior, avec un mot emprunté aux soins infirmiers. Notes sur la conversation de Scott Hanselman avec le Dr Michael Hilton et Julia Gao, qui a écrit un outil à la main en stage et relit aujourd’hui ce qu’écrivent les agents.
date: 2026-10-16
tags: agents de code IA, génie logiciel, développeurs juniors, formation
---

Le travail d’un ingénieur senior, c’est de livrer. Celui d’un précepteur, c’est de livrer des seniors. La formule est de Scott Hanselman, pour PRAISE, le programme qu’il a lancé chez Microsoft avec Mark Russinovich, CTO d’Azure, parce qu’ils s’attendent à ce que l’IA assèche le vivier des débutants : si la direction croit qu’un agent peut faire le travail d’un junior, les entreprises arrêtent d’embaucher des juniors. Leur réponse ne change pas l’étiquette du junior. Elle change celle du senior, avec un mot emprunté aux soins infirmiers, et met les deux en binôme autour de labs IA hebdomadaires, avec des cours de Carnegie Mellon en parallèle.

La conversation, c’est [PRAISE : Preceptorship for AI-accelerated Software Engineering](https://www.youtube.com/watch?v=BglzGRnH8Zg), 35 minutes sur la chaîne Microsoft Developer, publiée le 15 octobre. Scott anime. Le Dr Michael Hilton enseigne le génie logiciel à Carnegie Mellon et y dirige l’enseignement du Software and Societal Systems Department. Julia Gao est ingénieure logiciel dans l’équipe de Scott ; stagiaire chez Microsoft en 2024, elle a suivi PRAISE comme préceptorée. Le terme meat proxy, tiré de ma [note sur la conférence de Peter Steinberger](/fr/notes/dont-be-your-teams-meat-proxy.html), revient ici, vu de l’autre côté.

## Quelqu’un sur le campus vibe-code son diplôme

Hilton date avec précision le point de rupture pour l’université : le moment où l’IA a pu faire du premier coup les devoirs qu’il donne. Il enseigne le génie logiciel en fin de cursus, et quelque part entre le semestre d’automne 2025 et celui du printemps 2026, elle est devenue capable de les faire tous. Les étudiants n’avaient plus besoin de réfléchir. Ils pouvaient copier-coller.

Julia a vu la même chose de l’autre côté du bureau. ChatGPT est sorti pendant sa deuxième année et n’était pas bon, donc personne autour d’elle ne s’en servait avant la troisième année. Puis il est vite devenu bon, et les professeurs ont commencé à demander, sur chaque devoir, une ligne précisant où l’IA avait servi.

La phrase d’ouverture de Scott quand il forme des enseignants d’université : en ce moment même, quelque part sur le campus, quelqu’un vibe-code son diplôme, et il faut décider si ça nous va.

Pour Hilton, cela révèle un vieux point faible. Les enseignants comptaient sur le fait qu’un exercice donné n’avait que deux issues : on le saute ou on le résout. Il y en a maintenant une troisième, le bouton magique, si bien que son métier consiste aussi à convaincre les étudiants que l’effort compte. Ce qu’il entend des étudiants, des dizaines ou des centaines de fois, chaque fois qu’ils pensent être honnêtes : « Je n’utilise pas l’IA pour les choses qui comptent pour moi. Je l’utilise pour les parties de la fac dont je me fiche. »

<figure class="fd-fig ps-doors" aria-labelledby="ps1-cap" data-desc="Ce qu’un étudiant peut faire d’un exercice donné. Pendant des années, il y avait deux issues : le sauter, ou le résoudre. Depuis que l’IA fait les devoirs du premier coup, quelque part entre les semestres d’automne 2025 et de printemps 2026, il y en a une troisième : le bouton magique, le copier-coller. En dessous, la chronologie de Julia : ChatGPT arrive pendant sa deuxième année et n’est pas bon ; en troisième année il est bon, et les professeurs demandent sur chaque devoir une ligne précisant où l’IA a servi ; puis les devoirs de fin de cursus de Hilton tombent du premier coup. La phrase des étudiants, que Hilton a entendue des dizaines ou des centaines de fois : je n’utilise pas l’IA pour les choses qui comptent pour moi. Je l’utilise pour les parties de la fac dont je me fiche.">
<ol class="ps-ways" aria-label="Ce qu’un étudiant peut faire d’un devoir">
<li><span class="ps-way-n">1</span><b>Le sauter</b><span>Depuis toujours</span></li>
<li><span class="ps-way-n">2</span><b>Le résoudre</b><span>Depuis toujours</span></li>
<li class="ps-way-new"><span class="ps-way-n">3</span><b>Appuyer sur le bouton magique</b><span>Nouvelle, depuis que l’IA fait les devoirs du premier coup</span></li>
</ol>
<ol class="ps-tl" aria-label="Le cursus de Julia, puis le point de rupture de Hilton">
<li><b>Deuxième année</b><span>ChatGPT sort. « Ce n’était pas terrible. »</span></li>
<li><b>Troisième année</b><span>Assez bon pour qu’on s’en serve. Les devoirs gagnent une ligne « IA utilisée ».</span></li>
<li class="ps-tl-now"><b>Automne 2025 à printemps 2026</b><span>Les devoirs de fin de cursus de Hilton tombent du premier coup.</span></li>
</ol>
<p class="mp-strip"><b>Étudiants</b><span>« Je n’utilise pas l’IA pour les choses qui comptent pour moi. Je l’utilise pour les parties de la fac dont je me fiche. »</span></p>
<figcaption id="ps1-cap">Deux voies sont devenues trois. La chronologie, c’est le cursus de Julia tel qu’elle l’a raconté, puis le point de rupture de Hilton.</figcaption>
</figure>

## Envoyer un robot soulever vos haltères

Scott a un mot pour ce que le bouton magique vous fait : atrophié. Un muscle se développe avec le temps passé sous tension. Envoyez un robot à la salle soulever les poids à votre place et, si on vous demande s’ils ont été soulevés, vous pouvez honnêtement répondre oui. Vous n’êtes pas devenu plus fort.

Hilton a soumis cette analogie à sa classe, avec des points bonus pour qui en trouverait une meilleure. Plusieurs étudiants sont arrivés, chacun de leur côté, à la même image : un cours de cuisine où l’on commande sur DoorDash pour rendre l’assiette.

L’usage de Julia, c’est la version que tous les deux souhaitent. Elle faisait les séries d’exercices elle-même, pour apprendre les fondamentaux. Une fois qu’une implémentation simple fonctionnait, elle interrogeait l’IA sur d’autres façons de faire, et quand la solution de l’enseignant différait de la sienne, elle demandait à l’IA de lui expliquer la différence. L’IA comme source d’information, jamais comme ce qui fait la série à sa place.

Puis Scott ressort le meat proxy : je vous demande quelque chose, vous demandez au bot, le bot vous répond, vous me répétez ce que le bot a dit. Si votre travail se résume de plus en plus à appuyer sur OK, c’est là qu’il faut s’inquiéter, parce qu’appuyer sur OK, ce n’est pas un métier.

<figure class="fd-fig ps-gym" aria-labelledby="ps2-cap" data-desc="Deux analogies pour l’usage de l’IA afin d’expédier un travail dont on se fiche. Celle de Scott : un muscle se développe avec le temps passé sous tension ; envoyez un robot soulever les poids à votre place et ils sont soulevés, mais vous ne devenez pas plus fort. Celle des étudiants : aller à un cours de cuisine et commander sur DoorDash pour rendre son plat. Puis la boucle de Julia en trois étapes : résoudre la série soi-même, demander à l’IA d’autres façons de l’implémenter, et quand la réponse de l’enseignant diffère, demander à l’IA d’expliquer la différence. La phrase de Scott : appuyer sur OK, ce n’est pas un métier.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">L’analogie de Scott</p>
<p class="mp-two-name">La salle de sport</p>
<svg class="mp-two-art" viewBox="0 0 300 100" aria-hidden="true"><g class="ps-bell"><rect class="ps-plate" x="70" y="30" width="16" height="40"/><rect class="ps-plate" x="214" y="30" width="16" height="40"/><rect class="ps-bar" x="86" y="46" width="128" height="8"/></g><g class="ps-bot"><rect class="ps-bot-head" x="134" y="72" width="32" height="22"/><rect class="ps-bot-eye" x="141" y="79" width="5" height="5"/><rect class="ps-bot-eye" x="154" y="79" width="5" height="5"/><line class="ps-bot-ant" x1="150" y1="72" x2="150" y2="64"/><circle class="ps-bot-tip" cx="150" cy="62" r="3"/></g><line class="ps-floor" x1="40" y1="96" x2="260" y2="96"/></svg>
<p class="mp-two-line">Le muscle grandit avec le temps sous tension</p>
<p class="mp-two-line">Un robot à votre place : les poids sont levés, vous n’êtes pas plus fort</p>
</div>
<p class="mp-two-vs">et</p>
<div class="mp-two-card">
<p class="mp-two-who">L’analogie des étudiants</p>
<p class="mp-two-name">Le cours de cuisine</p>
<svg class="mp-two-art" viewBox="0 0 300 100" aria-hidden="true"><ellipse class="ps-dish" cx="104" cy="74" rx="58" ry="13"/><ellipse class="ps-dish-in" cx="104" cy="72" rx="40" ry="7"/><g class="ps-bag"><rect class="ps-bag-body" x="188" y="42" width="54" height="50"/><path class="ps-bag-handle" d="M200,42 V32 Q215,16 230,32 V42"/><rect class="ps-bag-tag" x="200" y="60" width="30" height="8"/></g><line class="ps-floor" x1="40" y1="96" x2="260" y2="96"/></svg>
<p class="mp-two-line">Commander sur DoorDash, rendre l’assiette</p>
<p class="mp-two-line">Personne n’apprend à cuisiner</p>
</div>
</div>
<ol class="mp-trio">
<li><svg class="mp-grow-art" viewBox="0 0 170 100" aria-hidden="true"><rect class="rp-doc" x="46" y="8" width="70" height="84"/><rect class="mp-ln" x="56" y="22" width="44" height="5"/><rect class="mp-ln" x="56" y="34" width="50" height="4"/><rect class="mp-ln" x="56" y="44" width="36" height="4"/><rect class="mp-ln" x="56" y="54" width="48" height="4"/><g class="ps-pencil"><rect class="ps-pencil-body" x="118" y="38" width="12" height="50"/><path class="ps-pencil-tip" d="M118,88 L124,100 L130,88 Z"/></g></svg><p class="mp-trio-n"><b>1</b>Le faire soi-même</p><p class="mp-trio-what">La série d’exercices, pour les bases</p></li>
<li><svg class="mp-grow-art" viewBox="0 0 170 100" aria-hidden="true"><circle class="ps-node" cx="36" cy="50" r="10"/><path class="ps-branch" d="M46,50 H76 Q92,50 92,34 V22 H118"/><path class="ps-branch" d="M46,50 H118"/><path class="ps-branch" d="M46,50 H76 Q92,50 92,66 V78 H118"/><circle class="ps-leaf" cx="126" cy="22" r="7"/><circle class="ps-leaf" cx="126" cy="50" r="7"/><circle class="ps-leaf" cx="126" cy="78" r="7"/></svg><p class="mp-trio-n"><b>2</b>Demander d’autres façons</p><p class="mp-trio-what">Une version simple marche : comment la construire autrement ?</p></li>
<li><svg class="mp-grow-art" viewBox="0 0 170 100" aria-hidden="true"><rect class="rp-doc" x="18" y="12" width="58" height="76"/><rect class="mp-ln" x="26" y="24" width="40" height="4"/><rect class="mp-ln" x="26" y="36" width="34" height="4"/><rect class="ps-diff" x="26" y="48" width="42" height="6"/><rect class="mp-ln" x="26" y="62" width="30" height="4"/><rect class="rp-doc" x="94" y="12" width="58" height="76"/><rect class="mp-ln" x="102" y="24" width="40" height="4"/><rect class="mp-ln" x="102" y="36" width="34" height="4"/><rect class="ps-diff" x="102" y="48" width="26" height="6"/><rect class="mp-ln" x="102" y="62" width="30" height="4"/></svg><p class="mp-trio-n"><b>3</b>Comparer les réponses</p><p class="mp-trio-what">Quand la solution de l’enseignant diffère, demander pourquoi</p></li>
</ol>
<p class="mp-strip"><b>Scott</b><span>Appuyer sur OK, ce n’est pas un métier.</span></p>
<figcaption id="ps2-cap">Les deux analogies, puis l’usage réel de Julia : la série à la main, le modèle pour tout ce qui l’entoure.</figcaption>
</figure>

## Un mot d’infirmière pour le nouveau métier du senior

PRAISE signifie Preceptorship for AI-accelerated Software Engineering. Le point de départ de l’article écrit par Scott et Russinovich : stagiaires et alternants arrivent à moins un, jetés dans l’arène des ingénieurs seniors, à charge pour eux de s’en sortir seuls.

La plupart des programmes répondent en donnant une étiquette au nouveau venu : stagiaire, alternant, junior. PRAISE en donne une au senior. En soins infirmiers, un précepteur est un formateur lui-même formé dont le rôle à l’hôpital, en plus de bien soigner, est de faire de nouveaux infirmiers seniors. L’étiquette dit au senior que son métier a changé.

Scott est franc sur la raison. Il a été mentor, et un mauvais, parce que son mentorat se résumait à une leçon hebdomadaire donnée par un vieux. La personne en face repartait en se disant que son père lui en offrait autant.

Le préceptorat de Julia reposait sur des labs IA structurés, un par semaine, comme point de départ de la conversation. Le lab lui donnait quelque chose de concret qu’elle venait de faire. Elle pouvait alors demander à son précepteur comment il s’y serait pris, dès la première étape, et pourquoi il construirait un projet de telle façon plutôt que de telle autre. Aujourd’hui, elle applique à son travail quotidien la façon dont il attaque un problème, « au lieu de simplement écouter ce que fait l’IA ».

Hilton, qui revendique le droit de l’universitaire à être pointilleux, dit que le mot précis importe peu. Ce qui compte, c’est qu’il a été choisi avec intention, pour dire que ce n’est pas un stage comme les autres. Si ça doit être différent, appelez-le autrement. Il cite Eisenhower : les plans ne sont rien, la planification est tout.

<figure class="fd-fig ps-label" aria-labelledby="ps3-cap" data-desc="Qui porte l’étiquette. Dans un mentorat ou un stage, l’étiquette va au nouveau venu : stagiaire, alternant, junior, arrivé à moins un et sommé de s’en sortir ; le senior reste ingénieur senior, et le mentorat est une leçon hebdomadaire donnée par un vieux. Dans PRAISE, l’étiquette va au senior : précepteur, un mot des soins infirmiers pour un formateur formé dont le rôle est de faire de nouveaux infirmiers seniors ; le nouveau venu est préceptoré. Chaque semaine, un lab IA structuré lance la conversation, et le préceptoré demande comment le précepteur s’y prendrait, dès la première étape, et pourquoi. Le point de Hilton : le mot lui-même importe peu, le choisir avec intention, si. Les plans ne sont rien, la planification est tout.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">Mentorat</p>
<p class="mp-two-name">L’étiquette est sur le junior</p>
<div class="ps-pair-art" aria-hidden="true"><div class="ps-person ps-person-p"><svg class="ps-figure" viewBox="0 0 48 56"><circle cx="24" cy="14" r="11"/><path d="M6,56 V40 Q6,28 18,28 H30 Q42,28 42,40 V56 Z"/></svg><b class="ps-badge ps-badge-on">Stagiaire</b></div><span class="ps-arrow">←</span><div class="ps-person"><svg class="ps-figure" viewBox="0 0 48 56"><circle cx="24" cy="14" r="11"/><path d="M6,56 V40 Q6,28 18,28 H30 Q42,28 42,40 V56 Z"/></svg><b class="ps-badge">Ingénieur senior</b></div></div>
<p class="mp-two-line">Arrivé à moins un, sommé de s’en sortir</p>
<p class="mp-two-line">« Une leçon hebdomadaire donnée par un vieux »</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">Préceptorat</p>
<p class="mp-two-name">L’étiquette est sur le senior</p>
<div class="ps-pair-art" aria-hidden="true"><div class="ps-person"><svg class="ps-figure" viewBox="0 0 48 56"><circle cx="24" cy="14" r="11"/><path d="M6,56 V40 Q6,28 18,28 H30 Q42,28 42,40 V56 Z"/></svg><b class="ps-badge">Préceptoré</b></div><span class="ps-arrow">⇄</span><div class="ps-person ps-person-p"><svg class="ps-figure" viewBox="0 0 48 56"><circle cx="24" cy="14" r="11"/><path d="M6,56 V40 Q6,28 18,28 H30 Q42,28 42,40 V56 Z"/></svg><b class="ps-badge ps-badge-on">Précepteur</b></div></div>
<p class="mp-two-line">Un mot d’infirmière : un formateur formé qui fait des seniors</p>
<p class="mp-two-line">Un lab IA par semaine, puis « comment vous y prendriez-vous ? »</p>
</div>
</div>
<p class="mp-strip"><b>Hilton</b><span>Le mot importe peu. Le choisir exprès, si. « Les plans ne sont rien, la planification est tout. »</span></p>
<figcaption id="ps3-cap">Les deux mêmes personnes, l’étiquette a changé de place. Le badge est le cœur du programme.</figcaption>
</figure>

## La stagiaire écrivait l’outil. Maintenant, ce sont les agents.

Le stage de Julia, en 2024, c’était un outil en ligne de commande écrit à la main : il modifiait quelques fichiers, ouvrait une pull request et la finalisait une fois qu’un utilisateur avait approuvé. L’IA restait sur le côté pour la syntaxe, parce qu’elle apprenait le C# et connaissait déjà Java. Comment je définis cette classe ici ? La conception et la logique étaient les siennes, relues par toute l’équipe avant qu’elle ne tape quoi que ce soit.

De retour à plein temps, elle dit que l’arrivée de Claude Opus cette année a tout changé. Son équipe code tout avec des workflows multi-agents, y compris le genre de tâche qu’elle automatisait en stage. Le résumé de Scott : donc vous voilà relectrice. Le sien : il faut comprendre la logique, se faire écrire le code, comprendre comment il s’insère dans le contexte plus large, et en assumer la responsabilité, parce que c’est vous qui le livrez.

La version de Scott de cette responsabilité : la pull request est à votre nom. Elle indique Copilot on behalf of Julia, et quand ça tourne mal, c’est elle qui reçoit le coup de fil.

Le nouveau stress, c’est le changement de contexte. Avec quatre ou cinq agents qui tournent en même temps, chacun sur une partie différente du ticket, elle doit passer de l’un à l’autre, et elle y voit une compétence que toute la profession doit encore développer.

<figure class="fd-fig ps-then" aria-labelledby="ps4-cap" data-desc="Le travail de Julia, avant et maintenant. Pendant son stage de 2024, elle a écrit à la main un outil en ligne de commande qui modifiait des fichiers, ouvrait une pull request et la finalisait une fois qu’un utilisateur avait approuvé ; la conception et la logique étaient les siennes, relues d’abord par l’équipe, et l’IA ne répondait qu’à des questions de syntaxe pendant qu’elle apprenait le C sharp. Aujourd’hui, à plein temps, quatre ou cinq agents écrivent le code dans des workflows multi-agents pendant qu’elle le lit, le valide par rapport au ticket, le livre et passe de l’un à l’autre ; la pull request indique Copilot on behalf of Julia, et quand ça tourne mal, c’est elle qui reçoit le coup de fil.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">2024, stagiaire</p>
<p class="mp-two-name">Elle écrit, l’IA répond sur la syntaxe</p>
<div class="ps-lanes">
<p class="ps-lane ps-lane-her"><span class="ps-lane-who">Julia</span><i class="ps-lane-bar"></i><span class="ps-lane-what">tape l’outil en ligne de commande</span></p>
<p class="ps-lane"><span class="ps-lane-who">IA</span><i class="ps-lane-bar ps-lane-thin"></i><span class="ps-lane-what">« Comment je définis cette classe en C# ? »</span></p>
</div>
<p class="mp-two-line">Conception et logique à elle, relues d’abord par l’équipe</p>
<p class="mp-two-line">L’outil modifiait des fichiers, ouvrait une PR, la finalisait après accord</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">2026, plein temps</p>
<p class="mp-two-name">Les agents écrivent, elle relit</p>
<div class="ps-lanes">
<p class="ps-lane"><span class="ps-lane-who">Agent 1</span><i class="ps-lane-bar"></i></p>
<p class="ps-lane"><span class="ps-lane-who">Agent 2</span><i class="ps-lane-bar"></i></p>
<p class="ps-lane"><span class="ps-lane-who">Agent 3</span><i class="ps-lane-bar"></i></p>
<p class="ps-lane"><span class="ps-lane-who">Agent 4</span><i class="ps-lane-bar"></i></p>
<p class="ps-lane ps-lane-maybe"><span class="ps-lane-who">Agent 5</span><i class="ps-lane-bar"></i></p>
<p class="ps-lane ps-lane-her"><span class="ps-lane-who">Julia</span><i class="ps-lane-bar"></i><span class="ps-lane-what">lit, valide, livre, jongle</span></p>
</div>
<p class="ps-pr"><span class="ps-pr-k">Pull request</span><span class="ps-pr-by">Copilot on behalf of <b>Julia</b></span></p>
<p class="mp-two-line">Quatre ou cinq agents à la fois, chacun sur une partie du ticket</p>
</div>
</div>
<p class="mp-strip"><b>Scott</b><span>La PR est à votre nom. Quand ça tourne mal, c’est vous qui recevez le coup de fil.</span></p>
<figcaption id="ps4-cap">Son stage face à son poste actuel, tels qu’elle les a décrits. Les barres sont schématiques : elle n’a donné aucune durée.</figcaption>
</figure>

## De l’autre côté de la rue ou jusqu’à la Lune

Scott pose la question franchement : si la machine peut simplement le faire, à quoi sert la compréhension profonde ? La première réponse de Hilton : quiconque prétend le savoir, à ce jour, ment. La seconde : c’est le contexte qui décide. Pour prendre un Uber jusqu’à l’aéroport, pas besoin de savoir comment marche un moteur. Pour être ingénieur principal d’une écurie de Formule 1, si, même sans jamais en construire un. Un script qui modifie un fichier quelques fois : vérifiez le fichier et passez à autre chose. Une infrastructure que des millions de gens vont utiliser : comprenez-la avant de la livrer.

Il emprunte une statistique du baseball, la valeur par rapport à un remplaçant, et demande ce que vaut un étudiant face à ce remplaçant qu’est l’IA. Si tout ce que vous savez faire, c’est écrire un prompt qui décrit une tâche, le modèle peut écrire ce code, et vous avez un problème. Un prompt ne porte pas le contexte : envoie-t-on ce paquet de l’autre côté de la rue ou jusqu’à la Lune ? La validation, la performance et la sécurité en dépendent, et savoir ce qui compte ici, c’est la part humaine.

Scott fait remarquer que tout le monde, autour de la table, n’arrête pas d’employer le mot contexte pour deux choses différentes. Il y a la fenêtre de contexte du modèle, et il y a le contexte dans lequel vit la solution. Une fenêtre d’un million de tokens ne sait pas ce que Julia sait de Microsoft.

Julia rend ça concret. Un produit, c’est plusieurs dépôts et beaucoup de pièces mobiles. L’IA est très bonne pour résoudre un problème dans un dépôt. Elle ne se situe pas dans le système entier, alors elle corrige le problème et casse quelque chose ailleurs. C’est son précepteur qui lui dit où sa fonctionnalité se place dans le produit. Scott cite une phrase dont il ne retrouve pas la source : l’IA écrit facilement des fonctionnalités, mais elle n’écrit pas facilement des architectures.

<figure class="fd-fig ps-depth" aria-labelledby="ps5-cap" data-desc="Jusqu’où il faut comprendre, sur une échelle tirée des exemples de Hilton. Côté surface : un Uber jusqu’à l’aéroport, ou un script qui modifie un fichier quelques fois, où l’on vérifie le fichier et passe à autre chose. Côté profondeur : l’ingénieur principal d’une écurie de Formule 1, ou une infrastructure utilisée par des millions de gens, qu’on comprend avant de la livrer. En dessous, les deux sens du mot contexte. La fenêtre de contexte : un million de tokens, un problème dans un dépôt, que l’IA résout très bien, mais qui ne sait pas ce que Julia sait de Microsoft. Le contexte où vit la solution : plusieurs dépôts, le produit entier, le paquet qui va de l’autre côté de la rue ou jusqu’à la Lune, et ce que cela exige en validation, performance et sécurité, qu’un prompt ne porte pas et qu’un précepteur porte. La phrase que cite Scott : l’IA écrit facilement des fonctionnalités, elle n’écrit pas facilement des architectures.">
<div class="ps-scale">
<p class="ps-scale-h">Jusqu’où il faut creuser</p>
<div class="ps-scale-bar" aria-hidden="true"><i class="ps-scale-cur"></i></div>
<p class="ps-scale-ends"><span><b>En surface</b>Un Uber jusqu’à l’aéroport. Un script qui modifie un fichier : vérifier, passer à autre chose.</span><span><b>En profondeur</b>Ingénieur principal en Formule 1. Une infra pour des millions : la comprendre avant de livrer.</span></p>
</div>
<div class="mp-two-row">
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">Contexte, premier sens</p>
<p class="mp-two-name">La fenêtre de contexte</p>
<p class="ps-win"><span class="ps-win-n">Un million de tokens</span><span class="ps-win-box">un problème, un dépôt</span></p>
<p class="mp-two-line">Le résout très bien</p>
<p class="mp-two-line">Ne sait pas ce que Julia sait de Microsoft</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card">
<p class="mp-two-who">Contexte, second sens</p>
<p class="mp-two-name">Là où vit la solution</p>
<p class="ps-repos"><span>dépôt</span><span>dépôt</span><span class="ps-repo-you">votre fonctionnalité</span><span>dépôt</span><span>dépôt</span><span>dépôt</span></p>
<p class="mp-two-line">De l’autre côté de la rue, ou jusqu’à la Lune ? Validation, performance et sécurité en découlent</p>
<p class="mp-two-line">Un prompt ne le porte pas. Un précepteur, si</p>
</div>
</div>
<p class="mp-strip"><b>Cité par Scott</b><span>L’IA écrit facilement des fonctionnalités. Elle n’écrit pas facilement des architectures.</span></p>
<figcaption id="ps5-cap">L’échelle de Hilton, puis les deux contextes de Scott. Le curseur sur la barre bouge sans arrêt, parce que la réponse change avec la tâche.</figcaption>
</figure>

## Les ingénieurs civils ne préparent pas le béton

Hilton et Mary Shaw ont publié une tribune dans le New York Times en novembre 2025, « You’re a Computer Science Major. Don’t Panic. » Près d’un an plus tard, Scott demande si elle tient toujours. Hilton dit oui, et précise : il y a une différence entre l’informatique et le génie logiciel, et entre concevoir du logiciel et écrire du code. Les ingénieurs civils ne préparent pas le béton et ne coulent pas les ponts. Ils conçoivent un pont qui tient sous le trafic et ne finit pas comme celui de Tacoma Narrows. Si les ingénieurs logiciels ont toujours été des codeurs, c’est seulement parce qu’ils n’avaient aucun moyen de prendre leurs distances avec la matière première.

La phrase que je garde : à mesure que le coût d’écriture du code tend vers zéro, le coût de l’ingénierie qui garantit que le problème est bien résolu, lui, ne tend pas du tout vers zéro. Construit-on la bonne chose, dans les délais, dans le budget, pour ce public, avec la bonne sécurité, la bonne utilisabilité, la bonne évolutivité et la bonne architecture ? Ces questions prennent désormais une plus grande part de la journée, puisque plus personne ne tape les lignes.

La partie de la tribune qu’il défend le plus : lire, critiquer et comprendre du code est une compétence distincte de l’écrire. L’enseignement supposait qu’on l’acquérait en chemin, en écrivant. Son fils a lu L’Odyssée au lycée, l’a critiquée et a rédigé un devoir dessus. Personne ne lui a demandé d’écrire une épopée. Scott note qu’il existe des cours d’appréciation de la poésie et aucun cours d’appréciation du code : chaque cursus commence par une boucle for et s’attend à ce que vous en sortiez en écrivant Linux.

CMU bouge. Dans le cours d’introduction que sa fille suit en première année, la plupart des devoirs sont des PDF : des problèmes de Parsons, où le code est donné dans le désordre et où il faut le remettre en ordre, et des questions de compréhension. Plus de lecture que d’écriture. Il reconnaît aussi que les cours ne peuvent pas changer au rythme où les labos de pointe livrent, d’où un décalage entre le moment où l’on voit un problème et celui où l’on corrige le programme.

<figure class="fd-fig ps-cost" aria-labelledby="ps6-cap" data-desc="Les deux coûts de Hilton, en schéma : le coût d’écriture du code tombe vers zéro, tandis que le coût de l’ingénierie qui garantit que le problème est bien résolu reste stable. En dessous, ce qu’on a demandé à son fils de faire avec L’Odyssée : la lire, la critiquer, rédiger un devoir dessus, et jamais écrire une épopée ; lire et critiquer du code est le même genre de compétence distincte. Puis un problème de Parsons, le format du cours d’introduction de CMU : quatre lignes d’une fonction données dans le désordre, que l’étudiant remet dans le bon ordre sans en écrire aucune. Les lignes sont mon exemple du format, pas un exercice de CMU.">
<div class="ps-chart" role="img" aria-label="Schéma : avec le temps, le coût d’écriture du code tombe vers zéro tandis que le coût de l’ingénierie reste stable">
<svg class="ps-chart-art" viewBox="0 0 480 150" aria-hidden="true"><line class="ps-axis" x1="40" y1="120" x2="460" y2="120"/><line class="ps-axis" x1="40" y1="14" x2="40" y2="120"/><path class="ps-line-eng" d="M40,46 L460,44"/><path class="ps-line-code" d="M40,40 C180,42 300,112 460,117"/></svg>
<p class="ps-chart-key"><span class="ps-key-eng">L’ingénierie : le problème est-il bien résolu ?</span><span class="ps-key-code">Écrire le code</span><span class="ps-key-x">coût, dans le temps</span></p>
</div>
<div class="ps-ody">
<p class="ps-ody-h">L’Odyssée, au lycée</p>
<p class="ps-ody-row"><span class="ps-ok">La lire</span><span class="ps-ok">La critiquer</span><span class="ps-ok">Rédiger un devoir</span><span class="ps-no">Écrire une épopée</span></p>
</div>
<div class="ps-parsons">
<p class="ps-ody-h">Un problème de Parsons, le format du cours d’intro</p>
<ol class="ps-par" aria-label="Quatre lignes données dans le désordre ; le badge indique la bonne position">
<li class="ps-par-3"><b>3</b><code>    total += x</code></li>
<li class="ps-par-1"><b>1</b><code>total = 0</code></li>
<li class="ps-par-4"><b>4</b><code>return total</code></li>
<li class="ps-par-2"><b>2</b><code>for x in xs:</code></li>
</ol>
</div>
<figcaption id="ps6-cap">Le graphique est schématique : il a donné la tendance, pas de chiffres. Les lignes de Parsons sont mon exemple du format, pas un exercice de CMU.</figcaption>
</figure>

## Lent autrement

Scott, sur sa propre journée : avant, la partie lente, c’était lui, le code. Maintenant, il est lent autrement. Lire le code et attendre le build, voilà les deux choses qui prennent du temps.

La liste de Julia est plus longue. Lire et comprendre ce que l’agent a écrit. Valider que le changement correspond au ticket, ce qui tient pour un petit changement et parfois pas pour un plus gros, avec plus de logique. Les builds. Et la revue par IA, qui tourne désormais sur leurs pull requests : chaque commentaire est une décision, parce qu’en traiter un peut modifier tout un tas d’autres fichiers et élargir le périmètre, et la voilà qui demande à l’agent d’annuler ce qu’il vient de faire. Ce n’est plus le code qui prend du temps. C’est de rendre ce code prêt pour la production.

C’est le goulot d’étranglement qu’Overmind attaquait dans ma [note sur la relecture du plan](/fr/notes/review-the-plan-not-the-pull-request.html), et la file d’attente sur laquelle bloque ma propre [usine logicielle](/fr/notes/software-factory-2022-to-lights-off.html). Trois notes de ce site butent désormais sur le même mur.

<figure class="fd-fig ps-slow" aria-labelledby="ps7-cap" data-desc="Où passe la journée, en schéma sans durées. Avant : le code était la partie lente, avec un peu de réflexion, un build et une revue autour. Maintenant, lent autrement : un prompt court, les agents qui écrivent, puis lire ce qu’ils ont écrit, le valider par rapport au ticket, attendre le build et trier les commentaires de la revue par IA. En dessous, la boucle de Julia avec les commentaires de revue, en quatre étapes : un commentaire de revue IA arrive sur la pull request, elle demande à l’agent de le traiter, tout un tas d’autres fichiers changent et le périmètre s’élargit, et elle lui dit d’annuler ce qu’il vient de faire.">
<div class="ps-day">
<p class="ps-day-label"><b>Avant</b>le code était la partie lente</p>
<p class="ps-day-track" aria-hidden="true"><i class="ps-seg ps-seg-me ps-f1"></i><i class="ps-seg ps-seg-type ps-f6"></i><i class="ps-seg ps-seg-wait ps-f1"></i><i class="ps-seg ps-seg-me ps-f1"></i></p>
<p class="ps-day-items"><span><i class="ps-seg-me"></i>réfléchir</span><span><i class="ps-seg-type"></i>taper le code</span><span><i class="ps-seg-wait"></i>build</span><span><i class="ps-seg-me"></i>relire</span></p>
<p class="ps-day-label"><b>Maintenant</b>lent autrement</p>
<p class="ps-day-track" aria-hidden="true"><i class="ps-seg ps-seg-type ps-f1"></i><i class="ps-seg ps-seg-ai ps-f1"></i><i class="ps-seg ps-seg-me ps-f3"></i><i class="ps-seg ps-seg-me ps-f2"></i><i class="ps-seg ps-seg-wait ps-f2"></i><i class="ps-seg ps-seg-me ps-f2"></i></p>
<p class="ps-day-items"><span><i class="ps-seg-type"></i>prompt</span><span><i class="ps-seg-ai"></i>les agents écrivent</span><span><i class="ps-seg-me"></i>lire ce qu’ils ont écrit</span><span><i class="ps-seg-me"></i>valider face au ticket</span><span><i class="ps-seg-wait"></i>attendre le build</span><span><i class="ps-seg-me"></i>trier les commentaires de revue IA</span></p>
</div>
<ol class="ps-revert">
<li><b>1</b>Un commentaire de revue IA arrive sur la PR</li>
<li><b>2</b>Elle demande à l’agent de le traiter</li>
<li><b>3</b>Tout un tas de fichiers changent, le périmètre s’élargit</li>
<li class="ps-revert-stop"><b>4</b>« Attends, attends, attends. Annule ce que tu viens de faire. »</li>
</ol>
<figcaption id="ps7-cap">Schéma : Scott et Julia ont nommé les parties lentes, pas leur durée. Le jaune, c’est votre attention, le bleu celle des agents. La deuxième ligne, c’est sa boucle de revue IA.</figcaption>
</figure>

## Enseigner le curriculum caché

Hilton écrit sur un Substack avec des collègues, [The Last Software Engineer?](https://thelastsoftwareengineer.substack.com/), et son dernier billet porte sur le curriculum caché : les compétences que personne n’enseignait parce que tout le monde les absorbait en chemin. Le goût. Le jugement d’ingénieur. Savoir à quoi accorder de l’importance. L’IA les met à nu, et il pense qu’il faut désormais les enseigner directement, alors qu’elles venaient avant au fil de décennies passées à écrire du code. Il cite Lénine : il y a des décennies où rien ne se passe, et des semaines où des décennies se produisent. L’informatique en est aux semaines.

C’est son argument pour un préceptorat plutôt que d’attendre que les programmes rattrapent leur retard : quelqu’un d’expérimenté, à côté du nouvel ingénieur, maintenant. Il n’a rien d’un catastrophiste. Plus de gens que jamais vont résoudre plus de problèmes avec du logiciel, et il s’attend à ce que la génération de Julia fasse plus avec ces outils que la sienne en vingt ans.

Le récit de Julia est moins net, et c’est pour ça que j’y crois. Quand elle a été inscrite, elle s’est dit : mais qu’est-ce qui se passe, je suis déjà bien assez occupée. Le bénéfice est venu ensuite. Avant PRAISE, elle n’avait rien à dire à l’ingénieur principal de son équipe, parce que ses tickets étaient superficiels et ne touchaient jamais à ce qu’il savait. Aujourd’hui, elle a toujours des tête-à-tête avec lui, et le temps qu’il lui consacre compte plus pour elle que tout le reste.

<figure class="fd-fig ps-ship" aria-labelledby="ps8-cap" data-desc="Ce que livre chaque rôle. Un ingénieur senior livre du code : une pile de pull requests à son nom. Un précepteur livre des seniors : un préceptoré qui devient ingénieur senior. En dessous, Julia avant et après PRAISE. Avant, elle n’avait rien à dire à l’ingénieur principal de son équipe, parce que ses tickets étaient superficiels et ne touchaient jamais à ce qu’il savait. Après, elle a toujours des tête-à-tête avec lui et met le temps qu’il lui consacre au-dessus de tout le reste. La phrase de clôture de Scott : le travail d’un ingénieur senior, c’est de livrer, mais celui d’un précepteur, c’est de livrer des seniors.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">Le travail d’un ingénieur senior</p>
<p class="mp-two-name">Livrer du code</p>
<div class="ps-stack" aria-hidden="true"><i>PR</i><i>PR</i><i>PR</i><i>PR</i></div>
<p class="mp-two-line">Des pull requests, à son nom</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">Le travail d’un précepteur</p>
<p class="mp-two-name">Livrer des seniors</p>
<div class="ps-grow" aria-hidden="true"><div class="ps-person ps-person-s"><svg class="ps-figure" viewBox="0 0 48 56"><circle cx="24" cy="14" r="11"/><path d="M6,56 V40 Q6,28 18,28 H30 Q42,28 42,40 V56 Z"/></svg><b class="ps-badge">Préceptoré</b></div><span class="ps-arrow">→</span><div class="ps-person ps-person-l ps-person-p"><svg class="ps-figure" viewBox="0 0 48 56"><circle cx="24" cy="14" r="11"/><path d="M6,56 V40 Q6,28 18,28 H30 Q42,28 42,40 V56 Z"/></svg><b class="ps-badge ps-badge-on">Senior</b></div></div>
<p class="mp-two-line">Le code s’écrit de toute façon. La relève restera-t-elle ?</p>
</div>
</div>
<div class="rp-pair">
<p><span class="rp-k">Julia, avant PRAISE</span>Rien à dire à l’ingénieur principal de son équipe : des tickets superficiels, loin de ce qu’il savait</p>
<p><span class="rp-k">Après</span>Toujours des tête-à-tête avec lui, et le temps qu’il lui consacre passe avant tout</p>
</div>
<p class="mp-strip"><b>Scott</b><span>« Le travail d’un ingénieur senior, c’est de livrer, mais celui d’un précepteur, c’est de livrer des seniors. »</span></p>
<figcaption id="ps8-cap">Les deux métiers de Scott, puis l’avant et l’après de Julia, avec ses mots.</figcaption>
</figure>

## Essayez

Côté CMU, c’est un certificat. À l’automne, Machine Learning in Production et Preceptorship in AI-Augmented Software Engineering I. Au printemps, DevOps : Engineering for Secure Development and Deployment et la seconde moitié du parcours de préceptorat. Le tout compte pour un master en génie logiciel. Côté Microsoft, c’est le précepteur, les labs hebdomadaires et les tête-à-tête.

Deux réserves honnêtes. C’est le récit d’une seule préceptorée, sur la chaîne de Microsoft elle-même, et personne dans la conversation ne donne de chiffre : pas de taille de promotion, pas de taux de rétention, rien de mesuré pour l’instant. Ce que la conversation donne, en revanche, c’est une forme que vous pouvez reproduire sans passer par l’une ou l’autre institution.

<figure class="fd-fig ps-shape" aria-labelledby="ps9-cap" data-desc="La forme de PRAISE en quatre parties, d’après la conversation et l’annonce de CMU. Un : un binôme, un ingénieur en début de carrière chez Microsoft et un senior qui prend l’étiquette de précepteur. Deux : un lab IA structuré lance chaque semaine la conversation, et des tête-à-tête prennent le relais. Trois : à l’automne, deux cours de Carnegie Mellon, Machine Learning in Production et Preceptorship in AI-Augmented Software Engineering I. Quatre : au printemps, DevOps : Engineering for Secure Development and Deployment et la seconde moitié du préceptorat, le tout validable dans un master en génie logiciel. Non précisés : la taille de la promotion, la durée du binôme, tout résultat mesuré.">
<ol class="rp-steps">
<li><p class="rp-step-n"><b>01</b>Un binôme</p><p class="rp-step-s">Un ingénieur débutant chez Microsoft et un senior qui prend l’étiquette de précepteur</p></li>
<li><p class="rp-step-n"><b>02</b>Un lab par semaine</p><p class="rp-step-s">Des labs IA structurés lancent chaque conversation ; les tête-à-tête prennent le relais</p></li>
<li><p class="rp-step-n"><b>03</b>L’automne à CMU</p><p class="rp-step-s">Machine Learning in Production, et Preceptorship in AI-Augmented Software Engineering I</p></li>
<li><p class="rp-step-n"><b>04</b>Le printemps à CMU</p><p class="rp-step-s">DevOps : Engineering for Secure Development and Deployment, et Preceptorship II</p></li>
</ol>
<p class="mp-strip"><b>Non précisé</b><span>Taille de la promotion, durée du binôme, tout résultat mesuré.</span></p>
<figcaption id="ps9-cap">Les deux moitiés : des personnes chez Microsoft, des cours à CMU. Les étapes un et deux se passent d’université.</figcaption>
</figure>

Pour aller plus loin :

- [PRAISE : Preceptorship for AI-accelerated Software Engineering](https://www.youtube.com/watch?v=BglzGRnH8Zg), la conversation, 35 minutes
- [Le billet de The Command Line](https://commandline.microsoft.com/praise-preceptor-ai-accelerated-software-engineering-cmu/) signé Mark Russinovich et Scott Hanselman, l’article auquel Scott fait référence
- [L’annonce de CMU](https://www.cs.cmu.edu/news/2026/microsoft-cmu-praise) du certificat et de ses quatre cours
- [« You’re a Computer Science Major. Don’t Panic. »](https://s3d.cmu.edu/news/2025/1112-shaw-hilton-nyt.html), la tribune de Mary Shaw et Michael Hilton, sur le site de CMU
- [The Last Software Engineer?](https://thelastsoftwareengineer.substack.com/), le Substack de Hilton et de ses collègues
- [Ne soyez pas le meat proxy de votre équipe](/fr/notes/dont-be-your-teams-meat-proxy.html), le même terme, vu du côté de Peter Steinberger
- [Relisez le plan, pas la pull request](/fr/notes/review-the-plan-not-the-pull-request.html), la réponse d’une équipe au goulot de la relecture

Si vous êtes le senior d’une équipe, prenez l’étiquette pendant un trimestre. Un lab par semaine, leurs questions, votre première étape à voix haute. Dites-moi quelles questions du junior laissent l’agent sans réponse.
