Matthias Lüdtke's better-idea.org

Book: A Philosophy of Software Design

Several years after Clean Code, which I always found overrated, A Philosophy of Software Design (2021) felt like a real breath of fresh air.

Because the book addresses the broader question “What makes code hard or easy to understand?” it is, in practice, more useful as a guide for writing maintainable software than Clean Code, which focuses heavily on narrow stylistic rules.

Early on, Ousterhout states:

One of the most important goals of good design is for a system to be obvious.

He then analyses examples that demonstrate this principle in practice.

The key idea that stayed with me—and one I plan to explore further—is the concept of deep modules:

Deep modules: The best modules are those that provide powerful functionality yet have simple interfaces.
The most important issue in designing classes and other modules is to make them deep, so that they have simple interfaces for the common use cases, yet still provide significant functionality. This maximizes the amount of complexity that is concealed.

Ousterhout’s talk at Google is also worth watching: A Philosophy of Software Design (1 hour, highly recommended) www.youtube.com.

A few more quotes that capture the essence of the book:

Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.

Complexity is caused by two things: dependencies and obscurity.

Design systems so that developers only need to face a small fraction of the overall complexity at any given time.