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).