Best Practices for Software Project Estimation

Best Practices for Software Project Estimation

Software development projects involve variable attributes right from the idea inception phase. They involve definition of requirements and creation of the overall project scope through basic upfront information which is defined by fixed specifications. The developers need to play with dynamic variables and accurately predict specific estimates – specificity from dynamism. It is very difficult to accurately predict the various categories of estimates in an ambiguous environment with conflicting forces of unknown attributes. Organizations are always striving to discover the best technique to scope, plan and improve estimation strategies. They want to reduce the various risks of inaccurate estimates to increase their project success ratio and establish themselves as leaders in the software development industry.

So what are the estimation tasks at hand for any software development project? An organization would need to estimate timelines, cost and resources.

Unless the project is a replica of a past project with all operating conditions exactly similar, accurate estimation is vague and hard to pin down. Guessing everything correctly – all the stages, probable associated problems/risks, and various steps that would be followed – all in the very beginning is quite elusive. However, we can still follow certain techniques and practices which can reduce the error percentage for estimation significantly.

Techniques for Best Practices in Different Scenarios

The best practices for accurate estimation should take into account that unknown attributes are inherently associated with every project. Over optimism should be avoided and relevant analysis of personal capabilities and achievable results should be done. Focus should be placed on project success rather than on immediate gratification and setting unrealistic estimates to please the clients.

Collaborative and Consensual Estimation Technique

By roping in the entire team rather than a single expert in the estimation process, the benefit of a wider perspective and experience can help avoid missing issues and concerns. Collaborative estimation techniques can help harmony and general agreement and thereby help set realistic estimates. Similarly, the complete estimation should be done in the very beginning of the project. As the project progresses, requirements and hence the scope may change. Instead of re-estimation, it is best to do a periodic estimation in a phased manner.

Stated in the article Accurate Estimations with the Delphi Method, Mike Cohen developed a technique for estimation of project based on Delhi method –the Planning Poker method where each story gets estimated separately. If there is consensus for each story, the estimate is accepted. If there is not consensus for each story, the participants share their views and the estimation enters a second round. The process gets repeated until the consensus of all participants are achieved.[1]

Expert Based Effort Estimation

As per Jorgensen, estimation accuracy should be analyzed but evaluation pressures should be avoided. Care should be taken to set achievable estimation goals. Only realistic, documented information should be used for preparing both top down and bottom up estimations independently. An estimation checklist can help in estimating tasks. Assessment of the level of uncertainty is also important to calculate estimation error and estimation accuracy. Further more, scope should be created for providing training in estimation enhancing estimation capabilities.[2]

Multiple estimation approaches/models can also bring forth different estimates for the same project. Comparing and contrasting one against the other can help gain valuable insights into the realistic picture and set achievable targets. Again the best practice is to use a common measuring standard of ability/effort. It is important to remain as specific as possible by avoiding vague unit terms and measuring estimates in terms such as code volumes/ test cases/units tested, integration, refactoring possibilities etc. Although ambiguity is inherent and new conditions keep evolving as development proceeds, collaborative estimation processes can help build a common consensus for estimates. Be sure to take care in preventing falling into over analysis.[3]

Scaling the Estimates

The triangle of constraints say that a project has three constraints namely: scope, cost and time; if one of the constraints changes, the other two also change. So once a fixed time estimate is provided, for any uncertainty affecting the time, either the scope has to be reduced or cost has to rise or both. Estimates are probabilities and cannot be finitely defined under variable circumstances. Therefore the best strategy is to present the estimate in a scaled manner with a range of values so that it cushions against any compression of rising scope or increased requirements. Instead of presenting a specific value, the estimate should have a low and high end. The team should however have relevant explanations for the range. For low range value of the estimates, it is best to assign a probable level of achievement. So if the client insists on the lower range of the estimates, the team should specifically denote the success rate for that range (e.g. around 55-80% probability).[4]

Historical Perspective for Realistic Future

Past mistakes and omissions should be well accounted for to prevent repeating them in the new project. Missed tasks and reasons for overshooting the budgeted time should be carefully noted. Ample time should be allocated to later stages of the development which normally progress at a slower pace as compared to the earlier stages owing to maintenance, testing and refactoring of a growing volume of code base. Past project data can help chart the exponential time growth at later stages and help calculate realistic estimates.

These best practices can help in estimation of the project to a great extent with chances of high estimation error limited in great magnitude.

References

Baker, Daniel Ryan.

“A Hybrid Approach to Expert and Model Based Effort Estimation.” Bake, Daniel Ryan. Expert based best practices. ProQuest, 2007. 26.

Griffiths, Mike.

“Top 10 Estimation Best Practices.” 17 January 2008. Leading Answers. 28 October 2015

Sharma, Rupen.

“Accurate Estimations With the Dephi Method.” 20 April 2013. Brighthubpm. 28 October 2015

“Can You Make Realistic Software Project Estimations?” 23 May 2013. Brighthubpm. 28 October 2015

[1] http://leadinganswers.typepad.com/leading_answers/2008/01/top-10-agile-es.html>.

[2] http://www.brighthubpm.com/project-planning/51681-accurate-estimations-with-the-dephi-method/>.

[3] http://www.brighthubpm.com/project-planning/51760-realistic-software-project-estimation/>.