OK, that's a got scope for a book. A long book.
But I remember a long time ago I did a small fixed price contract for a company. They wanted me to add some "simple" functionality to an existing app. They had the source, but no-one to do the work.
I'd never done a fixed price contract before, but I knew I'd never got any estimates right. I didn't like the idea of a fixed price contract much.
I started with - If you want a fixed price, pay me for one day to do the spec & estimates. This was (very) grudgingly accepted.
I sat down and broke down what needed to be done. With each part, I continued to break it down to the level where I knew exactly what was needed, and I knew that part would take less than 1/2 a day.
Anything longer than a Day was broken down more.
I went back with the estimate. I think it was about 3 weeks work. It's a long time ago. The manager thought I was winding him up, he'd expected about 3 days, not 3 weeks.
I had brought my list.
We went though the list piece by piece, and about 1/3 of the way through he said "Fine".
It took 12 days, not 15.
This was a task which had no unknowns for me. Each individual part was something I'd done already somewhere else, or at some other time.
Consider the amount of work that would be required to estimate a 3 month project for 6 people, working with 3 new pieces of technology that no-one on the team has used before. If you have not done something before, with a particular tool, it is possible that there's a snag. Do a simple test. Can I serialise the data as XML? Opps, the files are HOOOGE. We have to use something else.
Everyone wants accurate estimates, but no-one wants to put in the leg work to come up with the estimates.
You can of course still be wrong, but hopefully, not off by a factor of 5.
No comments:
Post a Comment