Modern Software Engineering

Dave Farley argues that software engineering should be treated as a real engineering discipline, grounded in empirical learning and managing complexity. The book covers continuous delivery, testability, separation of concerns, and modularity, tying each practice back to measurable improvements in speed and quality. The writing is opinionated but well-argued, and it hangs together as a framework rather than a grab bag of tips.