9 min read

Emilio Carrión

The Code Nobody Understands Is Already in Production

AI writes code faster than ever. But there's a trade-off almost nobody talks about: we're exchanging development speed for operational opacity. And that exchange isn't free.

aitechnical debtsoftware quality

A colleague recently told me a story I can't get out of my head.

Alert at 2 AM. Latency spiking on a critical e-commerce service. The on-call engineer opens the code, checks the logs, reviews the metrics. Everything looks fine but the system is dying.

Three hours later, they find the problem. A piece of the service had been generated almost entirely with Copilot months earlier. The engineer who generated it had left the team. And the on-call engineer had no mental model of how it worked. It wasn't that the code was bad. It's that nobody fully understood it.

With a mental model of the system, it would have taken 20 minutes. Without one, it was 3 hours of blind archaeology.

This story isn't unusual. I'd bet something similar has already happened to you, or will soon.

In 60 seconds: We've spent two years celebrating AI productivity. And rightly so. But there's a trade-off almost nobody talks about: we're exchanging development speed for operational opacity. Every line accepted without deep understanding is a piece of the system entering a gray zone. It's not bad code -- it's opaque code. And opacity accumulates.

The Cost Nobody Is Measuring

We've spent two years celebrating that AI writes code. And rightly so. The productivity is real. I've seen engineers deliver in days what used to take weeks.

But there's a trade-off almost nobody talks about: we're exchanging development speed for operational opacity. And that exchange isn't free.

Historically, when you wrote code, you built a mental model of the system at the same time. You knew where it could fail because you'd thought through every decision. You knew which metrics to watch because you'd designed the flows. You knew which dependencies were fragile because you'd chosen the libraries.

When AI writes the code, you skip all of that. You have a working system but you don't have the mental map that comes from having built it. Armando Solar-Lezama from MIT described it perfectly: AI is like a new credit card that lets us accumulate technical debt in ways we never could before.

And the most dangerous part of this debt is that you don't even know you have it.

Think about your own team. How many PRs from last week contained AI-generated code that the reviewer understood 100%? 80%? 50%? That gap between "it works" and "I understand why it works" is exactly where future incidents live.

And no, this isn't just a problem for vibe coders generating apps with prompts. Satya Nadella admitted that AI writes up to 30% of Microsoft's code. Sundar Pichai said the same about Google, over 30%. And according to the Stack Overflow Developer Survey 2025, 84% of developers already use or plan to use AI tools, and nearly half use them daily. This isn't a niche -- it's the norm. Every line accepted without deep understanding is a piece of the system entering a gray zone. It's not bad code. It's opaque code. And opacity accumulates.

What Breaks When Nobody Understands the System

The consequences are concrete and I'm seeing them in real teams:

Debugging becomes archaeology. Instead of going straight to the failure point because you know the flow, you're doing reverse engineering under pressure at 3 AM. Stack traces lead you to generated boilerplate. The abstractions the AI chose aren't the ones you would have chosen. You're reading the code of a "developer" who doesn't exist, has no business context, and whom you can't ask anything.

Every fix creates new problems. When you don't understand the underlying architecture, every patch is a shot in the dark. You fix one bug and create two because you didn't see the implicit dependency the AI introduced. It's like repairing a machine without a manual: every part you touch can break three others you didn't know were connected. The system becomes more fragile with every intervention. GitClear analyzed 211 million lines of code and found that duplicated code blocks have multiplied by 4x since mass AI adoption, and that for the first time in history, copy/paste surpasses refactoring. It's not that the code is worse -- it's that nobody understands it enough to improve it.

Traditional observability stops being enough. You can have the best monitoring setup in the world. But metrics only tell you what is happening. If you don't have the mental model of the system, you don't know why it's happening or what to do about it. Observability tools assume someone understands the system. That assumption is breaking down.

Managing teams that operate systems at scale, I see a clear pattern: incident resolution time goes up in services where AI was used extensively to generate code. Not because the code is worse (quality metrics are similar). But because the on-call engineer takes longer to understand what's going on. The data confirms it: according to the Stack Overflow Developer Survey 2025, 45% of developers say debugging AI-generated code takes longer than writing it themselves. And 66% cite solutions that are "almost right but not quite" as their biggest frustration.

Weekly Newsletter

Enjoying what you read?

Join other engineers who receive reflections on career, leadership, and technology every week.

The Skill Nobody Is Training

This is where I think the industry has a massive blind spot. And where I want to focus.

