Carefully written books are not the rule in computing where the speed of developments often overtakes an author while he still broods over his topic. Much in IT is , for this reason, written in great haste. The present book is a rare exception to this rule. It is the outcome of many years of experience and repeated verification of the techniques presented.
Software estimation, i.e. the informed guess at how long some task or project will take and what kind of effort is required, is a necessary prerequisite for steering a project: Unless a project manager has some idea of the schedule ahead, he is not in a position to plan and staff a project, let alone provide the necessary budget. But how does one make reasonable assumptions about an uncertain future? The key, at least in software development, is estimation. Estimation is not a black art, insists the author of the present book, but there are techniques which help making informed and well reasoned assumptions about the future. These techniques are what the book is about. The book has three parts: It starts by examining the the critical estimation concepts. I have in particular enjoyed reading about where estimation errors usually come from. The core of the book is part two, which is devoted to estimation techniques. At their very foundation is 'count, compute, judge', not guess. The last part discusses the various estimation challenges, which include converting estimates into planning parameters, or political issues resulting from contentious estimates.
Where much praise is due some criticism is also in order. If there is one aspect of estimation which I think remains somewhat out of focus then it is the question of the sources of requirements. The book, in its larger part, assumes that requirements are given in a form which is accessible to estimation. In actual practice this is not usually the case. And even if requirements are available, estimation usually requires that these requirements should be brought into a formal form which allows one to submit them to 'counting, judging, computing'. There are few hints in this book regarding these two fundamental questions. The first might be delegated to books on requirements engineering, while the second, I think, should have been included, at least in the form of extended examples (the examples of the book are suitably simple for the purpose of the exposition, they remain sub-ideal as applicable templates).
The art of estimation is one of the tools that should be in any architects toolbox. Unfortunately, this tool is often forgotten in introductions to (pragmatic) software architecture. As I know no better book on the topic of estimation, I think this book is a must-have for all software architects. Or should I say: A must-read!