Simplicity

Summary: Managing complexity through abstraction to make systems easier to understand.

Sources: chapter1

Last updated: 2026-04-15


Making a system simpler does not necessarily mean reducing its functionality; it means removing accidental complexity, which arises from the implementation rather than the problem itself (source: chapter1).

Abstraction as a Tool

One of the best tools for removing accidental complexity is abstraction. A good abstraction can hide a great deal of implementation detail behind a clean, simple-to-understand facade (source: chapter1).

Examples of Abstractions

  • High-level programming languages: Hide machine code, CPU registers, and syscalls.
  • SQL: Hides complex on-disk and in-memory data structures, concurrent requests, and inconsistencies after crashes (source: chapter1).