Writing software is a creative activity encompassing art, science, engineering, and craftsmanship concurrently. The title of the book, Code that fits in your head, aptly summarizes the mastery that a developer must exercise. Comprehensibility is the goal. Code must be read and understood by people, and people have a limited capacity in managing complexity.
The book is divided into two main parts comprising approximately 70 percent of the text in the electronic book version. The first part, “Acceleration,” describes processes and activities taking place from concept to working sample of a software project. The second part, “Sustainability,” places emphasis on keeping an existing software product or project vital. The remaining 30 percent of the ebook version is the code archive of the project developed in the book. The print version of the book points to a downloadable archive.
Both parts of the book include chapters on the art, science, and craft of software development and chapters of implementation using real project code through its various stages. The first part has nine chapters. The first three chapters are on more theoretical topics. Principles and heuristics are presented as skills and mindsets that ought to be developed. The important lessons are that the complexity of a major software project must submit to human understanding and that there are means that developers may employ to maintain control of the work. The next five chapters show how a single aspect, a “vertical slice,” of the project can be developed from a concept to a working piece of software. The project is a reservation system for a restaurant. In these five chapters the project goes from a concept to the application programming interface (API) for the system, and produces a piece of software that takes input, validates entries, and connects to the Internet for remote entry and places the captured data in a database. The ninth chapter returns to the problem of how developers might productively work in teams.
The second part shifts focus on the project developed in the first part, as if it were an existing system that needs to be maintained. Its seven chapters cover technical topics such as augmenting code, unit testing, troubleshooting, and a survey of the “usual suspects” adversely affecting code usability, longevity, and manageability. The softer human aspects of software management are woven through the technical discussions.
The two parts of formal presentation are followed by an appendix in which the 28 software practices and heuristics employed in the discussion are summarized. The book has an extensive bibliography.
The author uses a lively, conversational style of writing while retaining focus on the science and craft of software development. His knowledge and understanding of software engineering is obvious. The introductory sections of the book state that the book is intended for the experienced programmer/developer. This is true since the code examples presume competent familiarity with C#, JSON, ASP.NET, and related software environments. And yet there is so much that could be of value to novices. University undergraduates preparing for a final capstone project would find many of Seemann’s lessons and arguments useful. The author should consider writing a “fundamentals” text based on this book for this readership.
More reviews about this item: Amazon