Dev.Chan64's Blog

Go Home
Open Slide
Show Cover Slide Show Cover Slide

This article was translated from the original Korean source. The English version was regenerated from the latest Korean document.


Technical Debt Is Not a Technical Problem

If technical debt is accumulating, it is not first a problem for the engineering team.
It is something HR and leadership should examine first.
Technical debt is not mainly a problem of code. It is a problem of how an organization treats technology.


Many organizations use the term “technical debt.”
But the phrase often functions as a way to shift all responsibility onto the engineering team.

That framing is deeply problematic.
Technical debt certainly exists, but its causes do not exist only inside technology.

The phrase easily misleads people into thinking that the cause exists inside engineering itself.
In reality, most technical debt starts before code is written: poor decisions, failed schedule management, and the absence of strategy.
Its real starting point is often an unreasonable business demand or a lack of understanding of technology.

Even so, the term is often treated as if the engineering team alone must bear the burden.
The real issue is not technology itself, but the way the organization sees technology and the culture by which it makes decisions.

Technical debt is not produced by technology itself. It is produced by decisions that ignored technology.
Even so, many organizations reduce it to an engineering problem and avoid managerial accountability.
In that sense, the phrase “technical debt” becomes a linguistic device that enables quiet responsibility avoidance.

This article criticizes the structural responsibility avoidance built into the term technical debt and argues that technical debt should be redefined not as an internal engineering-management issue, but as something the entire organization must jointly own and manage.


Technical Debt Is Unavoidable, but It Can Be Reduced

Technical debt is real. Every organization will produce some amount of it.
But how much debt gets created is entirely an organizational choice.

People often say, “Technical debt can be managed.”
But that expression can make technical debt sound like something that can be tolerated flexibly.

Technical debt is not simply something to “manage.”
It is an outcome that should be minimized as much as possible.
Saying “it can be managed” can turn debt into something that feels acceptable.
Technical debt must be reduced and must never be left alone.

Much of the technical debt we see in practice could have been prevented in the first place.
The root problem is not technology itself, but a culture of unreasonable schedules, vague decision criteria, and repeated disregard for refactoring time.

The purpose of this article is to move beyond the idea that technical debt is merely an internal management responsibility of the engineering team and reinterpret it as the result of the organization’s broader decision-making structure and culture.

We must remember one thing.
Debt is something that must eventually be repaid.
Technical debt that is not handled now returns later as much larger cost and risk.


Types and Nature of Technical Debt

Technical debt is not a single problem.
On the surface it may look like poor code quality, missing tests, or weak design.
But if you follow the root cause, you almost always arrive at organizational decision-making and leadership responsibility.

Below are eight representative forms of technical debt and the ways they connect back to organizational problems.


1. Underengineering

Definition

This refers to a state in which implementation-driven development happened without sufficient design, resulting in unclear boundaries and weak abstraction.

Organizational Causes

Solution Philosophy

Practical Understanding

Many organizations treat design as difficult and time-consuming.
But structure is not a mystical concept.
Structure is the work of establishing a frame, and at minimum it should include:

This is less about adding new work and more about changing the order of work.
At this level, TDD and up-front design do not meaningfully damage schedule speed.
Clear structure usually improves the overall efficiency of development.

Key Sentence

Technical debt does not appear unless development happens.
So if development happens, it needs to be done properly.


2. Overengineering

Definition

This refers to a state in which the organization introduced a design so complex and excessive that it could not realistically maintain or spread it, and the result became an unsustainable system.

Organizational Causes

Solution Philosophy

Practical Understanding

Overengineering is not simply “well-crafted structure.”
If the organization cannot understand it or maintain it, it is not a technical asset. It is technical debt.

The moment the original owner leaves, or the next developer cannot understand the structure well enough to maintain it,
that sophisticated design stops being an asset and becomes organizational risk.

Design is not about making something as elaborate as possible.
It is about creating boundaries the organization can maintain and transmit together.

Key Sentence

Overengineering eventually becomes technical debt because no one is left to maintain it.
That is an HR failure and a leadership responsibility.


3. Documentation Debt

Definition

This refers to a state in which documentation about design intent, system context, or usage has gone missing or was never created, reducing collaboration, maintenance efficiency, and onboarding quality.

Organizational Causes

