It is popular to claim we've never done this before, so how can we possibly estimate the cost and schedule. If it truly hasn't been done before, then the software project is likely to be an inventing new physics project. Having worked in the particle physics domain, inventing new physics is something I'm familiar with. In that world, we still made estimates of the cost to design, build, and operate the experiment. As well we made estimates of what information will be produced after spending the customers (in most cases the government is the customer) money. Estimates are made of the data quality, the aleatory and epistemic uncertainties of the experimental processes and the data they produce.
Estimates are at the heart of all inventing new physics activities.
So no more cockamamy examples of we can't possibly know. Instead, invert that logic. If it's knowable, then go find someone who does and admit, that person may not be you.
One place to start is the Reference Class database of projects. Here's a small sample from Capers Jones and ICEAA materials.
- 4SUM Partners Inc. (Finland)
- Nederlandse Software Metrieken Association
- International Software Benchmarking Standards Group
- Capers Jones & Associates LLC
- CAST
- Common Software Measurement International Consortium
- David Consulting Group (DCG)
- Galorath Incorporated
- German Computer Society Interest Group (GI)
- Jerry Luftman (Stevens Institute of Technology)
- Price Systems LLC
- Process Fusion
- Quantimetrics
- Quantitative Software Management (QSM)
- Q/P Management Group
- RCBS, Inc.
- Reifer Consultants LLC
- Software Benchmarking Organization
- Software Engineering Institute (SEI)
- Software Improvement Group (SIG)
- Test Maturity Model Integrated (TMMI) by Geoff Thompson
So when you hear we can't know how long - what it really means is - I personally or my colleagues don't know how to estimate. But since ...
There is NO principle by which you can decide in the presence of uncertainty without estimating.
For those asking and paying, there are several choices.
- Ask the development team to research the problem in one of several ways - find a reference class, build a model from a prototype, or similar exploration processes before increasing the fidelity of the estimate.
- Go find someone who knows how to do this and hire them.
This way, as the person paying for the Value produced by the work, you can start down the path of holding the development team accountable for their work. And that development team can start holding you accountable for being a good manager.
Some Background on this Topic
[2] Avoid Software Project Horror Stories