It seems as though to many, software as a whole is a black art. Someone asks for software to perform some vague set of requirements, and then some coders sit around a cauldron, stir in some eye of newt and some toe of frog, and some time later software comes out that hopefully does what you'd like it to do. With that sort of thinking, it ought to be no surprise that 50% of projects are delivered late, and that the average schedule overrun of those late projects was 120%. Software Estimation: Demystifying the Black Art is written for the average developer all the way up to the middle manager who wants to get a better understanding of what a good estimate is, and how to create one, without using complicated formulas or software packages. This should really be no surprise as his Steve McConnell is also the author of Code Complete, which is considered by many to be the best handbook on practical software development around.
From the beginning of the book, I couldn't help but nod and laugh. "Did that. Made that mistake. Was he working on my last project?" Most of us know what the problems with typical estimates are, but never before have I read such a succinct and concrete explanation of the problems with, and best solutions to, creating good estimates before. McConnell starts out with the most basic problem, which is defining the difference between an estimate, a target, and a commitment, and then goes on to explain the need to never be more precise than you have confidence in the accuracy of your estimate.
Many people don't even realize that they are probably not a good estimator, and a quiz is included which will help you understand whether you are one or not. You'll most likely be surprised at the results. Estimates have error, and sometimes a great deal of error, depending on where in the project you are. Of course anyone who has tried to properly convey this potential error to management knows it is usually not understood, or flat out ignored. McConnell provides many methods that you can use to present your estimates in such a way as to provide the most value, while also conveying the correct degree of uncertainty. He also covers a management favorite, which is whether it is better to overestimate or underestimate.