This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:
  • Diomidis Spinellis. Software engineering for the rest of us. IEEE Software, 24(4):107, July/August 2007. Book Review: Code Craft: The Practice of Writing Excellent Code. Green Open Access

Citation(s): 1 (selected).

This document is also available in PDF format.

The document's metadata is available in BibTeX format.

Find the publication on Google Scholar

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

Software Engineering for the Rest of Us

Diomidis Spinellis


Pete Goodlife, Code Craft: The Practice of Writing Excellent Code.  No Starch Press, San Francisco, 2007.


Most software engineering books are written as textbooks.  Geared at hapless students who typically don’t have a saying over their course’s content, they are often dry lists of term definitions and methodologies.  Pete Goodlife’s “Code Craft” claims on the back cover to be “a survival guide for the software factory”.  That it is, but it is also a brilliant software engineering book.


Software engineering is not an abstract academic topic.  It is the body of knowledge that every developer should be familiar with and apply day in day out.  Goodman starts his work from the point where rubber hits the road: code.  He presents defensive programming, discusses presentation and naming, commenting, and error handling.  He then moves on to what he calls the code’s secret life: tools, testing, debugging, build management, performance, and security.   Only then does he discuss factors affecting the code’s shape: design, architecture, growth, and maintenance.  The last three parts of the book cover less tangible and no less practical topics: programmer characteristics, teamwork, source control, specifications, code reviews, estimation techniques, methodologies, and specialized programming  disciplines.


“Code Craft” is an ideal introduction to software engineering for both students and budding practitioners.  Through its emphasis on coding, the activity that at the start of our career monopolizes our time and interest, it succeeds at imparting practical hands-on advice that we can immediately apply next time we’re in front of a keyboard.  More advanced topics follow naturally, as issues that we inevitably stumble upon as we advance through our careers.


Academics looking for detailed references for every topic discussed won’t find them here.  On the other hand, readers are guaranteed to understand every single paragraph, and will also get almost 100 pages answering the exercises appearing at the end of each chapter.  If you’re asked to recommend a single book to a developer, “Code Craft” is a perfect candidate.