We're investing billions in tools that generate code faster. We're investing in increasingly sophisticated observability. But we're not investing in the human skill of operating systems we don't fully understand.

I call it operating blind. The ability to maintain, debug, and evolve systems whose internal workings you don't completely comprehend.

It's not the same as "reading someone else's code." That has always existed. Traditional code written by others was authored by a human mind with intentions, conventions, and recognizable patterns. AI-generated code was written by a statistical model that optimizes for "works" with no concept of "makes sense." The abstractions are arbitrary. The names are plausible but not semantic. The structure reflects training data patterns, not domain needs.

Operating blind is a new discipline. And it requires skills we're not teaching: building fast mental models of systems you didn't build (not by reading every line, but by recognizing architectural patterns and forming hypotheses about the design); developing failure heuristics that work without deep implementation knowledge; detecting when the AI made a questionable architectural decision without reviewing every file; debugging emergent behavior in systems whose parts weren't designed by the same mind.

What's interesting is that the most experienced engineers already do this, but they don't know they're doing it. When a senior resolves an incident in code they've never seen faster than a mid-level, it's not magic. It's years of accumulated heuristics about how systems fail. Patterns they recognize without thinking. Intuitions trained through thousands of hours of real production experience.

What we used to call "experience" is now a critical competitive advantage. And most seniors can't articulate it, transfer it, or teach it.

The Broken Bridge Between Junior and Senior

Traditionally, a junior built their mental model of the world gradually. They started with simple tasks. They saw how their code behaved in production. They broke small things. They learned from postmortems. After years, they had a senior's heuristics.

That path is closing.

AI is eating exactly the tasks that served as training ground. Juniors entering the market today won't have the luxury of building understanding gradually through years of simple work. They need to reach a much higher level of operational competence, much faster.

And nothing teaches them this. No courses. No tools. No frameworks. Bootcamps teach how to write code. Universities teach algorithms. Tutorials teach technologies. Nobody teaches how to operate systems you don't understand. Nobody teaches how to build a mental model of a system from its symptoms rather than its source code.

Seniors have the skill but don't teach it. Juniors need the skill but don't know it exists. And the industry hasn't recognized that this is a different problem from "learning to code better."

This gap is going to widen. The more code AI generates, the more critical the ability to operate what AI generates becomes. And fewer people will have the traditional path to develop it.

This Is Not an Argument Against AI

Let me be clear: I'm not saying we should stop using AI to write code. That would be absurd. The productivity is real and anyone who doesn't adopt it falls behind.

What I'm saying is that we need to be honest about what we're sacrificing to get that speed. And we need to start working on what's missing.

If you manage a team, three things you can do now:

Measure understanding, not just quality. In your code reviews of AI-generated code, the question isn't "does it work?" but "could someone debug this at 3 AM without help?" If the answer is no, that doesn't mean rejecting the PR -- it means you need to invest time in understanding the decisions the AI made and documenting them.

Make postmortems train heuristics. Next time you resolve an incident, center the postmortem not on "what failed" but on "how we arrived at the diagnosis." The reasoning process under uncertainty is the most valuable skill in a world of opaque code. Every resolved incident is an opportunity to make that reasoning explicit and transferable.

Document the decisions the AI doesn't document. When you accept generated code, add context explaining the why behind the approach. The AI chose a strategy, but the business context is yours. That context is the bridge between opaque code and the future on-call engineer.

The Territory Opening Up

Free code doesn't exist. AI doesn't charge to write it, but someone is going to pay to operate it.

I believe operating blind is going to define a significant part of what it means to be a good engineer in the coming years. It's not just a problem -- it's a paradigm shift in what we value as technical skill. And right now, almost nobody is looking at it.

I'm going to keep pulling on this thread. There's a lot to explore: how to train these skills, how team processes change, what tools we need that don't exist yet. If you operate systems in production, this is going to affect you -- if it isn't already.

Question for you: Are you already noticing this effect on your team? Do incidents take longer to resolve when the code was AI-generated? I'd love to hear your experience.

Newsletter Content

This content was first sent to my newsletter

Every week I send exclusive reflections, resources, and deep analysis on software engineering, technical leadership, and career development. Don't miss the next one.

Join over 5,000 engineers who already receive exclusive content every week

Emilio Carrión
About the author

Emilio Carrión

Staff Engineer at Mercadona Tech. I help engineers think about product and build systems that scale. Obsessed with evolutionary architecture and high-performance teams.