AI tools accelerate output. That's the point. But acceleration without judgment doesn't produce better software — it produces more software, faster, with the same quality ceiling as the engineer who wrote it. The guardrails didn't become less important when Copilot arrived. They became the only thing standing between adoption and amplified mistakes.
4–6 min read
Key Takeaways
The engineers on the team who were already strong got noticeably stronger with Copilot. The tedious work moved faster — boilerplate, documentation, navigating unfamiliar code — which freed them to spend more time on the problems that actually required their judgment. For those engineers, AI was a force multiplier in the best sense.
But AI doesn't selectively amplify good engineering instincts. It amplifies whatever is there.
The failure modes we caught weren't dramatic. They were subtle — and that's what made them worth paying attention to. Code that worked but didn't fit the existing architecture. Solutions that were functionally correct but solved the wrong problem because the problem hadn't been understood clearly enough before the prompt was written. Security and architectural gaps that surfaced in code review rather than earlier, where they would have been cheaper to catch.
The code looked confident. It compiled. It passed basic review at a glance. The issues were underneath — in the fit, in the assumptions, in what the engineer hadn't considered before they asked the model to implement it. AI doesn't signal its own uncertainty. It generates a plausible answer whether the question was well-formed or not.
There's a more fundamental problem than inconsistent output — and it affects junior engineers most directly.
You learn what good code looks like by struggling through hard problems, making mistakes, having those mistakes caught in review by someone who knows better, and building the pattern recognition that comes from seeing the gap between what you wrote and what it should have been. That process is slow and sometimes painful. It's also how judgment gets built.
AI removes the struggle. An engineer who hasn't developed the instinct to recognize clean architecture, appropriate abstractions, or secure implementation patterns can generate code that looks plausible — and has no way to evaluate whether it actually is. They haven't built the reference point. If you've only seen bad code, AI makes you faster at producing bad code. The volume increases. The quality ceiling stays exactly where it was.
This is why junior engineers need more mentorship now, not less. The old forcing function — struggling through an implementation until it clicked, then having it reviewed by someone who could explain why the approach was right or wrong — is being bypassed. The struggle that built understanding is being skipped. Without deliberate investment in filling that gap, you're not developing engineers. You're accelerating them toward a ceiling they can't see.
Series
AI Adoption in Engineering Teams · Part 3
You Can't Mandate AI Adoption — You Have to Make It the Obvious Choice
Most engineering leaders approach AI adoption the wrong way. They announce it, roll it out, and wait for results. When results don't come they push harder — more mandates, more metrics, more pressure. That's not a strategy. You don't push engineers toward tools they don't trust. You make not using them feel like leaving something on the table.
Read moreAI Knows Your Code — It Doesn't Know Your System
Generic AI tools can read your codebase. What they can't tell you is why a feature exists, which clients it affects, how feature flags alter behavior per tenant, or what the blast radius of a change will be. That missing context isn't a minor gap. It's the difference between a code completion tool and a system reasoning tool.
Read moreHow to Lead AI Adoption Without Becoming the AI Evangelist Nobody Asked For
There's a version of AI adoption leadership that makes the leader the most exhausting person in every standup. Constant references to what AI could do. Unsolicited suggestions to try it on everything. Visible frustration when the team doesn't follow through. That's enthusiasm without strategy — and it's one of the fastest ways to make engineers tune out a tool before they've genuinely tried it. Here's the actual sequence.
Read moreWhen Copilot adoption grew, the temptation was to treat faster implementation as a reason to streamline the review process. We went the other direction.
Code reviews became more important, not less. Lead engineers were reviewing not just for correctness but for fit — does this solution belong in this codebase, does it follow the patterns we've established, does it handle the edge cases the engineer may not have considered when writing the prompt. The issues that surfaced in review weren't bugs in the traditional sense. They were judgment calls that the tool had made on the engineer's behalf without the engineer realizing it.
New features and solutions required architectural documentation and review before any code was written — AI-assisted or otherwise. The sequence mattered: understand the problem clearly, document the approach, get it reviewed, then implement. Skipping straight to implementation because AI makes implementation fast is exactly the pattern that produces solutions to the wrong problem. The architectural review gate was the guardrail against that failure mode.
Security review stayed in place regardless of how the code was generated. The tool used to write the code is irrelevant to the risk it carries. An AI-generated authentication handler with a vulnerability is as dangerous as a human-written one. The review process doesn't care about the origin — it cares about what ships.
Engineers were required to explain their code, not just ship it. If you can't articulate what your change does, why you made the decisions you made, and what it affects in the existing system — it doesn't merge. This requirement did two things simultaneously: it caught cases where engineers were shipping code they didn't fully understand, and it forced the kind of reasoning that builds judgment over time. Explaining code is how you learn whether you actually understand it.
AI accelerates the path from decision to implementation. That's valuable when the decision is sound. When it isn't, it means bad decisions reach production faster and at higher volume.
Understanding what your changes do to the existing system — what they break, what they affect, which parts of the platform feel the impact — is a human responsibility that AI can inform but not replace. An engineer who can generate an implementation in minutes but hasn't thought through the blast radius is moving at a speed their judgment can't support.
This is where the architectural documentation requirement paid off most. Before writing code, engineers had to think through the scope of the change: what it touched, what dependencies it created, what existing behavior it altered. That thinking happened on paper before it happened in code. AI couldn't do that part. It could only make the implementation fast once the thinking was done.
This isn't a tension between AI adoption and engineering discipline. They're the same philosophy.
Accountable Autonomy applied to AI looks like this: give engineers powerful tools, give them the freedom to use them, and hold the standard for what ships. The guardrails aren't distrust of engineers — they're the structure that makes real autonomy safe to extend. An engineer who understands the review process doesn't resent it. They write differently because they know their code will be read by someone who knows what good looks like. That knowledge is itself a forcing function for better judgment.
The engineers who leaned hardest into Copilot and got the most out of it were the ones who already had strong fundamentals. They used it to go faster. They knew when to trust the output and when to question it. They caught the gaps because they could see them.
That's the outcome worth building toward — not engineers who generate more code, but engineers who generate better code faster because their judgment is strong enough to drive the tool rather than follow it.
AI makes fast engineers faster and careless engineers more dangerous. The guardrails are what determine which one you're building.