Solution Philosophy

Practical Understanding

Many developers find documentation difficult.
As a result, they often replace it with slide decks or one-off explanation sessions.
That is neither efficient nor sustainable.

Good code should be self-explanatory, and in most cases clear and predictable code is more valuable than merely clever code.

In modern systems, simplifying structure for readability or clarifying flow rarely causes performance damage severe enough to justify obscurity.

That is why developers should keep the following principle:

Avoid fancy code.

Good code has characteristics like these:

Documentation is not just text.
It is a structured expression of knowledge that an organization can remember, maintain, and share together.
And it is preserved not by “good writers,” but by people who continue writing and maintaining it.

Key Sentence

Documentation is not writing. It is culture.
Developers who document are the ones sustaining the company.


4. Testing Debt

Definition

This refers to a state in which tests are excessive or badly designed, freezing the structure of the system and making refactoring and improvement harder instead of easier.

Organizational Causes

Solution Philosophy

Practical Understanding

Many organizations assume testing debt comes from not having enough tests.
In practice, the problem is usually direction, not quantity.

Rather than testing implementation details as they are,
tests should be designed around interfaces and usage flow.

More tests do not automatically mean safer code.
Tests built on unstable structure can make refactoring harder and can actively block improvement.

The real issue is not whether tests exist, but what the organization has agreed to test and by what criteria.

Key Sentence

Tests are walls that protect structure, not prisons that block freedom.


5. Dependency Debt

Definition

This refers to a state in which the system becomes trapped in a specific tool, framework, or pattern because of excessive dependence on external technology, making replacement or expansion difficult.

Organizational Causes

Solution Philosophy

Practical Understanding

Technology selection is often treated as a developer preference area.
But the structure that introduces and sustains that technology is entirely an organizational responsibility.

Every technology eventually reaches a point where it must be replaced.
The important question is whether it was designed to be replaceable.

A structure that cannot be replaced is no longer just debt. It is a prison.
From the first moment of selection, the organization should create an escapable structure, documented criteria, and a collaboration model others can inherit.

Key Sentence

If it cannot be replaced, it is not debt. It is a prison.
Technology selection is not code-level taste. It is a strategic organizational decision.


6. Infrastructure Debt

Definition

This refers to a state in which essential operating foundations such as CI/CD, monitoring, log collection, and test automation are weak or missing, reducing operational efficiency and incident response capability.

Organizational Causes

Solution Philosophy

Practical Understanding

Infrastructure debt usually does not come from ignorance.
It comes from knowing what is missing and continually leaving it below the priority line.

But over time, this debt slows development and eventually causes serious problems in incident response and quality maintenance.

Fortunately, infrastructure debt is usually visible in a concrete way.
It is often the debt of something simply not done yet.

That makes it less a question of technical limitation and more a question of execution and organizational will.
If system health matters, infrastructure improvement is not optional.

Key Sentence

Infrastructure debt is not a problem of technology. It is a problem of execution.
If it has not been done, start doing it now.


7. Knowledge Debt

Definition

This refers to a state in which critical knowledge about the system or work is concentrated in a small number of people, exposing the entire organization to risk when those people leave or become unavailable.

Organizational Causes

Solution Philosophy

Practical Understanding

Many developers say this:

“Writing code and making commits is already enough. Keeping documents organized is hard.”

That is realistic.
But repeated difficulty is not a reason to tolerate knowledge discontinuity.

Organizations should therefore treat knowledge debt not as a personal weakness, but as a structurally solvable problem.

Then knowledge debt can be managed effectively.

The biggest lever is still a change in leadership perception.

Developers who write documents are the people who leave something behind for the company.
That recognition alone can sharply reduce the rate at which knowledge debt appears.

Key Sentence

Knowledge debt is not a technical problem. It is a perception problem.
Developers who write documents are the ones sustaining the company.


8. Decision-Making Debt

Definition

This refers to a state in which decisions made without understanding technical context or structural impact make the system inefficient or overdesigned, producing repeated refactoring and structural distortion.

Organizational Causes

Solution Philosophy

Practical Understanding

One question appears often during retrospectives after debt has accumulated:

“Why did we decide that back then?”

In many cases, the answer is simple: the decision was made without technical context.
The result is structural inefficiency, repeated refactoring, and a cycle of responsibility avoidance.

