01 / Classic Textbook Recommendation
Classic Textbook Recommendation
Who this book is for
Students in a software engineering or software design course who have written enough code to feel the cost of poor structure, and early-career developers who want principles for deciding how to divide a system into modules. It suits readers looking for design ideas they can apply to their own code rather than a survey of processes and tools.
Prerequisites
Experience writing and maintaining programs of moderate size in any language, such as a substantial course project.
What it covers
The nature and causes of complexity; working code versus good design, and strategic versus tactical programming; deep and shallow modules; information hiding and leakage; general-purpose versus special-purpose interfaces; layers of abstraction; pulling complexity downwards; when to combine or separate code; defining errors out of existence; designing things twice; writing comments first and describing what is not obvious; choosing names; consistency; and design red flags.
How to use it
Thomas and Hunt's The Pragmatic Programmer offers wide-ranging advice on the craft and habits of professional programming; this book focuses narrowly on how to structure code so that it stays simple. Prefer it when design decisions are your main concern. Read it in a few sittings, then apply the red flags when reviewing your own projects.
Edition and sources
Second edition, published by Yaknyam Press in July 2021 (paperback, ISBN 9781732102217); it adds a chapter on deciding what matters and a comparison with other design advice. Bibliographic data for this record comes from AbeBooks.