Posted by: ahmedashfaque | March 22, 2014

sotware project effort estimation & creativity component

If you have measured software product size correctly then the next step is to measure effort and cost for the project. Frankly speaking measuring effort and cost are difficult tasks. Can you devise a scale which can measure effort?

Experience and acquired skills of a software engineer can give give you some idea about the effort he will have to put in for coding a measured block of code. For example, the said engineer can write some 200 lines of code in 8 hours (one day). So if the code block is of 1000 lines of code then he will take 5 days  Another engineer who is equally skilled and experienced may do it in less or more days. at the same time, productivity of a person may not be the same everyday. Some days the software engineer can write even 300 lines of code when he is very focused and motivated. On another day he could write only 100 lines of code due to any problem afflicting him.

When you have to give effort estimates at the beginning of the project then you have to give average effort estimate. The practical considerations can be tackled during project execution. You need to charge your customer on the average effort and not the actual effort. For example, when you go for repairing your car then the car mechanic can not charge you for the actual hours it took him to repair your car. All the mechanics have a estimate book for calculating hours required for particular repairs. For example, the book may have a figure of 30 minutes for oil change. Regardless of the actual hours it took the mechanic to change oil, he will charge you for 30 minutes of effort.

The real problem in estimating effort on software projects is the component of creativity required in writing a particular code block. Repairing a car does not require much creativity. Though in some cases, creativity may be required on part of the mechanic to repair a car. For instance, if your car had an accident and denting and painting is required on the car body then the mechanic may need to make an estimate as to how much effort may be required for repair. The extent of damage can not be accurately estimated and at the same time there can be many ways to repair the same damage. In such a case, the mechanic definitely needs to use his brain and do some serious estimating work. Now this estimate can vary from mechanic to mechanic as there is no standard way which can give exact estimate regardless of which mechanic did the estimate.

In such cases, the total work required can be broken down into smaller pieces of work. Some of the pieces of work can be classified as standard work while some other pieces of work can be classified as non standard work. for example, how much area of the car body needs to be scratched for painting is definitely is a non standard piece of work. Each mechanic may give you different estimate for this work. So the best strategy is estimating the effort could be making estimate for standard pieces of work first and then making estimate for non standard work. Summing them will give you the effort for the total work required to be done.

The same strategy can be used on software projects for making effort estimates. A particular piece of code block can described as a standard code block and there should be a industry standard for calculating effort required in designing, coding and testing that code block. For non standard code blocks, a software developer can give his own estimate. Thus the total effort figures for entire work can be reasonably calculated.

The government should think about making standards for effort estimate for software projects.



  1. Reblogged this on Ashfaque Ahmed's Blog.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: