Deep modules, shallow interfaces — the ideas keep paying off.
Ousterhout argues that complexity is the fundamental problem in software, and that most of our best practices should be judged by how well they contain it.
His core prescription — deep modules with narrow interfaces — is deceptively simple but changes how you draw boundaries in a codebase.