Cost and effort overruns tend to be about 30% and haven't changed much from 1980s to now. Estimation methods haven't changed, expert estimation still dominates. But we know more; author notes 7 lessons supported by research:
1. There Is No “Best” Effort Estimation Model or Method (important variable depends on context, also explains overfitting of advanced statistical estimation methods)
2. Clients’ Focus on Low Price Is a Major Reason for Effort Overruns
3. Minimum and Maximum Effort Intervals Are Too Narrow (estimates do not adequately reflect uncertainty)
4. It’s Easy to Mislead Estimation Work and Hard to Recover from Being Misled (strongest when estimators aware of constraints such as budget, resulting in "estimation anchor" bias even if unintentional)
5. Relevant Historical Data and Checklists Improve Estimation Accuracy
6. Combining Independent Estimates Improves Estimation Accuracy (groupthink leading to more risk not found in software estimation research)
7. Estimates Can Be Harmful (too low: low quality, too high: work expands; consider whether estimate is really needed)
3 estimation challenges research has no solution for:
* How to Accurately Estimate the Effort of Mega - large, Complicated Software Projects (less relevant experience and data available, cf #5 above; large projects also involve complex interactions with stakeholders and organizational changes)
* How to Measure Software Size and Complexity for Accurate Estimation
* How to Measure and Predict Productivity (large difference among developers and team only discernible through trial; we don't even know if there are economies or diseconomies to scale for software production!)
Practices likely to improve estimation, quote:
* Develop and use simple estimation models tailored to local contexts in combination with expert estimation.
* Use historical estimation error to set minimum - maximum effort intervals.
* Avoid exposure to misleading and irrelevant estimation information.
* Use checklists tailored to own organization.
* Use structured, group - based estimation processes where independence of estimates are assured.
* Avoid early estimates based on highly incomplete information.