Often referred to as the "black art" because of its complexity and uncertainty, software estimation is not as hard or mysterious as people think. However, the art of how to create effective cost and schedule estimates has not been very well publicized. While the average software organization can struggle with project costs that run double their original estimates, some of the more sophisticated organizations achieve results with estimation errors as low as 5-10%.
These best-in-class organizations use scientific techniques that are not cost-effective, however, making them of limited use to most software development organizations. To address these issues, Software Estimation focuses on the art of software estimation and provides a proven set of procedures and heuristics that software developers, technical leads, and project managers can apply to their projects. Instead of arcane treatises and rigid modeling techniques, award-winning author Steve McConnell gives practical guidance to help organizations achieve basic estimation proficiency and lay the groundwork to continue improving project cost estimates.
This book is organized from simple tips to more advanced ideas; it does not avoid the more hairy mathematical estimation approaches, but the non-mathematical reader will find plenty of useful guidelines without getting bogged down in complex formulas.
Review By: Peter Clark 11/19/2010I have to admit: I am a Steve McConnell fan. My kids have Harry Potter. I have Steve. That said, I think Steve McConnell's "Rapid Development" is the best overview of software project management ever written. (I give copies of “Code Complete” to programmers for Christmas.) While his two most recent books weren’t up to the level of his earlier work, I couldn’t wait to see what Steve would have to say this time.
“Software Estimation: Demystifying the Black Art” is a home run.
Most treatments of the theory and practice of software estimation fall into one of two categories. There are thick, turgid tomes like Capers Jones’s “Estimating Software Costs” or Barry Boehm’s “Software Cost Estimation with COCOMO II.” Both of these books, while excellent, are written more for professional estimators and computer science doctoral candidates than your average developer or manager. At the other extreme is a typical article in the professional press or the odd chapter in books on project management--treatments too terse to really cover a topic that requires more depth.
“Software Estimation” splits the difference between these two extremes. It is an excellent survey of the practice of estimation, with just enough theory so that the reader can understand the underpinnings. The book is meant to be used as a tool. It has copious, well written examples and is organized to be read either straight through or by individual chapters with how-to instructions on estimating techniques.
I was particularly interested in the chapters covering the politics of estimates. McConnell covers this in two phases. The first chapter discusses how to present an estimate. All too often, an estimate is given as “single point” numbers--so many hours, so many weeks, so much staff. McConnell discusses the best way to communicate the degree of uncertainty in an estimate, as well as factors (schedule constraints, assumptions) that affect the result.
The second chapter covers how to negotiate with executives over the estimate. McConnell shows how executives will naturally attempt to change the estimate to something that is more in line with their business goals. Developers often are ill prepared for this kind of encounter, with disastrous results for both the executives and the developers. McConnell shows how to use “principled negotiation” and the estimation to arrive at a solution that is advantageous to both parties.
I have few quibbles with “Software Estimation.” I would like to have seen a discussion on using estimation to come up with a price. Most companies use a single point cost estimate, apply burdens and profit, and voila--a price! McConnell is very convincing that there is a wide range of possible project cost outcomes at the beginning of a project, when a price is typically set. I would like to have seen discussion of how to navigate through this uncertainty.
“Software Estimation” is an excellent overview of a topic that every developer and project manager should understand. Well written and insightful, I would put it on the top shelf with McConnell’s earlier work.