I recently came across a short paper titled How Complex Systems Fail, by Richard Cook, MD. It made me wonder if anyone had written a similar piece about how simple systems fail. I couldn’t find one, so I decided to write one. Here’s what I came up with (the How Simple Systems Fail is available too).
- Simple systems can fail.
While simplicity conveys several benefits over complexity, it does not prevent all failures.
- Simple systems fail less often than complex systems.
As complexity increases, so does the number of potential failure modes. Simple systems thus have fewer ways to fail than complex alternatives and tend to fail less often.
- Simple systems fail predictably.
A simple system’s failure has a finite number of potential root causes. Thus, simple failure tends to follow predictable patterns of cause and effect rather than surprising or puzzling pathways.
- Simple systems fail affordably.
Simplicity minimizes the resources required to recognize the system’s failure, assess causes and remedies, and then apply those remedies. The cost of a simple system’s failure is generally constrained.
- Simple systems fail transparently.
When a simple system fails, the failure and its proximate cause tend to be immediately obvious and difficult to overlook. With a simple system, post-failure attribution of a root cause is generally straight-forward, clear, and correct.
- Simple systems fail educationally.
Simplicity makes it easier to accurately diagnose the causes and remedies of failure. This makes it easier for designers to learn from the situation and apply the lesson to future designs, if they chose to do so.
- Simple systems are less robust to single-point failures.
Simple systems tend to have less redundancy than complex systems and thus have greater exposure to the possibility of single-point failures.
- Simple systems fail comprehensively.
The performance of a simple system tends to be binary – it either works or it does not. Simple systems generally do not run in degraded mode.
- Simple systems fail by being inadequate.
Simple systems exhibit “weak simplicity” when they fail to meet the user’s needs. This happens when designers emphasize simplicity over value and fail to incorporate the necessary level of complexity. The resulting system is sterile, inadequate, or underwhelming.
- Simple systems fail by appearing to be inadequate.
A simple system that meets users’ needs may nevertheless be rejected by observers who are unable to distinguish between weak and strong simplicity. The system may fail to be adopted by external users or internal sponsors who underestimate the system’s legitimate value.
- Simple systems fail by becoming complex.
The uncontrolled accumulation of complexity within an initially simple system can transform it into an unnecessarily complex system. This increases the number of failure modes, introduces fragility, and increases the likelihood of failure for what was previously a simple system.
- Simple systems fail by accumulating and increasing complexity in the larger environment.
A large quantity of interconnected simple systems can result in a complex “system-of-systems,” particularly when the simple components multiply without consideration for their aggregate impact.