A Philosophy of Software Design
The best book on software complexity I have read. Ousterhout argues that the primary goal of software design is to reduce complexity — and that most engineering decisions should be evaluated through that lens. The concept of deep vs. shallow modules alone is worth the read.