Hall of FameBen Moseley, Peter Marks200698 min readpaperintermediate
Out of the Tar Pit
Summary
The paper argues that most complexity in large software systems is accidental, caused mainly by mutable state and tangled control flow. It proposes minimizing accidental complexity by using pure functional programming together with a relational data model, emphasizing simplicity over extensive testing.
- Mutable state is the primary source of accidental complexity; reducing state simplifies reasoning.
- A combination of pure functional programming and the relational model can eliminate many accidental complexities.
- Testing cannot guarantee correctness; simplicity and clear mental models are more valuable for large systems.
- Distinguish essential vs accidental complexity and target the latter with language and data model choices.
Software architects and senior engineers building large systems should care because managing accidental complexity directly improves reliability and maintainability.
6/10

