Measuring Uncertainty in Software Development
Tips for Dealing with Uncertainty in Software Development
When asked to model pricing for developing software, one difficulty estimators face is that the precision expected in the quoting process is often not reasonable given the uncertainty inherent in such estimations. Data on past development projects can be misleading, making it an unreliable source when trying to figure out what future projects will cost.
As a project manager, this creates a conundrum when you are asked to provide development pricing estimates: if you decline to do so based on the uncertainty, it may bring into question your ability to do the job properly; if you do give an estimate that proves to be inaccurate, a similar result is likely to occur. Even if your estimate is reasonably accurate, the good-will this will earn you can evaporate rapidly if your next estimate is less-than-accurate.
Given the variability inherent in modeling software development factors such as delivery dates and pricing, project managers should exercise caution when estimating these variables. Rather than fixating on coming up with fixed numbers, a better approach may be to embrace uncertainty and build it into the planning and budgeting process. The following tips cover various methods you can use to take uncertainty into account in the software development process.
Utilize Sequential Planning and Periodic Funding
Planning for software development projects is not a static process, as a result periodic planning is preferred. Rather than drawing up an initial plan and sticking with it for the entirety of the development process, your plan should be updated and refined as new information is learned. This enables efficient planning over the totality of the planning process, and often proceeds as follows:
- An initial plan constituting a proof of concept outline is drawn up
- As work is performed, the initial plan can be fine-tuned based on the data received from the initial tests
- This approach helps cost a project, given that programming hours worked often make up the greatest portion of the cost of such projects
- It also enables project managers to adjust estimates and improves their decision-making over the course of the project
Funding for software development projects using sequential planning should be periodic to reflect the potential changes in the project as planning for it develops. This requires a higher level of transparency than in typical projects where funding needs are determined upfront. To ensure buy-in, all stakeholders should be informed of the various factors involved in drawing up and refining the initial plan and determining the funding requirements for the project as it moves forward.
Estimate Based on Ranges Rather than Single Sources
Providing estimates based on a single price point source in software development is likely to be less productive than using a range of price points. High- and low-price estimates provide the development team with some leeway as the development proceeds. The range estimates can be updated as each segment of the project is completed, using past experience to help refine the estimates on an ongoing basis.
Justification for this approach stems from the well-documented tendency of software development programs to be hard to forecast from a cost standpoint. With actual results often diverging from single point budgeted results by more than 30 percent, the trend in the industry is to work from a range of cost estimates while closely monitoring pricing trends rather than to rely on a single fixed cost estimate. This approach typically provides a more realistic appraisal of costs, avoiding budgeting disputes that can imperil a project’s completion.
One method for using range estimate can be performed as follows:
- To avoid making the price estimation ranges so large as to be meaningless, industry data for similar projects can be used to check the provided range
- If your proposed price range deviates substantially from industry averages it may be a sign that your estimates are overly broad
- If this is the case, reexamine your estimates to make sure that you can justify specifying a range that significantly exceeds industry averages for similar project types
Provide Premium Features First
An approach associated with Agile software development is to deliver premium features, those that offer the highest value, prior to less valuable features. This adds value to a project by enabling the most useful features to be put into operation as soon as possible. It also provides time to work out issues associated with features further down the value-added ladder.
For instance, if you were developing software to provide factory floor automation, with deliverables which included the ability to enable continuous line operation, provide alerting functions if a machinery operation error occurred, and automate floor lighting, the last of these would likely add the least value. Therefore, the first two functions would take priority, with an analysis of their respective benefits determining which of the two should be worked on first.
Another example might be a project aimed at automating inventory tracking at a retailer and updating the employee scheduling app to improve on the existing one. While both functions might be equally valuable for the company, the inventory automation functionality is likely to add more value as it would be completely new functionality for the company, while the employee scheduling app would simply improve an already existing procedure.
Address Unknowns at the Start of the Process
To successfully bring a project to completion, a high level of team collaboration is optimal. One way to foster this is to be as transparent as possible about challenges facing the project. This can be facilitated by addressing project unknowns at the very beginning of the development process. There can be a temptation to mainly focus on the known dimensions of a project at the outset of the development process. However, if doing so leads to a failure to consider project unknowns this can lead to problems down the line.
These problems can take the form of disputes over cost overruns necessitated by dealing with issues not initially conceived of in project planning, exacerbated by the loss of trust that can occur if certain project stakeholders feel that all issues relating to the project were not fully disclosed at the outset. To avoid this, robust communication and thorough disclosure in regard to potential issues, both known and unknown, is recommended.
Nuvro is a robust online project management tool that helps manage your software development team. With Nuvro you can gain control and peace of mind over all of your projects, tasks, team members, workload and everything else important to your company. In addition to the project, task and collaboration features found in most PM tools, Nuvro also provides a company dashboard, a team dashboard, team member performance reviews, secure document management, an internal alternative to email and more. Nuvro is perfect for busy teams looking to accomplish more. Learn More…