That is not a developer failure.
It is an outcome produced by the organization’s structure, HR system, and leadership mindset.

A decision made without real understanding of technology is not just a mistake.
It becomes organizational risk.

Key Sentence

Technical debt is not a developer failure. It is a failure of the decision-making structure.
When people who do not understand technology decide technical matters, it becomes a management risk.


Technical Debt Is Prevented Through Culture

Technical debt is not solved simply by rewriting code.
Unless the way the organization handles technology changes, the debt will return.

There is no need to introduce a brand-new framework or tool in order to reduce technical debt.
The more important work is:

To prevent technical debt, the organization needs to establish the following core practices culturally.

1. Interface-First Development Based on Mock Code

2. A Code Style Culture Centered on Readability

3. An Organization That Recognizes Documentation as Performance

4. Review Is Not a Rule. It Is a Philosophy

5. Technology Choices Must Consider Lifecycle and Organizational Capability

6. Knowledge Belongs to the Organization, Not to Individuals

Technical debt emerges where culture is missing.
The most effective way to prevent it is for the organization to build a culture that respects technology.


Let’s Operate a Technical Debt Cleanup Day

Technical debt is unavoidable, and it accumulates.
What matters is recognizing it and checking and reducing it repeatedly through a deliberate routine.

Cleaning up technical debt does not need to be dramatic.
A regular “technical debt cleanup day” is enough, as long as the team decides what to do with it.

This is not a slogan. It is execution.
That execution can take forms like the following.


This Is What I Argue:

1. Write Documents That Explain Interfaces

2. Interpret and Explain Spaghetti Code

3. Explicitly Mark Items Recognized as Technical Debt

4. Document a Deletion Scenario

This Is the Important Point:

A technical debt cleanup day does not have to be the day the debt is fully removed.
Preparation for cleanup is already enough.

If the team has extra room on that day,
additional work such as automation, test refactoring, or infrastructure checks can naturally follow.

And This Is Where the Real Effect Begins

When this routine repeats and becomes habit,
developers begin writing code with a stronger sense of structure and responsibility from the start.
During review, the team begins to build a culture that detects and coordinates technical debt before it grows.

In the end, a technical debt cleanup day is not mainly time spent fixing code.
It is time spent training culture.

The team becomes healthier,
and the organization develops a culture that takes responsibility for how it handles technology.


Conclusion: Technical Debt Reflects Responsibility

Technical debt remains in code.
But the choices that produced it usually came from outside the code, from organizational judgment and structure.

On the surface it may look like something the engineering team should own alone,
but in reality it is the result of organization-wide decisions and culture surrounding technology.

Decisions made without technological understanding,
choices of structures that cannot be replaced,
schedules forced forward without refactoring time…

These are not failures of technology.
They are failures in how the organization treats technology.

That is why technical debt is not just an engineering problem.
It is something the entire organization should own and solve together.

And in truth, reducing technical debt is not that complicated

If the organization practices just the following four things, technical debt will fall visibly.

1. Encourage Writing Mock Code

2. Encourage Readable Code

3. Leadership Should Admit Its Own Technical Limits

4. Recognize the Practitioners Who Protect Technical Culture

These actions are not grand strategy.
They are small shifts in organizational attitude that show respect for technology.

The Way to Solve Technical Debt Is Simple

Operate a regular “technical debt cleanup day”
and simply decide together what will be handled on that day.

If these small routines repeat,
the team grows healthier, and the organization builds a culture that respects technology.


Technical Debt Is Not a Failure of Technology

Technical debt is
feedback about the attitude an organization has toward technology.

And that feedback is
a responsibility the entire organization must answer, not the engineering team alone.


Appendix. My Classification and Philosophy of Technical Debt

Classification of Technical Debt

1. Decisions That Skipped Process

2. Decisions That Skipped Technical Validation

3. Things Mistaken for Technical Debt

Closing Statement: My Operating Philosophy on Technical Debt

Technical debt is not created simply because technology was weak.
It is the result of responsibility tied to judgment and structure.
I believe technical debt should be prevented with tools, deferred judgment should be absorbed through design, and failure should be treated as failure in structural terms.
That is the operating philosophy I hold on technical debt.


Go Home
Tags: Organizational Culture Technical Debt