Excellent book on how to design your part of the software, especially for beginners
The overall goal is to reduce complexity and conversely increase the ease in understanding and maintaining the software. The book is well structured and the discussions are all well made and drice home the point of the author. It is however mostly directed at newer software developers. Interfaces, naming, descriptions, all these things are important but are just the foundation to any developer out there.