Skip to content
all episodes
Code of Leadership · episode 21

A Philosophy of Software Design: Deep Modules Hide Complexity

1:11:41

Episode participants

Conversation

What we discussed on the recording

Grigory Skobelev leads platform engineering at a Mexican fintech and hosts the Between Brackets podcast. He examines the first half of John Ousterhout's A Philosophy of Software Design. Ousterhout is a Stanford professor and one of Raft's creators, while the short book offers practical advice for experienced engineers.

The main enemy of design is accumulating complexity. It appears as change amplification, cognitive load, and unknown dependencies. The speakers discuss how blind deduplication, excess abstraction, and tactical programming raise future cost. A strategic approach invests in clarity and makes technical-debt trade-offs explicit.

The book's central image is a deep module with a simple interface and substantial hidden functionality. Tiny modules, a shared database, and leaky abstractions force users to understand implementation details. Information hiding, shared core modules, and separate concrete adapters localize knowledge and reduce coupling.

Generality is not a goal by itself: seek the smallest interface, ask how many cases it serves, and avoid a heavy API for a one-time migration. Pass-through classes that only forward calls add little value. The episode stops after seven chapters and leaves the second half for a follow-up.

Engineering managementProductStrategyLeadership