"No Battle Plan ever survives contact with the enemy" - Helmuth von Moltke the Elder
Recently, I was asked a question about my estimate for fixing and rewriting a property valuation system in Melbourne. I created the estimates after a 5 day specification review of their 26 applications (some of the apps had 300+ aspx pages and 200 user controls) and 20 SQL 2000 databases.
The client was concerned that one of the releases in the project was going to go 30% over the original baseline figure (of we warned the client before this happened - that is why he raised his concerns). He reasoned to me: surely after 5 days of doing the original spec review, I should have been able to give them an accurate estimate for the 6 month project.
This project has highlited some of the hazards that go with estimation - in particular - projects that deal with code written by other developers. The truth of the matter is that it is MUCH more difficult than for estimating a new application. In particular, every line of code can potentially be a shock or a nightmare.
This brings me to offer the quote "No Battle Plan ever survives contact with the enemy". In my case, this skirmish was against buggy code from a stream of developers that had "contributed" their expertise (or lack thereof) to the group of applications. Project Managers be warned! For normal projects, you take the your/the developer's estimate and double it. When you are dealing with other peoples code, I would say it is safer to triple it.
Another point that was also raised that "builders and construction companies give accurate estimates. If they can give a fixed cost for this project, then why can't SSW?"
I believe there is a fallacy amongst the general population (especially within the IT industry) that somehow builders and construction workers give accurate estimates. Nothing could be further from the truth. My boss was given an estimate by a builder for home renovations - that it would take $20K to complete the work on his house at Coogee. $200K later, they were about half way there. All the construction work I have had done (e.g. bathroom renovations) has had "unforeseen problems" and has costed more than what I expected. In fact, there a people paid in the construction industry purely to say whether work is "additional" and will cost extra or not. This is a testament to the fact that the scoping of building projects is innacurate - and often deceptively so. I wouldn't be surprised if a construction company found out a way to make a roof an additional item for a building!
The best thing that a Project Manager can do (in IT, construction or otherwise) in giving estimates is to be transparent and truthful with the client and to break down the project into as many finely grained tasks as possible. Price each component individually. This forces the estimator to examine the project with a fine-tooth comb before one line of code is written. If estimates are broken down an substantiated, then they can be more accurately analysed so we can learn from our triumphs and mistakes (aka underestimates).