On the question of debt

When dealing with systems, there are four types of debt that I tend to consider — technical (code), evolutionary (value chain), cognitive (reasoning) and epistemic (understanding). They also share a common structure of shorter term optimisation (with any benefits that brings) at the expense of longer term resilience.

They are a trade-off, they all borrow from the future to spend now.

Technical debt

Common meaning: Technical debt is a qualitative description of the cost to maintain a system that is attributable to choosing an expedient solution for its development. While an expedited solution can accelerate development in the short term, new understanding is often gained by the building and running of the system. Without restructuring, the result may increase future costs if left unresolved.

Note: Ward Cunningham took a complex, multi-dimensional problem and reduced it to a single scalar that business could grasp. The code represents what the system does (function) and how it does it (structure). But that code exists within an environment, and is shaped by the skills and tools used to build, operate, and understand it. What we are really dealing with is a tensor of function, structure, context, skills, and tools, compressed into a single scalar called "technical debt", a value that people then often attempt to "measure" by examining structure alone. By changing one of the other variables in the tensor (such as tools, skills or context) it is possible to reduce such debt e.g. with automatic refactoring.

For more on this topic, see Myth 8 in Rewilding Software Engineering

Evolutionary debt

Emerging meaning: the strategic cost you incur by failing to evolve a value chain component along its natural lifecycle as markets mature over time.

Note: Examples include custom building a thing which is already a commodity. This often manifests itself in organisational misalignment such as governance or practices being misapplied or failing to co-evolve with the technology. Commonly caused by not looking at an environment (short term optimisation) before taking action.

This debt often manifests itself as inertia. This is covered in Wardley Maps in Chapter 10, "I wasn't expecting that"
/posts/2016-12-20-i-wasn-t-expecting-that.html

A useful glossary of terms, see https://www.wardleymaps.com/glossary/inertia

Cognitive debt

Emerging meaning: the long term, compounding cost to human intelligence, memory, and critical thinking that accumulates when we substitute rather than augment our reasoning.

Note: It represents a decline in cognitive independence and is a trade-off between immediate convenience and longer term skill development including critical thinking. It operates at the individual level. Often seen with extensive use of LLM/GPTs.

An excellent introduction is found in "Your Brain on ChatGPT: Accumulation of Cognitive Debt when Using an AI Assistant for Essay Writing Task" — https://arxiv.org/pdf/2506.08872

Epistemic debt

Emerging meaning: the hidden, long term cost incurred when systems are implemented without a full understanding of how they work, creating a gap between system complexity and human comprehension.

Note: Knowledge of how they work does not need to be held by one person but can be maintained in a chain of comprehension with many actors (including vendors). The debt represents "unearned" knowledge that functions temporarily but leads to high maintenance risks and fragility. It operates at the organisational level and is rapidly growing through use of LLM/GPTs e.g. vibe coding.

See "Epistemic Debt: A Concept and Measure of Technical Ignorance in Smart Manufacturing" — https://link.springer.com/chapter/10.1007/978-3-030-20040-4_8

Or for a more general note, my post on LinkedIn — https://www.linkedin.com/posts/simonwardley_x-how-many-executives-are-looking-at-code-activity-7426577558827216897-5Y0G

Brave New World

My concern with LLM/GPT generated code isn't that developers are delegating because developers have always delegated to libraries, frameworks and even compilers. It's that the delegation has extended to comprehension. There is no chain, just systems that cannot explain their reasoning beyond generating plausible sounding explanations for code it has already produced.

The reasoning and the understanding is lost. And without that, so is learning. We are building brick upon brick of epistemic debt, promising a future where success no longer depends upon anyone being able to reason about it, let alone understand it. With vibe coding, we've even gone so far as to celebrate this.

I can't help but remember Quinn Norton's warning "Build it badly, and they will come" and realise that everything is heading towards broken, including knowledge and our ability to reason. As Quinn said,

"the geeks and the executives and the agents and the military have fucked the world. But in the end, it's the job of the people, working together, to unfuck it."

That will become a lot more difficult as we lose the ability to reason and understand the systems around us.

Epistemic debt illustration

Originally published on Medium.