Error-Resistant Design

Categories
Design
Sources
A Philosophy of Software Design, The Design of Everyday Things

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

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.