This is a practical reading companion to the first edition of John Ousterhout's A Philosophy of Software Design. It organizes the book's design ideas into a rulebook, a review checklist, a source map, and reusable instructions for coding agents.
The central concern is the knowledge needed to understand and change a system. Working code is necessary, but an interface can still make later changes difficult by exposing details, spreading decisions, or creating hidden dependencies.
Use
The rules include rationale, examples, exceptions, and review questions. The agent instructions are a compact adaptation for project work; they are not a replacement for the fuller argument or for project-specific constraints.
This is an interpretation and working guide, not an independent theory of software design. A rule earns its use when it reduces the overall difficulty of the actual system. Applying a pattern, reducing a line count, or satisfying a checklist is not sufficient evidence that the design improved.