Book review Steve McConnell of Code Complete fame, is not joking when he describes software estimation as a black art, though even then he's being generous.
An art, even a black one, implies both skill and accomplishment. For most developers software estimation is one part blind panic and the other self-defence. Why should this be? And what can be done to alter the situation? These are the types of questions McConnell sets out to answer in Software Estimation.
In setting out to define what software estimation is, McConnell begins to tease out some of those answers, in particular the difference between an estimate and a target. You would think that these terms are clear and well differentiated, but in practice there's very often confusion between the two. When a manager asks for an estimate, often he or she is really looking to set a target. And when a developer responds, he or she knows that the manager is really after a target and so makes a political response rather than offering an honest estimate.
Defining terms is all well and good - it certainly helps to clarify things - but the aim of the Software Estimation is more than to offer a useful set of semantics. To this end, McConnell looks at both the science and the art of estimation, and he suggests a mix of calculation and judgement is needed to create estimates that are both useful and accurate to developers and managers alike.
As with Code Complete, McConnell has done a lot of homework. His job here is to popularise work going on in research labs and universities on the best estimation techniques available. Many of these techniques are really only applicable to larger software development organisations and projects. They depend, to a great extent, on having access to historical data and systems for accurately recording existing project details. For the science end of the estimation spectrum, counting, computing, and making judgements are key.
However, it's not just the big development shops who stand to gain from this book. If the range of "scientific" software estimation techniques are expensive, there are other techniques that are less science and more art. These range from sound advice - never give off the cuff estimates, try to use ranges in your estimates rather than a single point - to discussion of the "cone of uncertainty", which shows that there is greater variability earlier in a project, and therefore estimates are less likely to be accurate.
While not as immediate as Code Complete, Software Estimation is still an interesting and well-written book. McConnell has the knack of making complex research accessible to practitioners, and most software developers will key in to the issues he describes.
Will reading this book make your estimates more accurate? Well, it will certainly give you a lot more ammunition and some new techniques to try out. At the very least, there's plenty of food for thought.
Software Estimation: Demystifying the Black Art
Verdict: Well-written and interesting
Author: Steve McConnell
Publisher: Microsoft Press
Buy this book at Cash 'n' Carrion.