A New Model Of Technical Debt

Noah Sussman
2 min readMay 23, 2021
A school of clown fish with their symbiote, the sea anenome.
Photo: Pratik Mehta on Unsplash

I think I found an empirical way to approach Technical Debt (a term coined on the c2 wiki in the early 2000s) and that is by thinking of technical debt in terms of meta-critical state that builds up in a software system over time.

Meta-criticality is a state of apparent stability that is in fact one bit flip away from sudden change which may lead to a cascade of other equally sudden changes. A lot of natural systems exhibit meta-criticality, for instance it’s important in the study of animal behavior such as bird murmurations and schooling fish.

There is solid evidence that any sort of complex system should exhibit meta-critical behavior at some level. What stands out to me about that in terms of computers is: we already know that computers behave erratically even though they “should” behave logically. We tacitly accept computers as being in a meta-critical state all the time. So it makes a lot of sense to go all-in and embrace an empirical model of meta-criticality applied to the behavior of computer systems.

Modeling technical debt as meta-criticality can be done using cellular automata. The Abelian Sandpile is a cellular automaton with a simple rule set and it is recognized as providing a good model of meta-critical and critical state and cascades. This is great news because it means there is a graphical, game-like approach to modeling our systems.

A lot of the work of QA or security testing, uses graphical models so cellular automata could represent a large expansion to the already large and mature practice of modeling for risk assessment.

Tightly Coupled Systems All Have Meta-Critical State And All Technical Debt Can Be Characterized As Too-Tight Coupling

In the investigation into what complex systems have in common (what are the general principles of complex systems?), it has been confirmed repeatedly by scientists that tight coupling alone is enough to produce a complex system. That is, when tightly coupled, nodes in a network will start behaving in a complex fashion without any further source of “intelligence.”

There is a mountain of evidence to suggest that extremely tightly coupled software systems are perceived by operators as fragile and unpredictable. Also the undesirable parts of technical debt all map directly to different aspects of a too-tightly coupled system.

So it seems that technical debt might be quantifiable according to some measure of meta-criticality in a system. And a good way to measure meta-criticality might be to use cellular automata to model the system, and then measure the model.

Beyond that it will take time to design and test the models. But it’s about time software testing got some new models so that time will be worthwhile!

--

--