Book Profile
A Philosophy of Software Design (2nd Edition)
John Ousterhout · 2021
Software complexity is the root enemy of programmer productivity, and every design decision should be evaluated by how much it reduces or increases complexity in the system as a whole.
Get the book →John Ousterhout, creator of the Tcl scripting language and professor at Stanford, distills decades of system-building experience and classroom teaching into a concise, opinionated guide to software design. The book argues that the single most important skill a programmer can develop is the ability to recognize and fight complexity—the accumulation of dependencies and obscurity that makes systems hard to understand and change. Through concrete principles (modules should be deep, information should be hidden, errors should be defined out of existence), vivid red flags, and worked examples drawn from real systems, Ousterhout shows how strategic investment in good design pays back faster than most developers expect, and how even small, incremental design improvements compound into dramatically better codebases over time.
What it argues
A causal model describing how design-level decisions and developer mindsets generate or suppress the structural causes of software complexity (dependencies and obscurity), which in turn produce cognitive and operational symptoms that determine development velocity, bug rates, and system maintainability outcomes.