← all posts

What "Senior" Means When AI Flattens the Tactical Layer

The junior on your team can generate more code than you could in a week. That's not the threat.

The junior engineer on your team can now generate more code in an afternoon than you could produce in a week ten years ago.

That's not the threat. The threat is what happens when they can't tell the difference between the code that's right and the code that looks right.

AI changed the bottleneck. It did not eliminate engineering work. It moved it.

The tactical layer got cheap: typing, wiring, translating intent into syntax.

The judgment layer did not. That shift changes what "senior" means.

The tactical layer got flattened. The judgment layer didn't.

For most of this career, seniority was measured through tactical competence. You could write the code faster, debug the problem quicker, navigate the framework more fluently. The senior engineer was the one who could produce working software under pressure.

AI compressed that advantage. A junior with a good model can produce working software. The result may still be the wrong software or fail under production pressure, but the tactical gap between "can produce code" and "can produce code that works" narrowed dramatically.

What didn't narrow is the gap between "code that works" and "code that's right."

Right means the code solves the actual problem, handles the failure modes that have not happened yet, fits the system's consistency model, and avoids creating the next incident. That judgment requires knowing what the code is part of, beyond what the code does in isolation.

This is experience as compression. The senior engineer doesn't write better code because they know more syntax. They write better code because they've already seen the movie and know which scene goes wrong. AI hasn't seen the movie. It's seen every movie, which is different, and which is why it can produce code that looks like it belongs without knowing whether it does.

Mentorship when the output outpaces understanding

The uncomfortable part for senior engineers is mentorship.

The old mentorship model was apprenticeship through production. You pair on a feature. The junior writes code. You review it. You point out what's wrong, explain why, and they learn. The code they wrote was the vehicle for the lesson.

That model breaks when the junior can generate a complete implementation before you've finished your coffee. There's nothing to review line by line, because the code is clean. The functions are organized. The tests exist. The naming is reasonable. The mistakes have moved, and they've moved upstream.

So what are you teaching now?

You're teaching the meta-skill: how to evaluate code, how to decide whether the feature should be built, and how to recognize the bug that looks like a feature.

This is harder to teach than tactical skill because it cannot be demonstrated on a single PR. It requires context: the system's history, the team's constraints, the production failure modes.

You are not teaching someone to code. You are teaching them to see. Seeing compounds over years, not afternoons.

The senior engineer who can't make this shift becomes irrelevant fast. Their value was tactical review, and that layer is getting automated. The senior engineer who makes the shift becomes more valuable than ever, because they're the only thing standing between a fast codebase and a fast wrong codebase.

The principal engineer's job in an AI-augmented org

The job description is changing.

You are the verification layer. Syntax is only the surface. The senior review has to cover decisions, architecture, trade-offs, and the assumptions the code encodes without expressing directly. When a junior generates a thousand lines, your job is to ask: what system does this code assume it belongs to, and is that the system we actually have?

You are the context layer. AI generates code from the prompt. The prompt is the specification. If the specification is wrong, the code is wrong in a way that looks completely right. Your job is to ground the specification in reality: production reality, operational reality, the reality that only someone who has been paged at 3am actually knows.

You are the failure mode layer. The most expensive bugs never reach production. They're decisions. When code generation is cheap, decision generation becomes the bottleneck. Your job is to catch the bad decisions before they become code, because once they're code, they look like every other line, and the review layer can't tell the difference.

This concentrates the job. The tactical work spread out. The judgment work concentrated up. The principal engineer's job is smaller in scope and larger in stakes.

What you're actually teaching now

The junior engineer who can generate code fast but cannot evaluate it is not a junior engineer with a productivity boost. They are a junior engineer with a confidence boost and the same understanding they had before.

That creates the most dangerous engineer in a new shape: someone who produces with total confidence and no curiosity about whether they are right.

What you're teaching now is curiosity as an engineering practice. Does this code handle the failure mode I've seen before? Does this architecture fit the system we actually have, or the system the prompt assumed? What does this look like in production, under load, during an incident? What decision does this code encode, and do I agree with it?

Those questions are the job. They were always the job. AI just made them visible by automating everything around them.

The one-line version

When tactical skill is cheap, senior engineering becomes judgment: knowing whether working code is the right code.