A Philosophy of Software Design
John Ousterhout
This book addresses the topic of software design: how to decompose complex software systems into modules that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity, then discusses philosophical issues about how to approach the design process and presents a collection of design principles to apply during software design.
software-architecture code-quality backend intermediate deep-dive practical design-patterns productivity
architecture clean code clean-code internals under the hood hands-on hands on