Home

Notes from A Philosophy of Software Design

My key takeaways from reading “A Philosophy of Software Design” by John Ousterhout. Those are mostly quotes from the book.

The Nature of Complexity

Symptoms of Complexity

Causes of Complexity

Working Code isn’t Enough

Modular Design

Module should be deep

Information Leakage

Different Layer, Different Abstraction

General vs Specialized modules

Define errors out of existence

Design it twice

Good code should be self-documenting

Consistency

Code Should be Obvious

Designing for Performance