The Cone of Uncertainty, described by Steve McConnel, shows what any experienced software professional knows. Which is at the beginning of any project we don’t know exactly how long a project is going to take.
Bạn đang xem: Cone là gì
The reasons for this are many. No two ever projects have:The same requirements. The same people. The same business context. The same technology. The same priorities & constraints.
Each is chất lượng. Every line of code is hand crafted. And knowledge work involving smart creative people doesn’t lend itself khổng lồ precision the way ditch digging does.
Yet precision is what is asked for. Sponsors want khổng lồ know exactly when the project will be done, và how much it will cost.
Dealing with this conundrum is almost as old as time itself. Here are a few ways teams and companies are khuyễn mãi giảm giá with this uncertainty.
Dealing with the cone
Pad the estimate
After feeling the sting of underestimating, one comtháng reaction is lớn double or triple the estimate the next time round. This definitely lowers the upfront risk, but padding the numbers is harder than it sounds.
Give sầu too big a number, & sponsors will balk & not approve sầu your project. Give sầu too low a number and you risk running out of money. This gets doubly dicey when you are bidding on fixed bid contracts where there is even more pressure khổng lồ keep the numbers down.
Most projects add some kind of padding onkhổng lồ the final numbers khổng lồ give themselves sufficient wiggle room. Another things teams can do is compare this project with others.
Size the project relatively
Humans are really good at sizing things relatively. We can’t tell you precisely how big a rock is. But we can tell you how big it is compared khổng lồ something else. We can use this when sizing projects too.
Be upfront & honest
Agile’s default mode of operations is transparency & visibility. So it should be no surprise that the Agile way of dealing with the cone is lớn be upfront & honest.
Look. We don’t know how long this is going to take. This is our best guess. But if you give us a couple iterations, we can build something, measure how long that takes, và then tell give sầu you a much better sense of how big this thing is.
Another approach some Agile teams will take lớn help communicate the uncertainty is lớn present the estimates as a range.
This has the advantage of visibly showing sponsors the uncertainty that comes with the project, và then letting sponsors decide how much risk they can afford to take on.
Another approach that makes a lot of sense, but unfortunately I don’t see applied often enough, is incremental funding.
With incremental funding you don’t ask for the whole bag of money upfront. Only enough to spike through enough of the work, lớn report bachồng a better number on how long it is going to lớn take.
It’s not foolproof. You can still run inlớn trouble later on. But by giving teams $30-50K, letting them build something & seeing how long that takes, can go a long ways lớn reducing the variance in that upfront number.
You can read more about this way of planning và the advantages it brings in Beyond Budgeting
The Root Cause
We live sầu in a world of annual budgets. And unfortunately this drives a lot of the tension và drama in our workplace. In some ways annual budgets are natural (we live sầu & track time in yearly cycles) but in others they are terrible for planning as a year is a long time in the marketplace. If you find yourself getting tripped up by the cone of uncertainty, just remember the whole point of software estimation is to lớn determine whether the project is even possible. Or as Steve sầu McConnell says: The primary purpose of software estimation is not to lớn predict a project’s outcome; it is to lớn determine whether a project’s targets are realistic enough to allow the project to be controlled to lớn meet them.