A senior engineer with a coding agent gets faster at the things they already know how to do. A junior engineer with the same agent, given the same freedom, can go a long way without ever learning why the code works, and that is a different and worse outcome.
The asymmetry
A senior engineer reviewing a generated diff is checking it against years of intuition about what tends to go wrong. They can spot a plausible-looking mistake because they have made similar mistakes themselves, slowly, the hard way, at some point in the past. A junior engineer reviewing the same diff has no equivalent intuition to check it against, and a confident, well-formatted answer is hard to doubt when you do not yet know what doubting it would look like.
What we ask junior engineers to do differently
- Write the failing test before asking for the implementation, not after. This forces an understanding of the requirement independent of whatever the model produces.
- Explain the generated code back, out loud, in review, in their own words, not the model's. If they cannot, the code does not merge, regardless of whether it passes.
- Solve a similar problem by hand at least once before relying on an agent for the pattern. The value is not in the code they produce by hand; it is in having the experience of getting it wrong first and understanding why.
Where this looks like it slows people down
In the first few weeks, yes — a junior engineer working this way ships less code per day than one who accepts every suggestion. We have decided that trade is worth making deliberately, because the alternative produces engineers who can operate an agent but cannot debug the output when the agent is eventually wrong about something subtle, which happens to everyone eventually.
Fluency with a tool is not the same as understanding the problem the tool is solving. We want junior engineers to have both, in that order, and an agent will happily give them only the first if nobody insists on the second.
Where agents genuinely help junior engineers
Reading unfamiliar code. Asked to explain what an existing function does, a model is a patient, always-available second opinion that does not mind being asked the same basic question twice. We encourage this use heavily — it accelerates the part of the job that used to require interrupting a senior colleague, without touching the part where judgement has to be earned directly.
The line we hold
Agents write code. Junior engineers are still required to understand every line that merges under their name, at a level where they could rebuild it without the tool. That requirement has not changed since before any of this existed, and we do not intend to relax it because the first draft now arrives faster.
