I'm new to a situation where a development team refuse to estimate anything until they have a fully defined spec. My angle to obtain estimates is to provide just enough of a spec so they can provide an estimate that has a degree of confidence behind it for e.g. 6 months development time plus or minus 10%. Then I want to refine it over time and set the stakeholders expectations so that they know the estimate will improve. What other techniques could be used in a situation such as this where a lot of discovery is required up front on a large project with a team that pushes to only estimate when they have everything.
|
Per the Cone of Uncertainty, you won't be able to get estimates that have deviations of plus/minus 10% until much later in the project, at least after requirements engineering is complete. For a more agile approach, you would be able to estimate the sprint within this amount of accuracy after detailing the requirements to be implemented in the sprint. For a more plan driven approach, you need to finalize the spec first and even get into system design before you approach this level of certainty. The team also needs to realize this - it's very much acceptable (and well documented by experts such as Barry Boehm and Steve McConnell) for estimates to vary by 200-400% if you just have a concept and a portion of the requirements. If you are looking for estimation techniques, there are plenty. If your development team consists of experts in the technology and domain, consider Wideband Delphi. It was first described in Software Engineering Economics. The idea is that you get your experts and have them estimate, then discuss and refine their estimates to come to a concensus. It's rather similar to techniques such as planning poker from Extreme Programming. Steve McConnell's Software Estimation: Demystifying the Black Art discusses a number of other techniques and tools for estimation, as well as working with both clients and development teams on estimates, schedules, and deadlines. Although it's geared toward project managers and technical leads, it is consumable by developers as well and I would highly recommend a copy of it. For overcoming the team's lack of desire to estimate without a spec, I would work with them to explain why it is important that they at least try, even though you know there will be great uncertainty. This is a conversation and even a negotiation to come to an agreement, and there have been many books written on these subjects, and I have to recommend Getting to Yes, Getting Past No, and Difficult Conversations as three leading books on how to have these conversations and discussions. |
|||||
|
|
First, it is a safe assumption that in software development industry you won't have precise estimates if you trying to plan 6 months ahead. Second, despite of all the uncertainty of half-year-long estimates, and even more uncertainty attached to estimating incomplete or vague requirements, in vast majority of cases stakeholders need to know a general time span and general cost of a project. Is it going to take days, weeks, months or years? Do we need one developer, whole team, a few teams or the whole division? These questions are always valid, even if your approach is that you avoid estimating whenever possible. In such case I would start with trying to understand why a development team refuses to estimate before full specs are delivered. I mean you will address the situation differently when they actually believe they are going to have their estimates right when they get the full specs than you will if they refuse to estimate as they've been constantly hit because they didn't have their estimates perfect. Either way, to have anything to start with I'd ask the team for just a coarse-grained estimate, also known as wild ass guess, just for the sake of building general insight how much it can take to build the whole thing. Note: I would go either with multiple-point estimate, meaning it would take something between 3 and 6 months, or estimate with probability attached to it, meaning we have about 80% chance to complete it in 5 months. Remember: development team has to be sure that if they are wrong, for whatever reasons, on this coarse-grained estimate no one is going to shot them. Otherwise they'd refuse to make any estimates at all. Then your actions would depend on a situation:
|
|||||||||
|
|
If the team doesn't feel like they have enough information to estimate, you should probably listen to them. Especially if you're trying to get +/- 10% on something the size of 6 months. Talk to them and see if there are specific concerns they think need to be addressed, or if they feel like there is insufficient information across the board. It is possible (even likely) that the team has been asked to do estimates like this in the past and has gotten burned by it. They've likely seen instances where lack of some details in the requirements has lead to drastically different understanding between what they thought needed to be done and what the stakeholders actually expected. If you haven't already done so, consider spending a couple days putting together story maps, including stakeholders as well as at least some portion of the development team. The development team can ask the questions where they see holes, and the stakeholders can fill them in. It helps ensure that everyone has the same vision of what is actually expected to be accomplished. If the team thinks there are still significant risks, be willing to accept that either +/- 10% may not be achievable, or you are going to have to decide whether you can ensure that risks and scope are managed correctly during development. |
|||
|
|
|
Change the consequences (real or perceived) of the team over or under estimating. It sounds like they feel they will be held to the estimate with dire consequences if they get it wrong. If you are producing fixed price quotes for clients based on those estimates, you will get burned (particularly with only 10% - 6 months ahead you should factor in a minimum of 50% deviation). This creates a huge disincentive for the team to estimate. Consider moving to hourly pricing, build in higher margins/reserves and improve your requirements gathering process. All of these will change the environment in which the estimates are produced and therefore change the dynamic between the pm and the team doing the estimating. |
|||
|
|
|
Please consider the games presented by James Grenning: http://www.renaissancesoftware.net/blog/archives/36 In particular, deal-and-slide has done me well. These games really seem to take a lot of the time out of the exercise and make it more fun. A lot of the trouble you're having is that the team is afraid that any number they give is a hard commitment, or will be seen that way by managers further up the chain of command. If you pull them together to get rough sizing with the intent of making estimates later, you might have more success. Of course, if a number of "size one" stories are done and all take two days, you'll have a sense of what "size one" stories are. |
|||
|
|