Dev.Chan64's Blog

Go Home
Open Slide
Show Cover Slide Show Cover Slide

Technical Debt is Not a Technology Issue

gpt-4-turbo has translated this article into English.


Technical Debt: A Reflection for HR and Management

If technical debt is accumulating, it is not just a problem for the tech team,
but a matter that HR and management should reflect on first.
Technical debt is not an issue with the code, but with how the organization handles technology.


Many organizations use the term “technical debt.”
However, this term often functions as a structure that shifts all responsibility onto the tech team.

I have deep concerns about this way of expression.
Technical debt certainly exists, but its causes are not solely within the technology.

This expression misleadingly suggests that the causes lie within the technology itself.
In reality, most technical debt originates from decisions made before coding, failures in schedule management, and a lack of strategy.
These starting points often stem from unreasonable demands from the business unit or a lack of understanding of technology.

Nonetheless, this term is perceived as if the tech team must bear all the burdens.
The essence of the problem is not technology itself, but how the organization views technology and its decision-making culture.

Technical debt is not a result of the technology itself, but of decisions made disregarding technology.
Yet, many organizations limit this debt to the tech team, attempting to escape managerial responsibility.
Ultimately, the term “technical debt” becomes a linguistic device that enables quiet shirking of responsibility.

This article criticizes the structural avoidance of responsibility inherent in the term ‘technical debt’,
redefining technical debt not as an issue of tech team management but as a matter that the entire organization should collectively be responsible for and manage.


Technical Debt is Inevitable, But Reducible

Technical debt is a reality. It inevitably arises at some level in all organizations.
However, how much debt is produced is entirely up to the organization’s choice.

It is commonly said that “technical debt is manageable.”
However, this expression can mistakenly make it seem like technical debt is a problem that can be flexibly accommodated.

Technical debt is not merely a “management” issue,
but an outcome that should be minimized as much as possible.
The phrase “it can be managed” may lead to the misconception that technical debt is an acceptable option.
Technical debt must be reduced and never left unchecked.

In fact, much of the occurring technical debt could have been prevented from the start.
The real issue lies not in the technology itself, but in the organization’s culture of unreasonable schedules, unclear judgment criteria, and consistently ignoring refactoring time.

The purpose of this article is to move beyond viewing technical debt as solely the tech team’s management responsibility,
reinterpreting it as a result of the overall decision-making structure and culture of the organization.

We must always remember this point.
Debt is something that must eventually be repaid.
Technical debt not managed now will return in the future as much greater costs and risks.


Types and Nature of Technical Debt

Technical debt is not a singular issue.
While it may appear on the surface as degraded code quality, missing tests, or insufficient design,
following its roots always leads to the responsibility of organizational decision-making and leadership.

Let us now examine how technical debt is linked to organizational issues through the typical eight types.


1. Underengineering

Definition
Refers to a state where development is driven by implementation without sufficient design, resulting in a structure with unclear boundaries and lacking abstraction.

Organizational Causes

Solution Philosophy

Practical Understanding
Many organizations perceive design as a difficult and time-consuming task.
However, structure is not a complex concept.
Structure is about ‘setting the frame’, and should include at least the following elements:

This is not about adding new tasks, but simply changing the order of tasks.
This level of test-driven development (TDD) and upfront design does not negatively impact the schedule.
Rather, a clear structure enhances overall development efficiency.

Key Sentence

Technical debt does not occur if development is not performed.
Therefore, if development proceeds, it must be done correctly.


2. Overengineering

Definition
Refers to a state where the organization has introduced an overly complex and excessive design that it cannot maintain or propagate, leading to an unsustainable system.

Organizational Causes

Solution Philosophy

Practical Understanding
Overengineering is not “a well-made structure.”
When an organization cannot understand and maintain a structure, it becomes not a technological asset but a technical debt.

The moment a responsible person leaves or the next developer struggles with maintenance due to an inability to understand the structure,
that complex design ceases to be an asset and instead becomes a risk to the organization.

Design is not about making something as sophisticated as possible, but about creating boundaries that the organization can maintain and propagate together.

Key Sentence

Overengineering eventually becomes technical debt as there is no one left to maintain it.
This is ultimately a failure of HR and a responsibility of leadership.


3. Documentation Debt

Definition
Refers to a state where there is a lack of or missing documentation about design intentions, system context, and usage methods, leading to decreased overall development efficiency including collaboration, maintenance, and onboarding of new personnel.

Organizational Causes

Solution Philosophy

Practical Understanding
Many developers find it challenging to write documents.
Often, they prepare presentation materials or separate explanation sessions as substitutes.
However, this is inefficient and not sustainable.

Good code should be self-explanatory, and it is more valuable to have clear and predictable code than technically superior code.

In the modern computing environment, simplifying structures or clarifying flows for readability seldom has a critical impact on performance.

Therefore, developers should embrace the following philosophy:

“Avoid fancy code.”

Good code has the following characteristics:

Documentation is not just text.
It is an expression structured to preserve, maintain, and propagate knowledge together as an organization.
And this knowledge structure is maintained by those who continuously write and manage it, not by those who are good at writing.

Key Sentence

Documentation is not writing; it is culture.
Developers who write documents are the ones who sustain the company.


4. Testing Debt

Definition
Refers to a state where tests are either excessive or poorly designed, solidifying the system structure and hindering rather than facilitating refactoring and improvements.

