Deep Modules¶
The best modules provide powerful functionality behind simple interfaces, maximizing the ratio of functionality to interface complexity
Tension Addressed¶
Depth vs. Breadth
Recognizable As¶
Small APIs with large implementations; Unix file I/O (5 operations, enormous capability); interfaces that hide complexity; methods that do substantial work; abstractions that pull their weight
Canonical Sources¶
Ousterhout, "A Philosophy of Software Design" (2018)
Transfers To¶
API Design (interface simplicity), Product Design (simple UX, powerful features), Management (delegation depth), System Design (abstraction layers)
Shallow modules (simple functionality, complex interface) impose cognitive cost without proportional benefit. "Classitis" - decomposition into many tiny classes - creates shallow module proliferation.