The Hidden Cost of “It Works”

An analysis of maintenance cost as a structural phenomenon rather than a technical one, and why working software can still be expensive to change.

There is a moment in many software projects when someone says: “It works.”

The sentence is usually meant as reassurance. The system behaves correctly. Tests pass. Users can complete their tasks. There are no critical incidents. From the outside, everything appears stable.

And yet, this sentence often marks the beginning of a different kind of cost. A cost that is not immediately visible, not tracked in tickets, and not captured by performance metrics.

“It works” is not a neutral statement. It describes functionality, but it quietly avoids structure.

When functionality becomes the wrong measure

Most software systems are built to work. That is their primary purpose. Functionality is concrete, testable, and easy to validate. A feature either does what it promises, or it does not.

Structure, on the other hand, is harder to measure. It reveals itself over time, not at the moment of delivery.

As long as a system works, structural questions tend to remain unanswered:

These questions are rarely urgent at first. They become relevant only when the system is asked to grow, adapt, or explain itself.

Maintenance cost is not a bug problem

When teams talk about maintenance cost, they often think of bugs, regressions, or outdated dependencies. These issues are visible and actionable. They fit well into backlogs and sprint planning.

But the most significant maintenance costs in long-lived systems usually come from somewhere else.

They emerge when:

This kind of cost does not show up as broken functionality. The system still works.

What changes is the effort required to act with confidence.

Knowledge as a temporary substitute for structure

In many systems, knowledge compensates for missing structure.

A senior developer knows which parts are fragile. A tech lead remembers why a certain workaround exists. Someone on the team can usually explain how things fit together.

For a while, this works surprisingly well.

Human memory and experience are flexible, fast, and context-aware. They can smooth over inconsistencies and bridge gaps in design. As long as the team is small and stable, knowledge can replace explicit structure.

But knowledge does not scale.

It cannot be versioned. It cannot be queried reliably. And it cannot be inherited without loss.

As systems grow, knowledge slowly turns from an asset into a bottleneck. The system still works, but fewer people truly understand why.

The illusion of stability

One of the most deceptive aspects of “it works” is that it creates the illusion of stability.

Nothing is broken. No urgent action is required. There is no clear signal that something needs to change.

Yet beneath the surface, subtle shifts are happening:

These are not failures. They are signs that structure has become implicit.

The system is stable in behavior, but unstable in understanding.

Why this cost remains invisible

The hidden cost of “it works” is difficult to address precisely because it does not present itself as a problem.

There is no single commit to blame. No incident report to analyze. No clear moment where things went wrong.

The cost accumulates gradually, embedded in everyday decisions:

Each decision is reasonable on its own. Together, they form a system that is expensive to evolve.

Working systems can still be fragile

A system can work reliably and still be fragile.

Fragility does not mean that it fails often. It means that change carries disproportionate risk.

In fragile systems:

This fragility is rarely intentional. It is the result of growth without explicit structure.

“It works” describes the present. It says nothing about the future.

Seeing the cost is the first step

The purpose of naming the hidden cost of “it works” is not to criticize pragmatism or early decisions. Many successful systems exist precisely because teams focused on making things work first.

The problem arises when “it works” becomes a long-term evaluation criterion.

At that point, functionality masks structural debt. And the longer this debt remains unnamed, the harder it becomes to address.

Seeing the cost does not require rewriting or optimization. It requires making structure visible and discussable.

Only then can “it works” become a starting point rather than an endpoint.