Organizational Causes

Solution Philosophy

Practical Understanding
Many organizations misunderstand that testing debt arises from a lack of tests.
However, the problem actually stems from the wrong direction.

Instead of testing the implemented logic as is, tests should be designed around the interfaces and their usage flows.

Having many tests does not necessarily mean the code is secure.
Tests built on unstable structures can make refactoring difficult and hinder improvements.

The key is not the existence of tests, but organizational consensus and criteria on what and how to test.

Key Sentence

Tests are walls that protect structures, not prisons that restrict freedom.


5. Dependency Debt

Definition
Refers to a state where the system has become fixated on specific tools or patterns due to excessive reliance on external technologies, frameworks, or libraries, making replacement or expansion difficult.

Organizational Causes

Solution Philosophy

Practical Understanding
Technology choices are often regarded as the domain of interest for developers, but
the structure in which the technology is introduced and maintained is entirely the responsibility of the organization.

Every technology will face a moment of replacement.
What matters is whether that technology was designed to be replaceable.

A technology structure that cannot be replaced is not just a debt but a prison.
From the moment of technology selection, the organization must ensure an escapable structure, documented standards, and a collaborative framework.

Key Sentence

If it cannot be replaced, it is not a debt but a prison.
Technology selection is not a matter of code but a strategic decision that the organization must handle.


6. Infrastructure Debt

Definition
Refers to a state where essential elements for system operation such as CI/CD, monitoring, log collection, and test automation are inadequate or missing, leading to reduced operational efficiency and response capability in handling issues.

Organizational Causes

Solution Philosophy

Practical Understanding
Infrastructure debt usually does not occur because it is unknown, but rather
because it has been deprioritized despite being known.

However, this debt slows down development over time and
ultimately has a severe impact on incident response and quality maintenance.

Fortunately, infrastructure debt exists in a relatively clear form.
It is a problem that can be addressed by starting to implement what has not been done so far.

This is not a matter of technical limitations but of execution capability and organizational will.
Ensuring the health of the system makes infrastructure improvement not an option but a necessity.

Key Sentence

Infrastructure debt is not a problem of technology but of execution.
If it hasn’t been done yet, it’s time to start now.


7. Knowledge Debt

Definition
Refers to a state where critical knowledge about the system or operations is concentrated in specific individuals, exposing the entire organization to risk if those individuals leave or are absent.

Organizational Causes

Solution Philosophy

Practical Understanding
Many developers say:

“It’s hard enough to write code and commit; organizing documents is difficult.”

This is a realistic statement.
However, that difficulty should not lead to neglect of knowledge discontinuity.

Therefore, organizations should view knowledge debt as a problem that can be structurally resolved, not just an individual responsibility.

Organizations with such a culture and structure can effectively manage knowledge debt.

Above all, a change in management’s perception is crucial.

Developers who write documents are those who leave a legacy for the company.
This recognition alone can dramatically reduce the occurrence of knowledge debt.

Key Sentence

Knowledge debt is not a problem of technology but of perception.
Developers who write documents are those who sustain the company.


8. Decision-Making Debt

Definition
Refers to a state where decisions made without understanding the technical context or structural impact render the system inefficient or overdesigned, causing repetitive refactoring and structural distortion.

Organizational Causes

Solution Philosophy

Practical Understanding
There is often a question that emerges in retrospectives after technical debt has accumulated:

“Why did we make that decision at that time?”

Such decisions are mostly judgments made without technical context.
As a result, the organization falls into a vicious cycle of structural inefficiency, repetitive refactoring, and shirking responsibility.

This is not a problem of the developers.
It is a result created by the organization’s structure, HR system, and leadership’s perception.

Decisions made without a proper understanding of technology are not just mistakes but
transmute into risks for the entire organization.

Key Sentence

Technical debt is not a failure of developers but a failure of the decision-making structure.
When those who do not understand technology make technical decisions, it becomes a managerial risk.


Preventing Technical Debt Through Culture

Technical debt cannot be resolved by merely modifying code.
Unless how the organization handles technology, that is, the culture changes, technical debt will recur.

There is no need to introduce new frameworks or tools to reduce technical debt.
More importantly, there are two things:

To prevent technical debt,
the organization should culturally establish the following key practices.

1. Interface-First Development Based on Mock Code

2. Culture of Code Style Centered on Readability

3. Recognizing Documentation as a Performance Metric in the Organization

4. Review is Not a Rule, But a Philosophy

5. Technology Choices Must Consider Lifecycle and Organizational Capability

6. Knowledge is an Asset of the Organization, Not Individuals

Technical debt arises from a lack of culture.
Thus, the most effective way to prevent technical debt is
for the organization to establish a culture that respects technology.


Operating a Day to Liquidate Technical Debt

Technical debt is unavoidable. And it accumulates.
What matters is recognizing it and systematically checking and reducing it repeatedly.

The day to liquidate technical debt doesn’t need to be grand or special.
Simply operating a regular ‘Technical Debt Liquidation Day’ and deciding what to do on that day is sufficient.

This is not a declaration but an action, and this action can be concretized through the following practice items.


I argue this:

1. Write documents explaining interfaces

2. Interpret and explain spaghetti code

3. Explicitly state items recognized as technical debt


Go Home
Tags: Organizational Culture Technical Debt