Error-Resistant Design
- Categories
- Design
Designing systems so that errors are hard to make, structurally prevented where they are costly, and easy to recover from where they slip through. It treats error as a property of the design rather than a failing of the user, combining the elimination of error conditions, constraints on dangerous actions, and tolerance for the errors that remain.
Composed Of
- Define Errors Out of Existence — redefine semantics so whole classes of error simply cannot occur.
- Forcing Functions — block progress through a dangerous or invalid state until it is corrected.
- Slips and Mistakes — distinguish execution errors from planning errors so each gets the right remedy.
Why it Matters
Across software (A Philosophy of Software Design) and physical and digital artifacts (The Design of Everyday Things), the same insight recurs: the cheapest error to handle is the one that cannot happen, and the next cheapest is the one the user can undo. Relying on care and attention does not scale; structure does.
Signals
- Error handling scattered across every call site.
- Recurring "user error" that is really a design gap.
- Irreversible actions sitting one slip away.
Risks
Over-constraining capable users until the forcing functions get bypassed; eliminating "errors" that callers actually needed to know about.