Domain driven design

Domain driven design by Eric Evans can be seen as an attempt to revive and modernize the art of object-oriented design as set out in the 1980s and early 1990s by Rebecca Wirfs-Brock and others. This book is concerned in particular with designing and building software whose structure and nomenclature closely mirrors the business domain. It is extremely comprehensive but its length makes it somewhat inaccessible. Better to pick through it carefully than read it cover to cover.

Flawless consulting

Peter Block's time honoured book on the process and practise of consulting. Primarily a book by a consultant for consultants, but well worth looking at if you have an internal consultancy role (officially or unofficially). Of particular interest is Block's process for engaging in a new role so as to maximize your effectiveness. Many people will recommend Secrets of Consulting by Jerry Weinberg over this book, but they should stand as equals. This is more systematic, Weinberg is more accessible. This book is probably the better of the two if you are a buyer of consultancy services.

More secrets of consulting

Weinberg's successor to Secrets of consulting has a somewhat different flavour. Weinberg presents a selection of conceptual tools based on the "self esteem toolkit" developed by Virginia Satir intended to help you find your way through difficult situations. As such it actually has very little to do with consulting but is nonetheless an interesting book. A little weak towards the end of the book. Buy Secrets of consulting first.

The Mythical man-month

Fred Brooks has become an iconic figure for his book The Mythical man-month. It covers some pretty basic "facts of life" for software projects concerning peopling, estimation, cost and so forth. Written in the early 1970s, the book seems so current that its occasional anachronisms are all the more astonishing when they appear. Very accessible and highly recommended.

Project retrospectives

A retrospective is a look back at a completed project (successful or otherwise) to draw out important lessons. The author, Norm Kerth, has worked as a retrospective facilitator for many years. His book is an excellent introduction to guiding organizational learning while avoiding blame and other negative outcomes. Kerth explains the process, facilitation techniques and underlying principles of retrospectives. Highly recommended.

Secrets of consulting

Jerry Weinberg at his most engaging. Secrets of consulting is a highly accessible book, presented as anecdotes and maxims. Probably the most often recommended book on consultancy practise. This book is primarily aimed at practising consultants, including those internal to an organization. It is worth also looking at Flawless consulting by Peter Block.

Software runaways

Robert Glass seems to make a living from software engineering war stories and probably does it bettter than anyone else. This book has been available for some time but, like The mythical man-month it never seems to lose currency. Compulsive reading if you have a morbid desire to learn exactly how wrong projects can go! Other books by Glass are worth looking at as well.

Waltzing with bears

DeMarco and Lister are both learned and entertaining speakers and their styles combine well to make Waltzing with bears an accessible and thought-provoking book on project risk. Overall the book is well structured and covers its subject to about the right depth. Good diagrams and some good case studies. The case study of Denver International Airport's baggage handling system is particularly interesting as you can read about it from another perspective in one of Robert Glass's books on software project disasters (see Software runaways).

Working effectively with legacy code

Michael Feathers' book on tackling legacy systems issues is a superb catalogue of techniques for breaking dependencies and introducing automated tests. It also does a very good job of teaching Feathers' thinking processes in approaching legacy issues. The book is quite heavily oriented towards C++, which probably generates more language-related legacy issues than any other programming language in common use. There is something there for users of other languages, particularly Java, but this is primarily a C++ book.