DEV Community

Cover image for Code Is Cheap. Understanding Is Expensive
Evgeniy Kormin
Evgeniy Kormin

Posted on

Code Is Cheap. Understanding Is Expensive

We spent decades treating code as the primary bottleneck in software development. Writing it, reviewing it, shipping it — that was the hard part.

That assumption is now outdated.

Today, code is cheap. Understanding is expensive.
The bottleneck moved

With modern tools — especially AI-assisted ones — generating code is no longer the limiting factor. You can produce hundreds of lines in seconds. Boilerplate is trivial. Even non-trivial implementations are increasingly accessible.

But something didn’t get faster.

Answering questions like:

  • Is this correct?
  • Is this safe?
  • Will this break something subtle?
  • Does this match the real-world constraints?

Those are still slow. Sometimes painfully slow.

Because these are not questions about code.
They are questions about understanding.
Code was never the real asset

We like to think code is the system. It isn’t.

Code is a compressed representation of:

  • past incidents
  • production failures
  • edge cases
  • domain-specific constraints
  • decisions made under uncertainty

When a senior engineer reviews a pull request, they are not checking syntax. They are pattern-matching against all of that invisible context.

That’s why a simple change can take hours to approve.

Not because it’s long.
Because it’s ambiguous.
Example: a “simple” change

Imagine a change in a payment system:

“Retry failed transactions up to 3 times.”

Looks reasonable. Easy to implement. An AI can write it instantly.

But an experienced reviewer will pause.

Questions start appearing:

  • What kinds of failures?
  • Idempotency guaranteed?
  • Could this double-charge?
  • What happened the last time we retried blindly?
  • Are there regulatory constraints?

None of that is visible in the code itself.

The real logic lives in:

  • past incidents
  • tribal knowledge
  • unwritten rules

The difficulty is not writing the retry loop.
The difficulty is knowing whether it should exist at all.
The illusion of productivity

If code generation becomes 10x faster, it feels like productivity increased.

But in many teams, something else happens:

  • More code is produced
  • Review becomes harder
  • Systems become less predictable
  • Knowledge becomes more fragmented

You don’t remove the bottleneck.
You move it — and often amplify it.

From “writing code” to “understanding consequences.”
Understanding is not intuition

We often rely on phrases like:

  • “This feels right”
  • “We’ve always done it this way”
  • “I think it should be fine”

That’s not understanding. That’s intuition.

And intuition does not scale:

  • it’s not transferable
  • it’s not auditable
  • it’s not reproducible

If two engineers look at the same change and reach different conclusions, the system depends on who you ask, not on what is true.

That’s fragile.
What real expertise looks like

Real expertise is not the ability to write code quickly.

It’s the ability to:

  • reconstruct the reasoning behind a decision
  • connect code to past incidents
  • identify missing information
  • explain why something is safe or unsafe

In other words:

Given the same inputs, an expert should be able to produce the same decision — and show why.

That is closer to a system than to intuition.
Where this leads

If code is cheap and understanding is expensive, then improving developer productivity is no longer about generating more code.

It’s about:

  • making decisions traceable
  • turning incidents into reusable knowledge
  • extracting patterns from reviews
  • reducing reliance on implicit memory

Because the real risk is not that we can’t write code.

The real risk is that we write more than we can understand.

Top comments (0)