The Missing Rungs
When production stops teaching by accident
A junior engineer asks an agent to add an endpoint that pauses a subscription.
The agent finds the route, changes the service, adds tests, and fixes a type error. An hour later, the candidate is ready for review.
The junior may understand every choice. They may also approve the diff without tracing how a request moves through the system. The output alone does not tell us which.
The Work Moved argued that manual coding needs no moral quota, but understanding needs proof. For junior engineers, that raises a harder question: who builds the understanding in the first place?
An earlier essay, Cognitive Debt, named the gap between what a system does and what its team understands. The apprenticeship problem begins before that gap reaches the team. It begins when a new engineer can produce convincing work without the contact that once helped form a mental model.
Agents did not remove the possibility of learning. They removed some compulsory contact with the system. The ladder still exists. Its first rungs no longer appear by accident.
Production was the classroom
In many teams, production and training shared the same work.
A junior fixed a small bug, added a field, or wrote a test because the team needed the result. A senior reviewed the change because the code needed review. The company paid for output and received the raw material for apprenticeship: repeated contact, feedback, and increasing responsibility.
The task alone did not produce understanding. It created occasions to build it.
A broken fixture revealed how tests construct the world. A confusing stack trace forced the junior to follow a call path. A rejected review exposed a boundary that no onboarding document had explained. Production supplied concrete questions and real consequences.
Manual work never guaranteed learning. Juniors could copy patterns, satisfy reviewers, and ship code they barely understood. Agents do not create that failure. They make it easier to miss because they remove the contact that once happened by default.
Working software never proved comprehension. Agent-produced software makes it an even weaker proxy.
Route work on two axes
Two Lanes argued that safe, bounded tasks should flow through agents without human ceremony. That remains the right production rule. It is incomplete as a training rule.
A task can carry little production risk and high learning value. Adding a field to an API may be safe to automate and useful for someone who has never traced that API from request to storage.
Route the task twice. Production risk decides how much automation and review the change needs. The engineer’s familiarity decides which learning loop to add: prediction, explanation, debugging, or direct implementation.
This avoids two tempting defaults. Banning agents preserves an old method but leaves juniors unprepared for the real workflow. Unrestricted delegation preserves output but can remove the lesson. The goal is neither manual purity nor maximum automation. It is increasing independence.
The tool stays. The learning loop becomes deliberate.
Test for transfer
Comprehension checks should test transfer, not recitation.
Before the agent starts, ask the learner to record which components the change will touch, where the risk sits, and what should happen. After the agent finishes, ask what the tests establish and what they leave untested. Change one assumption, then revisit the idea after the transcript has gone cold.
Then break something.
Remove a fixture. Reverse a condition. Make the dependency time out. Ask what should happen before running the system. Prediction exposes a mental model; an unfamiliar variation shows whether it transfers.
This should not become an oral exam attached to every ticket. Use it when the work introduces a boundary, data model, failure mode, or operational risk. Once the pattern is familiar, repetitive syntax can flow through the agent.
The standard is orientation. Can the engineer locate the behavior, predict the result, choose useful evidence, and recover when the prediction fails?
Use the agent as a practice environment
The same tool that weakens accidental apprenticeship can support deliberate practice.
An agent can explain a code path without impatience, compare two designs, generate examples, and answer the question a junior feels embarrassed to ask in a crowded channel. It can adapt the explanation, quiz the engineer, and construct a smaller exercise around a missed idea.
It can also teach the wrong model with perfect confidence. Availability is the agent’s advantage; correctness still requires evidence.
Use a fresh context for tutoring. Ask the agent to withhold the solution, ask questions, and ground each explanation in code, tests, logs, or execution. Let it generate a broken implementation for the learner to diagnose. Check foundational claims and critical boundaries against a senior engineer or a canonical document.
The agent can supply endless practice. Evidence must remain the teacher.
Build the rungs
Progress should become visible:
Map the path and predict the behavior.
Explain the evidence and its limits.
Modify an unfamiliar assumption.
Diagnose a seeded failure.
Own a bounded rollout and observe it.
Direct and verify delegated work.
Match the rung to familiarity, not title. A senior engineer entering a new domain may start near the bottom. A junior who owns a small component may climb higher there.
Small-component ownership lets decisions accumulate into a mental model. Incident replays and sanitized production bugs add consequences without turning an active outage into a classroom.
Pay for apprenticeship
The old arrangement subsidized training because junior output still had production value. Agents change that accounting. Deliberate practice can become a larger net expense, and a company may respond by hiring fewer juniors.
That choice saves money now but can weaken the future supply of senior engineers who understand the company. Deliberate apprenticeship supports succession, incident resilience, retention, and judgment rooted in the actual system.
Make the cost explicit. Treat mentoring as planned work, reserve learning capacity, and measure progress by increasing independence rather than ticket volume.
Preserve the understanding
Foundational skill does not mean memorizing every API or refusing autocomplete. It means understanding state, data flow, boundaries, failure, and evidence well enough to notice when a plausible answer cannot be right.
Some old exercises should disappear. Some direct implementation will remain the fastest path to fluency. Preserve the lesson according to the system someone must understand, not the ritual that once delivered it.
Agents can help people climb faster. They cannot remove the need for something firm beneath each step.
The old rungs no longer appear by accident. Build better ones on purpose.


