Project Planning is the primary task before software estimation of the project is taken up. There are certain specific factors of a software project which require assessment and estimation. Cost, effort and time are the three elements of a software project which get estimated. I have always reiterated that before heading for carrying the cost, effort and time estimation for a project, the primary task is to understand these elements in detail, particularly ‘effort’. This is because effort relates to ‘skill level’ which is a variable component and hence must be measured for making software estimation more accurate.
Elements in Detail
Element 1 – Cost relates to the viability and feasibility to carry forward the project. If the revenue earned from the project supersedes the spending, the project is feasible for the development company. This is interlinked with the next element effort. Cost is determined by the effort which goes into developing the software.
Element 2 – Since any project involves a team (productivity quotient – skill and effort level), calculating the optimum effort requirement for a particular project requires foresight as all direct and indirect elements which affect effort calculation have to be taken into consideration.
For effort determination, a factor should be calculated for maintaining consistency. Since different categories of experts – analysts, software engineers, programmers, testers, etc, are involved at different stages of development, we have to account for their differences in skill level and sum together for estimating the ‘real effort’ for the project.
Element 3 – Time is the third element of estimation and has a non linear relationship with other elements. Many times I have observed software developers associating time to have a linear relationship with effort and hence cost. They might mistakenly think that by increasing the number of people employed in a particular project (increasing effort), the duration/schedule of project completion might get shortened. However, this is not always true. Sometimes by assigning more resources (and increasing cost), the project duration might get reduced to some extent but this would not be true for all types and categories of project especially when they are knowledge based and highly technical in nature. Rightly pointed out by Barry W. Boehm – “Adding more people to a late project will make it later.”
Software estimation process is a direct function of how these three inter-related elements are analyzed and estimated accurately. Various techniques can be used for cost, effort and time calculation, each with its own set of usefulness and limitation.
In this article I will delve into productivity and skill level as they are both important parameters for effort estimation.
Productivity and Skill Level Analysis Primary for Effort Estimation
For accurate effort estimation, productivity is a term that requires more clarity and understanding. Depending on the product being developed, person-hour/function point OR hours per use case is used to depict productivity quotient.
Productivity is directly related to effort which goes into all activities – requirements analysis, designing, programming, testing etc. When effort is estimated, a sum total of all estimates pertaining to different categories of activities have to be calculated. As we have seen every activity requires different skill levels arising out of variable inputs and different levels of knowledge base/resources. Hence a single universal productivity quotient cannot be applied similarly to all effort types. The best technique is to categorize effort into types based on the skill level (related to different activities) and estimate each effort uniquely.
Very rightly pointed out, effort estimation should be done at micro level. This provides better predictability of software development as every category of effort is uniquely estimated thereby assisting budget estimation more accurately. Target setting would be more accurate and skill requirements for different activities can be charted more accurately. Improved variance analysis would further help in overall process improvement and development of productivity models of different project types.
With better skill prediction, it would be easier to maintain the targets and keep things on track, meet deadlines and deliver projects.
In Quick FPA, our software estimation tool, we have incorporated effort in terms of skill level/categories. The calculated effort is adjusted by the skill level entered.
Productivity is a Function of Skill Level and Effort Level
When we define productivity for effort estimation we have to account for both skill level and effort level.
Skill level would denote the proficiency of a resource in terms of his knowledge, expertise, experience, capability to deliver the most desired results with least use of time resource, ability to complete a task on his/her own (with or without seeking help) and the ability to guide others in their task. Depending on the variability of these factors, the skill level in a resource can be computed as an expert, average or low skill.
Similarly, effort level would include a resource’s ability to make the best utilization of time in delivering his KRA’s and level of focus towards work and level trial and error done for task completion. The variability of these factors further describes what is superior effort, very good effort, good effort, fair effort and poor effort. A resource possesses a specific skill level and displays a certain effort level which defines his/her productivity. So if I have a team of ten people with five of them being high skilled but fair or poor in effort, while another five have poor skills but put in high amounts of effort, both groups would be equal in terms of productivity.
It is the combination of both effort and skill level, which determines productivity. Hence a project manager needs to analyze his team in these terms for productivity calculation for effort estimation. The most optimum and acceptable combinations for estimation is good skill with good effort. Depending on the type of project, resource allocation can be done. So if a particular project requires 15 people with good skill and effort, a project manager can either assign all 15(with required mix) to the task or assign less resource with superior skill and effort to the task.
All organizations have a variable mix of resources with different skill and effort levels. Using productivity to calculate effort estimates ensures accuracy of estimation. It also paves the way for variation in resource allocation depending on skill and effort level. A scale and rate needs to be deigned where productivity of resources can be measured in terms of effort and skill. By computing productivity requirements in a particular project type, estimation of effort and hence time can be made more realistic.
Skill level is an aspect of effort estimation which requires greater focus and study. Creating a scale at micro level for productivity measurement is a task which can enhance accuracy of estimation by curtailing the risk associated with uncertainty of effort to a great extent.
Mishra, Jibitesh and Ashok Mohanty.
“Software Projects Parameters.” Mishra, Jibitesh and Ashok Mohanty. Software Engineering. Pearson Education India, 2011. 265-266.
“Software Estimation Best Practices, Tools & Techniques: A Complete Guide for Software Project Estimators.” Chemuturi, Murali. Concerns with Productivity. J. Ross Publishing, 2009. 137, 140.