---
title: A preceptor's job is to ship seniors
description: Microsoft and Carnegie Mellon expect AI to collapse the early-career pipeline, and built PRAISE to stop it. The new label goes on the senior, a word borrowed from nursing, not on the junior. Notes on Scott Hanselman's conversation with Dr. Michael Hilton and Julia Gao, who hand-wrote a tool as an intern and now reviews what agents write.
date: 2026-10-16
tags: AI coding agents, software engineering, junior engineers, education
---

A senior engineer's job is to ship. A preceptor's job is to ship seniors. That's Scott Hanselman's line for PRAISE, the program he and Azure CTO Mark Russinovich started at Microsoft because they expect AI to collapse the early-career pipeline: if leadership believes an agent can do the junior's work, companies stop hiring juniors. Their fix doesn't relabel the junior. It relabels the senior, with a word borrowed from nursing, and pairs the two over weekly AI labs, with Carnegie Mellon courses alongside.

The conversation is [PRAISE: Preceptorship for AI-accelerated Software Engineering](https://www.youtube.com/watch?v=BglzGRnH8Zg), 35 minutes on the Microsoft Developer channel, published on October 15. Scott hosts. Dr. Michael Hilton teaches software engineering at Carnegie Mellon and runs education for its Software and Societal Systems Department. Julia Gao is a software engineer on Scott's team, a 2024 Microsoft intern who went through PRAISE as a preceptee. The term meat proxy, from my [note on Peter Steinberger's talk](/notes/dont-be-your-teams-meat-proxy.html), comes up again here, from the other side.

## Someone on campus is vibing their degree

Hilton dates the breaking point for academia precisely: the moment AI could complete his homework in one shot. He teaches an upper-division software engineering course, and somewhere between the fall 2025 and spring 2026 semesters it could do every assignment. Students no longer had to think. They could copy and paste.

Julia saw the same thing from the other side of the desk. ChatGPT came out in her sophomore year and wasn't good, so nobody she knew used it until junior year. Then it got good quickly, and professors started asking for a line on each assignment saying where AI was used.

Scott's opener when he trains university teachers: somewhere on campus right now, someone is vibing their degree, and we need to decide if we're okay with that.

Hilton's answer is that this exposes an old weak point. Instructors relied on an assigned exercise having two outcomes: you skip it or you work it out. Now there's a third, the easy button, so the job includes convincing students the work matters. What he hears from students, dozens or hundreds of times, whenever they think they're being honest: "I don't use AI for things I care about. I use AI for the parts of college I don't care about."

<figure class="fd-fig ps-doors" aria-labelledby="ps1-cap" data-desc="What a student can do with an assigned exercise. For years there were two outcomes: skip it, or work it out. Since AI could complete the homework in one shot, somewhere between the fall 2025 and spring 2026 semesters, there is a third: the easy button, copy and paste. Under it, Julia's timeline: ChatGPT arrived in her sophomore year and wasn't good; by junior year it was good and professors asked for a line on each assignment saying where AI was used; then Hilton's upper-division homework fell in one shot. The students' own line, which Hilton has heard dozens or hundreds of times: I don't use AI for things I care about. I use AI for the parts of college I don't care about.">
<ol class="ps-ways" aria-label="What a student can do with assigned work">
<li><span class="ps-way-n">1</span><b>Skip it</b><span>The old first way</span></li>
<li><span class="ps-way-n">2</span><b>Work it out</b><span>The old second way</span></li>
<li class="ps-way-new"><span class="ps-way-n">3</span><b>Press the easy button</b><span>New since AI could do the homework in one shot</span></li>
</ol>
<ol class="ps-tl" aria-label="Julia's degree, then Hilton's breaking point">
<li><b>Sophomore</b><span>ChatGPT comes out. "It wasn't that good."</span></li>
<li><b>Junior</b><span>Good enough that people use it. Assignments get an "AI was used" line.</span></li>
<li class="ps-tl-now"><b>Fall 2025 to spring 2026</b><span>Hilton's upper-division homework falls in one shot.</span></li>
</ol>
<p class="mp-strip"><b>Students</b><span>"I don't use AI for things I care about. I use AI for the parts of college I don't care about."</span></p>
<figcaption id="ps1-cap">Two ways became three. The timeline is Julia's degree as she told it, then Hilton's breaking point.</figcaption>
</figure>

## Send a robot to lift your weights

Scott's word for what the easy button does to you is atrophied. Muscles grow from time under tension. Send a robot to the gym to lift the weights for you and, asked whether they got lifted, you can honestly say yes. You didn't get stronger.

Hilton put that analogy to his class and offered bonus points for a better one. A bunch of students independently landed on the same picture: a cooking class where you order DoorDash and hand in the plate.

Julia's own use is the version both of them want. She did the problem sets herself, to learn the fundamentals. Once she had a simple implementation working, she asked AI for other ways it could have been done, and when the teacher's solution differed from hers, she asked it to explain the difference. AI as an information source, never as the thing that completes the set.

Then Scott brings up the meat proxy: I ask you a thing, you ask the bot, the bot tells you, you tell me what the bot said. If your job is turning into pressing OK, that's when to worry, because pressing OK isn't a job.

<figure class="fd-fig ps-gym" aria-labelledby="ps2-cap" data-desc="Two analogies for using AI to get through work you don't care about. Scott's: muscles grow from time under tension; send a robot to lift the weights for you and they get lifted, but you don't get stronger. The students': go to a cooking class and order DoorDash to hand in as your dish. Then Julia's own loop in three steps: solve the problem set yourself, ask AI for other ways it could have been implemented, and when the teacher's answer differs, ask it to explain the difference. Scott's line: pressing OK isn't a job.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">Scott's analogy</p>
<p class="mp-two-name">The gym</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">Time under tension is how muscles grow</p>
<p class="mp-two-line">Send a robot: the weights got lifted, you didn't get stronger</p>
</div>
<p class="mp-two-vs">and</p>
<div class="mp-two-card">
<p class="mp-two-who">The students' analogy</p>
<p class="mp-two-name">The cooking class</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">Order DoorDash, hand in the plate</p>
<p class="mp-two-line">Nobody learns to cook</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>Solve it yourself</p><p class="mp-trio-what">The problem set, for the fundamentals</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>Ask for other ways</p><p class="mp-trio-what">Once a simple version works, how else could it be built?</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>Compare answers</p><p class="mp-trio-what">When the teacher's solution differs, ask why</p></li>
</ol>
<p class="mp-strip"><b>Scott</b><span>Pressing OK isn't a job.</span></p>
<figcaption id="ps2-cap">The two analogies, then how Julia actually used it: the set herself, the model for everything around it.</figcaption>
</figure>

## A nurse's word for the senior's new job

PRAISE stands for Preceptorship for AI-accelerated Software Engineering. The premise of the paper Scott and Russinovich wrote is that interns and apprentices arrive at minus one: thrown into a gauntlet of senior engineers and told to dig themselves out.

Most programs respond by giving the new person a label: intern, apprentice, junior. PRAISE gives the senior one instead. In nursing, a preceptor is a trained trainer whose job in the hospital, on top of giving good care, is to make new senior nurses. The label tells the senior their job has changed.

Scott is honest about why. He has been a mentor, and he wasn't a good one, because his mentorship was a weekly lecture from an old person. The young person left thinking they could get that from their dad.

Julia's preceptorship ran on structured AI labs, one each week, as a starting point for the conversation. The lab gave her something concrete she had just done. Then she could ask her preceptor how he would have approached it, from his first step, and why he would build a project this way and not that way. She now applies his way of attacking a problem to her daily work, "instead of just listening to what AI does".

Hilton, who claims an academic's licence to be a pedant, says the specific word doesn't matter. What matters is that it was chosen with intent, to say this isn't a standard internship. If it's going to be different, call it something different. His Eisenhower quote: plans are nothing, planning is everything.

<figure class="fd-fig ps-label" aria-labelledby="ps3-cap" data-desc="Who gets the label. In a mentorship or internship, the label goes on the new person: intern, apprentice, junior, brought in at minus one and told to dig out; the senior stays a senior engineer, and the mentoring is a weekly lecture from an old person. In PRAISE, the label goes on the senior: preceptor, a word from nursing for a trained trainer whose job is to make new senior nurses; the new person is a preceptee. Each week a structured AI lab starts the conversation, and the preceptee asks how the preceptor would approach it, from the first step, and why. Hilton's point: the word itself doesn't matter, choosing it with intent does. Plans are nothing, planning is everything.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">Mentorship</p>
<p class="mp-two-name">The label is on the 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">Intern</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">Senior engineer</b></div></div>
<p class="mp-two-line">Brought in at minus one, told to dig out</p>
<p class="mp-two-line">"A weekly lecture from an old person"</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">Preceptorship</p>
<p class="mp-two-name">The label is on the 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">Preceptee</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">Preceptor</b></div></div>
<p class="mp-two-line">A nurse's word: a trained trainer who makes new seniors</p>
<p class="mp-two-line">A weekly AI lab, then "how would you approach it?"</p>
</div>
</div>
<p class="mp-strip"><b>Hilton</b><span>The word doesn't matter. Choosing it on purpose does. "Plans are nothing, planning is everything."</span></p>
<figcaption id="ps3-cap">Same two people, the label moved. The badge is the point of the program.</figcaption>
</figure>

## The intern wrote the tool. Now the agents do.

Julia's 2024 internship was a command line tool, written by hand: it updated a few files, opened a pull request and completed it once a user approved. AI sat on the side for syntax, because she was learning C# and already knew Java. How do I define this class here? The design and logic were hers, reviewed by the whole team before she typed.

Back full time, she says the introduction of Claude Opus this year changed everything. Her team runs multi-agent workflows for all of its coding, including the kind of thing she automated as an intern. Scott's summary: so you're a reviewer now. Hers: you need to understand the logic, have the code written for you, understand how it fits the broader context, and take responsibility, because you're the one shipping it.

Scott's version of that responsibility: the pull request is in your name. It says Copilot on behalf of Julia, and when it goes bad, she gets the phone call.

The new stress is context switching. With four or five agents running at once, each on a different part of the work item, she has to switch between them, and she counts that as a skill the whole profession still has to grow.

<figure class="fd-fig ps-then" aria-labelledby="ps4-cap" data-desc="Julia's work then and now. In her 2024 internship she hand-wrote a command line tool that updated files, opened a pull request and completed it once a user approved; the design and logic were hers and reviewed by the team first, and AI only answered syntax questions while she learned C sharp. Now, full time, four or five agents write the code in multi-agent workflows while she reads it, validates it against the work item, ships it and switches between them; the pull request says Copilot on behalf of Julia, and when it goes bad she gets the phone call.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">2024, intern</p>
<p class="mp-two-name">She writes, AI answers syntax</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">types the command line tool</span></p>
<p class="ps-lane"><span class="ps-lane-who">AI</span><i class="ps-lane-bar ps-lane-thin"></i><span class="ps-lane-what">"How do I define this class in C#?"</span></p>
</div>
<p class="mp-two-line">Design and logic hers, reviewed by the team first</p>
<p class="mp-two-line">The tool updated files, opened a PR, completed it on approval</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">2026, full time</p>
<p class="mp-two-name">Agents write, she reviews</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">reads, validates, ships, switches</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">Four or five agents at once, each on a different part of the work item</p>
</div>
</div>
<p class="mp-strip"><b>Scott</b><span>The PR is in your name. When it goes bad, you get the phone call.</span></p>
<figcaption id="ps4-cap">Her internship against her job now, as she described them. The bars are schematic: she gave no hours.</figcaption>
</figure>

## Across the street or to the moon

Scott asks the question directly: if the thing can just do it, what's deep understanding for? Hilton's first answer is that anyone who claims to know, as of today, is lying. His second is that the context decides. To take an Uber to the airport, you don't need to know how an engine works. To be the principal engineer of a Formula 1 team, you do, even if you never build one. A script that updates a file a few times: check the file and move on. Infrastructure that millions of people will use: understand it before you ship.

He borrows a baseball statistic, value over replacement, and asks what a student's value over replacement is against AI. If all you can do is write a prompt that describes a task, the model can write that code, and you're in trouble. A prompt doesn't carry the context: are we sending this packet across the street or to the moon? Validation, performance and security all depend on which, and knowing what matters here is the human part.

Scott points out that everyone in the room keeps using the word context for two different things. There's the model's context window, and there's the context the solution lives in. A million-token window doesn't know what Julia knows about Microsoft.

Julia makes it concrete. A product is several repos and a lot of moving parts. AI is very good at solving one problem in one repo. It doesn't situate itself across the whole system, so it fixes the thing and breaks something elsewhere. Her preceptor is the one who tells her where her feature sits in the product. Scott quotes a line he can't source: AI easily writes features, but it doesn't easily write architectures.

<figure class="fd-fig ps-depth" aria-labelledby="ps5-cap" data-desc="How deep you need to understand, on a scale from Hilton's examples. At the shallow end: an Uber to the airport, or a script that updates a file a few times, where you check the file and move on. At the deep end: the principal engineer of a Formula 1 team, or infrastructure millions of people use, where you understand it before you ship. Under it, the two meanings of context. The context window: a million tokens, one problem in one repo, which AI solves very well but which doesn't know what Julia knows about Microsoft. The context the solution lives in: several repos, the whole product, whether the packet goes across the street or to the moon, and what validation, performance and security that calls for, which a prompt doesn't carry and a preceptor does. The line Scott quotes: AI easily writes features, it doesn't easily write architectures.">
<div class="ps-scale">
<p class="ps-scale-h">How deep you need to go</p>
<div class="ps-scale-bar" aria-hidden="true"><i class="ps-scale-cur"></i></div>
<p class="ps-scale-ends"><span><b>Shallow</b>An Uber to the airport. A script that updates a file: check the file, move on.</span><span><b>Deep</b>Principal engineer, Formula 1. Infrastructure millions use: understand it before you ship.</span></p>
</div>
<div class="mp-two-row">
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">Context, meaning one</p>
<p class="mp-two-name">The context window</p>
<p class="ps-win"><span class="ps-win-n">A million tokens</span><span class="ps-win-box">one problem, one repo</span></p>
<p class="mp-two-line">Solves it very well</p>
<p class="mp-two-line">Doesn't know what Julia knows about Microsoft</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card">
<p class="mp-two-who">Context, meaning two</p>
<p class="mp-two-name">Where the solution lives</p>
<p class="ps-repos"><span>repo</span><span>repo</span><span class="ps-repo-you">your feature</span><span>repo</span><span>repo</span><span>repo</span></p>
<p class="mp-two-line">Across the street, or to the moon? Validation, performance and security follow</p>
<p class="mp-two-line">A prompt doesn't carry it. A preceptor does</p>
</div>
</div>
<p class="mp-strip"><b>Quoted by Scott</b><span>AI easily writes features. It doesn't easily write architectures.</span></p>
<figcaption id="ps5-cap">Hilton's scale, then Scott's two contexts. The marker on the bar keeps moving because the answer moves with the task.</figcaption>
</figure>

## Civil engineers don't mix concrete

Hilton and Mary Shaw published a New York Times op-ed in November 2025, "You're a Computer Science Major. Don't Panic." Almost a year on, Scott asks if it holds up. Hilton says yes, and sharpens it: there's a difference between computer science and software engineering, and between engineering software and writing code. Civil engineers don't mix concrete or pour bridges. They design a bridge that holds up under traffic and doesn't become the Tacoma Narrows. Software engineers were always coders only because there was no way to distance themselves from the raw material.

The line I'll keep: as the cost of writing code approaches zero, the cost of the engineering that makes sure the problem is solved properly is not approaching zero at all. Are we building the right thing, on time, on budget, for this audience, with the right security, usability, evolvability and architecture? Those questions now take more of the day, because nobody is typing the lines.

The part of the op-ed he stands by most is that reading, critiquing and understanding code is a separate skill from writing it. Education assumed you'd pick it up on the way, by writing. His son read The Odyssey in high school, critiqued it and wrote a paper about it. Nobody asked him to write an epic poem. Scott notes there are poetry appreciation classes and no code appreciation classes: every course starts with a for loop and expects you to come out writing Linux.

CMU is moving. In the intro course his daughter takes as a freshman, most assignments are PDFs: Parsons problems, where the code is given out of order and you put it right, and comprehension questions. More reading than writing. He's also candid that classes can't change at the speed the frontier labs ship, so there's a lag between seeing a problem and fixing the syllabus.

<figure class="fd-fig ps-cost" aria-labelledby="ps6-cap" data-desc="Hilton's two costs, drawn as a schematic: the cost of writing code falls toward zero, while the cost of the engineering that makes sure the problem is solved properly stays flat. Under it, what his son was asked to do with The Odyssey: read it, critique it, write a paper about it, and never write an epic poem; reading and critiquing code is the same kind of separate skill. Then a Parsons problem, the format used in CMU's intro course: four lines of a function given out of order, and the student puts them in the right order without writing any. The lines are my example of the format, not one of CMU's.">
<div class="ps-chart" role="img" aria-label="Schematic: over time, the cost of writing code falls toward zero while the cost of the engineering stays flat">
<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">The engineering: is the problem solved properly?</span><span class="ps-key-code">Writing the code</span><span class="ps-key-x">cost, over time</span></p>
</div>
<div class="ps-ody">
<p class="ps-ody-h">The Odyssey, in high school</p>
<p class="ps-ody-row"><span class="ps-ok">Read it</span><span class="ps-ok">Critique it</span><span class="ps-ok">Write a paper</span><span class="ps-no">Write an epic poem</span></p>
</div>
<div class="ps-parsons">
<p class="ps-ody-h">A Parsons problem, the intro-course format</p>
<ol class="ps-par" aria-label="Four lines given out of order; the badge is the right 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">The chart is schematic: he gave the direction, not numbers. The Parsons lines are my example of the format, not one of CMU's.</figcaption>
</figure>

## Differently slow

Scott on his own day: he used to be the slow part, the coding. Now he's differently slow. Reading the code and waiting for the build are the two things that take the time.

Julia's list is longer. Reading and understanding what the agent wrote. Validating that the change matches the work item, which holds for a small change and sometimes not for a bigger one with more logic. Builds. And AI review, which now runs on their pull requests: each comment is a decision, because addressing one can change a bunch more files and widen the scope, and then she's telling it to revert what it just did. The coding isn't what takes the time now. Getting that code ready for production is.

That's the bottleneck Overmind attacked in my [review the plan note](/notes/review-the-plan-not-the-pull-request.html), and the queue my own [software factory](/notes/software-factory-2022-to-lights-off.html) stalls on. Three notes on this site now end at the same wall.

<figure class="fd-fig ps-slow" aria-labelledby="ps7-cap" data-desc="Where the day goes, as a schematic with no durations. Before: the coding was the slow part, with a little thinking, a build and a review around it. Now, differently slow: a short prompt, the agents writing, then reading what they wrote, validating it against the work item, waiting for the build, and triaging the AI review comments. Under it, Julia's review-comment loop in four steps: an AI review comment lands on the pull request, she has the agent address it, a bunch more files change and the scope widens, and she tells it to revert what it just did.">
<div class="ps-day">
<p class="ps-day-label"><b>Before</b>the coding was the slow part</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>think</span><span><i class="ps-seg-type"></i>type the code</span><span><i class="ps-seg-wait"></i>build</span><span><i class="ps-seg-me"></i>review</span></p>
<p class="ps-day-label"><b>Now</b>differently slow</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>agents write</span><span><i class="ps-seg-me"></i>read what they wrote</span><span><i class="ps-seg-me"></i>validate against the work item</span><span><i class="ps-seg-wait"></i>wait for the build</span><span><i class="ps-seg-me"></i>triage AI review comments</span></p>
</div>
<ol class="ps-revert">
<li><b>1</b>An AI review comment lands on the PR</li>
<li><b>2</b>She has the agent address it</li>
<li><b>3</b>A bunch more files change, the scope widens</li>
<li class="ps-revert-stop"><b>4</b>"Wait, wait, wait. Revert what you just did."</li>
</ol>
<figcaption id="ps7-cap">Schematic: Scott and Julia named the slow parts, not their lengths. Yellow is your attention, blue is the agents'. The second row is her AI-review loop.</figcaption>
</figure>

## Teach the hidden curriculum

Hilton writes on a Substack with colleagues, [The Last Software Engineer?](https://thelastsoftwareengineer.substack.com/), and his latest post there is about the hidden curriculum: the skills nobody taught because everyone absorbed them along the way. Taste. Engineering judgment. Knowing what to care about. AI is exposing those, and he thinks they now have to be taught directly, when they used to arrive over decades of writing code. He quotes Lenin: there are decades where nothing happens, and weeks when decades happen. Computer science is in the weeks.

That's his case for a preceptorship over waiting for the curriculum to catch up: someone experienced, next to the new engineer, now. He's not a doomer about it. More people will solve more problems with software than ever, and he expects Julia's generation to do more with these tools than his did in twenty years.

Julia's own account is less tidy, which is why I believe it. When she was enrolled she thought, what is happening, I'm already busy enough. The benefit showed up afterwards. Before PRAISE she had nothing to say to the principal engineer on her team, because her work items were shallow and never touched what he knew. Now she still has one-on-ones with him, and she rates his time above everything else she gets.

<figure class="fd-fig ps-ship" aria-labelledby="ps8-cap" data-desc="What each role ships. A senior engineer ships code: a stack of pull requests in their name. A preceptor ships seniors: a preceptee who grows into a senior engineer. Under it, Julia before and after PRAISE. Before, she had nothing to say to the principal engineer on her team, because her work items were shallow and never touched what he knew. After, she still has one-on-ones with him and rates his time above everything else she gets. Scott's closing line: a senior engineer's job is to ship, but a preceptor's job is to ship seniors.">
<div class="mp-two-row">
<div class="mp-two-card">
<p class="mp-two-who">A senior engineer's job</p>
<p class="mp-two-name">Ship 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">Pull requests, in their name</p>
</div>
<p class="mp-two-vs">vs</p>
<div class="mp-two-card mp-two-peter">
<p class="mp-two-who">A preceptor's job</p>
<p class="mp-two-name">Ship 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">Preceptee</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">The code gets written either way. Will they stick around?</p>
</div>
</div>
<div class="rp-pair">
<p><span class="rp-k">Julia, before PRAISE</span>Nothing to say to the principal on her team: shallow work items that never touched what he knew</p>
<p><span class="rp-k">After</span>Still has one-on-ones with him, and rates his time above everything else she gets</p>
</div>
<p class="mp-strip"><b>Scott</b><span>"A senior engineer's job is to ship, but a preceptor's job is to ship seniors."</span></p>
<figcaption id="ps8-cap">Scott's two jobs, then Julia's before and after in her own words.</figcaption>
</figure>

## Try it

The CMU half is a certificate. In the fall, Machine Learning in Production and Preceptorship in AI-Augmented Software Engineering I. In the spring, DevOps: Engineering for Secure Development and Deployment and the second half of the preceptorship sequence. All of it counts toward a software engineering master's. The Microsoft half is the preceptor, the weekly labs and the one-on-ones.

Two honest caveats. This is one preceptee's account on Microsoft's own channel, and nobody in the conversation gives a number: no cohort size, no retention figure, nothing measured yet. What it does give is a shape you can copy without either institution.

<figure class="fd-fig ps-shape" aria-labelledby="ps9-cap" data-desc="The shape of PRAISE in four parts, from the conversation and CMU's announcement. One: a pair, an early-career engineer at Microsoft and a senior who takes the preceptor label. Two: a structured AI lab each week starts the conversation, and one-on-ones carry on after. Three: in the fall, two Carnegie Mellon courses, Machine Learning in Production and Preceptorship in AI-Augmented Software Engineering I. Four: in the spring, DevOps: Engineering for Secure Development and Deployment and the second half of the preceptorship, all creditable toward a software engineering master's. Not given: the cohort size, the length of the pairing, any measured result.">
<ol class="rp-steps">
<li><p class="rp-step-n"><b>01</b>A pair</p><p class="rp-step-s">An early-career engineer at Microsoft and a senior who takes the preceptor label</p></li>
<li><p class="rp-step-n"><b>02</b>A lab a week</p><p class="rp-step-s">Structured AI labs start each conversation; one-on-ones carry on after</p></li>
<li><p class="rp-step-n"><b>03</b>Fall at CMU</p><p class="rp-step-s">Machine Learning in Production, and Preceptorship in AI-Augmented Software Engineering I</p></li>
<li><p class="rp-step-n"><b>04</b>Spring at CMU</p><p class="rp-step-s">DevOps: Engineering for Secure Development and Deployment, and Preceptorship II</p></li>
</ol>
<p class="mp-strip"><b>Not given</b><span>Cohort size, the length of the pairing, any measured result.</span></p>
<figcaption id="ps9-cap">The two halves: people at Microsoft, courses at CMU. Steps one and two need no university.</figcaption>
</figure>

If you want more:

- [PRAISE: Preceptorship for AI-accelerated Software Engineering](https://www.youtube.com/watch?v=BglzGRnH8Zg), the conversation, 35 minutes
- [The Command Line post](https://commandline.microsoft.com/praise-preceptor-ai-accelerated-software-engineering-cmu/) by Mark Russinovich and Scott Hanselman, the paper Scott refers to
- [CMU's announcement](https://www.cs.cmu.edu/news/2026/microsoft-cmu-praise) of the certificate and its four courses
- ["You're a Computer Science Major. Don't Panic."](https://s3d.cmu.edu/news/2025/1112-shaw-hilton-nyt.html), the op-ed by Mary Shaw and Michael Hilton, via CMU
- [The Last Software Engineer?](https://thelastsoftwareengineer.substack.com/), Hilton's Substack with colleagues
- [Don't be your team's meat proxy](/notes/dont-be-your-teams-meat-proxy.html), the same term from Peter Steinberger's side
- [Review the plan, not the pull request](/notes/review-the-plan-not-the-pull-request.html), one team's answer to the reading bottleneck

If you're the senior on a team, take the label for a quarter. One lab a week, their questions, your first step out loud. Tell me what the junior asks that the agent can't answer.
