Software development is both an art and science. On one hand, it has mathematical algorithms and computer science as its fundamental building block. On the other hand, it is an artistic endeavor involving creativity, foresight and innovative thinking as the purpose is to develop something new and extraordinary for the users of the product!
The primary phase of this creative endeavor is estimation. Do we expect a sculptor or an artist to exactly estimate the time by which the artistic creation would be complete? No we don’t. But with software development, the developers are expected to exactly estimate everything in the very beginning.It’s like charting the exact path in a forest without an exact map in hand and you need to develop your own map forecasting of all imminent dangers beforehand.
Clients expect to provide a fixed estimate of the delivery schedule, cost and the scope of the project on the very first meeting. To remain competitive, developers need to provide these details quite accurately. Every estimate which the team needs to provide could be risky and complex even for the most experienced estimators. With inaccuracy, underlines failure of the project in totality with huge schedule and budget overruns.
Developers may jump into setting unrealistic goals and make unattainable commitments to clients with poorly done estimates. Normally these are done to remain competitive and show that more can be attained in less time. However, this might backfire and result in severe overruns or poor quality resulting in project failure. Various research reports suggest very high failure rate of most of the projects due to quality issues, high cost variation, cancellation during delivery or simply a schedule overrun.
In today’s competitive environment, such inaccuracies, cancellations and overruns are sure short recipies for disaster for any business organization. It directly implicates huge financial losses, erosion of brand name, loss of credibility and success record with respect to quality and timeliness amongst existing competitors.
Here comes the importance of a solution/product/tool which could handle uncertainties and risk profile of the software project at hand.A software estimation tool, can act as a technique by which function points could be assigned to user stories. The estimation software could help improve planning and estimation elements inherent in the software development process.Simply put,estimation software can help foresee the future, expect the unexpected, calculate the feasibility matrix, profile degree of riskiness, to help calculate measurable estimates on solid parameters.It can help set realistic expectations and achievable goals in software development projects. It would help chart a plan that would work with high accuracy rate!
What Clients Expect
The answer to this question is fairly simple. Clients expect exact numbers. They expect quick answers to questions like: Are we there? How long? How much? – Plain simple measurable numbers!!
They want an idea – that has measurable frames. It is very risky to succumb to their want and provide some figure as the answer. Committing numbers to the client before actually doing a thorough study of all the unknown elements and forces that would come into play, with the development process, is a highly risky proposition.
How to Estimate
Most organizations estimate through ad hoc means. The truth is that it is nearly impossible to accurately provide complete estimates of a project very early in the life cycle, as with more analysis and progress in development, accuracy of information rises.
Here comes the role and importance of an estimation tool. An ideal tool should have fundamental features. An estimation tool should aim to support the larger repeatable process of development with fairly high success ratio. The estimation tool should be able to include elements such as team size, project size, team nature (occupation group), geographical distribution of the team, experience level of professionals, deliverables (documentation), variable programming languages used, schedule for delivery and unforeseen risk factors that might crop up later.
Estimation should be an amalgamation of both top down and bottom up model – including the work breakdown framework (for accounting various phases of development) and related cost structure to different tasks and roles at each of the phases. It would involve estimating the time period of each task per phase. Every task should be measured through function points. An estimation tool should help in assigning the metrics of the historical projects to provide a ground for basing the present estimate. It should provide actionable goals as a base to a detailed project plan with more sight for defects, defect removal and scope creep.
Points to Ponder
It is essential to understand that providing an exact estimate at the very first meeting with the client would be a disaster as estimates do change with more information and analysis.Estimation should follow clearly and thoroughly researched analytics, past historical project metrics, standard modeling techniques and studying the risk probability.
An estimation tool comes handy in such a situation as it provides answers to estimation requirement, assigns effort requirement and associated costs with effort level to various project phases, tracks time and budget with respect to project phases to do a back calculation and arrive at feasible estimates.Choosing the correct estimation tool before software estimation process is inevitable for a successful project estimation and hence development.
“Software Estimation: Demystifying the Black Art.” Redmond, WA: Microsoft Press, 2006.
“Are We There Yet?” Estimation and Tracking on the Road to Software Development and Implementation.” May 2007. Microsoft.com. 04 November 2015