Back to blog
Engineering·May 7, 2026

You Still Have to Understand the Code

The industry is moving fast to reward engineers who can prompt and deliver. But speed without comprehension isn't engineering — it's a liability waiting to be discovered. Here's what gets lost when we stop reading what we ship.

The New Pressure

There is a version of engineering that's becoming increasingly common — and increasingly celebrated. You describe what you want in a prompt, a capable model generates the implementation, you review it briefly, and you ship. Fast. Clean. Done.

For certain kinds of work, this is genuinely fine. Scaffolding, boilerplate, documentation, low-stakes utilities — the prompt-and-deliver loop is well-suited to tasks where the cost of being wrong is low and the requirements are simple enough that the output is easy to verify at a glance.

But a pressure is building in the industry to apply this workflow everywhere. To treat comprehension as optional. To judge engineering output purely by how quickly something makes it out the door, without accounting for what it's doing under the surface, what assumptions it's baked in, or what it will cost to change later.

That pressure is going to cause real problems. Some of them are already showing up.

What Downstream Impact Actually Means

When a senior engineer talks about downstream impact, they're not being precious about process. They're pointing at something specific: the fact that code doesn't exist in isolation. Every implementation decision you make — how you model state, how you structure a component, how you reach across a service boundary, where you put a side effect — creates constraints for the work that comes after it.

Code that looks fine in isolation can be quietly load-bearing in ways that aren't obvious until another engineer tries to build on top of it, or a requirement changes, or a subtle bug surfaces three months later in a context the original author never considered.

Understanding what you shipped is what lets you anticipate those moments. Without that understanding, you're not really engineering — you're deferring the cost of comprehension to whoever comes next.

The Problem Isn't the Tools

I want to be precise here, because the argument is easy to misread. The problem isn't AI-assisted development. I use it regularly, and it has made me faster in ways that are real and measurable. The problem is what happens when the tooling becomes a substitute for understanding rather than a complement to it.

When a model generates a custom hook, I read it. I understand what it's doing and why. I know what assumptions it's making about the component tree, about render cycles, about what's stable and what isn't. If those assumptions are wrong for my context, I need to know that before I ship — not after.

Engineers who use AI tools as a pass-through — describe requirement, accept output, open PR — are accumulating comprehension debt at the same rate they're accumulating velocity. And unlike technical debt, comprehension debt doesn't show up in a codebase audit. It shows up in a post-mortem.

What Gets Lost When You Stop Reading

Architectural context. Generated code is written for a generic context. Your codebase has a specific one — historical decisions, team conventions, scaling constraints, parts of the system that are fragile for reasons that aren't documented anywhere and live only in the heads of the engineers who've been there. A model doesn't have access to that context. You do, but only if you're paying attention.

Security posture. LLMs generate plausible code. They do not generate audited code. SQL injection, insecure defaults, over-permissioned API calls, improper handling of user data — these are exactly the category of issue that looks fine on a quick visual scan and breaks badly in production. Understanding what the code is doing is the only reliable way to catch them.

Refactorability. Code that nobody fully understands doesn't get refactored well — it gets worked around. Over time, workarounds accumulate and the parts of the codebase that were generated and never fully internalized become the parts nobody wants to touch. That's how you end up with a module that's technically functional and practically untouchable, because the cost of changing it has become too high to justify.

Mentorship. Senior engineers who can't explain the code they ship can't grow the engineers around them. Technical leadership requires the ability to articulate why, not just what. That capacity disappears if comprehension does.

The Hiring Signal Is Changing

Conversations happening right now in engineering organizations are worth paying attention to. The early wave of excitement about pure output velocity is starting to give way to harder questions. What is this engineer's failure mode? Do they understand the systems they're building on? Can they debug something when it goes wrong, or can they only generate new things when everything is working?

The engineers who will have long careers in this environment aren't the fastest prompters. They're the ones who use AI to move faster *and* maintain the depth to make good decisions — about architecture, about tradeoffs, about when to slow down. That combination is still rare. It's worth developing.

A Standard Worth Keeping

There's a version of the "just ship it" culture that's healthy — bias toward action, don't over-engineer, get feedback fast. That version has always been part of good engineering practice.

But there's another version that's emerging, one that treats comprehension as friction to be eliminated rather than as the thing that makes shipping safe. That version is dangerous in proportion to the scale and complexity of what's being shipped.

Understanding the code you write is not a relic of a slower era. It's still the job. Every piece of software you ship carries your name — and the downstream costs of what you didn't understand travel with it.

Read the output. Know what it's doing. Ship things you can defend.

Marcus

Marcus Bass

AI · Career Q&A

get in touch