A frankly excellent book that imparts a perspective sorely missed from today's agile, fail fast mentality. I have been a happy victim to the agile and lean salesmen out there who extole the virtues of a rapid iteration and feedback cycle, leaving the naive developer to assume that planning and design becomes less important than writing code.
Scrum sprint planning 2 tries to pitch itself as a time for Devs to come together and actually think about their work but it generally gets neglected in favour of "getting to it".
Glenford J. Myers proposes, as I have been coming to realise painfully, that putting the "coding pad" (yeah it's an old book in software industry years) down and pausing to deliberately and systematically design an implementation and provide a language with which to discuss the merits of said design.
This book is giving me a lot to think about and a lot of ideas to bring back to my team. Having tried my hand at designing a couple of systems since reading the book I am learning that there is definitely an art to do doing it effectively, but the act of simply taking a thorough mental dive into my coming project, prior to writing a line of code, is proving to be massive. You know, as every CS professor ever encourages. As Churchill says, "plans are worthless, but planning is everything." Even if our end result looks nothing like the design, the design will have given you enough confidence and mental flexibility to mould it into the final product, iteratively, in a beautifully modular, well organized and testable fashion.
An interesting view of the evolution of software design and development, the examples are as dated as expected from a book published in 1975 about software engineering, it includes language that makes allusions to code pads, punch cards and PDP-11s. In a high level it gives a good analysis and reasoning about the now almost dogmatic suggestions about naming modules, the placement of functions in them and the why's of stuff like avoiding global variables and gotos.