A couple of months ago I had a few moving companies come to our old home and give us estimates of the cost. Each company sent out a sales representative who walked around the house, attempting to determine how many people and how much time it would take to pack and perform the move. One company came out with a significantly lower estimate, and they had moved other people that I knew. So, we decided to go with them.
On 'packing day' the two packers showed up just when they said they would. Within 15 minutes, though, they said that the sales rep had underestimated how much was there. In the end, what was estimated to be an 8 hour job took 12.5 hours.
The next morning the movers arrived, also right on time. It only took them about 5 minutes to start saying that there was more than estimated. The lead mover then spent the rest of the day griping about how the move had been underestimated. I spent the rest of the day griping about how the sales rep said that the move wouldn't cost more than the estimate.
By the time the movers had the truck loaded, they had determined that several substantial objects wouldn't fit without a second trip (and the associated extra costs). So, I had to cut scope.
OOOPS... I think I just gave away the point of this blog entry!!
Here I was, the Customer, being told that I had to cut scope or face additional charges. I didn't get to choose what was going to be left behind for me - the movers told me what wouldn't fit.
It sucked. A lot.
After some reflection, I wondered if sending at least one other person to handle the estimation would be better. The sales rep assured me that he had 25+ years in the moving business, and I have no reason not to believe him. But this is the same failing as having a business or systems analyst go off and gather requirements and determine the size of a project:
No matter how much experience you have, estimating in the absence of the people who will actually do the work will lead to errors that affect the ability to deliver all that is required, a quality product, or both.When estimating, include as much of the core Project Community as possible. If that means juggling some schedules to fit everyone in, then do it. Having that input is critical since it provides sanity checks on the amount and type of work to be performed. Involving more people will increase the likelihood that someone may have an idea for a simpler implementation of a particular feature. Involving more people increases the level of understanding about the problem to be solved for everyone. Involving everyone increases the cohesiveness of the community that will work together.
I knew intuitively that, from the Customer's or Product Owner's perspective, the traditional estimation process where people talked to you then went away and dreamed up a schedule just didn't work very well. Now, having been that Customer, I know for certain that it's the case.