Experience is a required skill for an estimator. I don’t mean experience performing the tasks … they should be an experienced estimator. An experienced estimator can develop a reasonable estimate for an activity or project that has never been attempted before.
How is this done?
1. Identify the approach
2. Identify the steps or tasks required for each major activity
3. Identify criteria that affect the estimate (complexity, size, clarity of requirements)
4. Identify assumptions
5. Estimate each of the low-level tasks and come up with a total based on an average skill set.
6. Apply a risk adjustment to account for unknowns, lack of skills, assumptions
7. Add an additional amount of hours to anticipate potential changes.
– It is impractical for the estimator to be experienced with all of the tasks or technology. They must seek the opinions from Subject Matter Experts for approach and lower level task estimation.
– You may be able to leverage actual costs from similar projects but you still have to address the other issues.
– This get’s more complicated with Agile because requirements are evolving so you cannot estimate the entire project at the beginning. As each iteration is defined, a reasonable estimate can be developed for that iteration.
– All estimates are “ballpark” estimates. A good estimator can reduce the size of the ballpark. It is reasonable for good estimates to vary by +-25%. What we want to avoid is large variances (greater than 100%).