Skip to main content

How do you calculate productivity?

Let me start off by defining productivity -

It is the ratio of the quantity and quality of units produced to the labor per unit of time.

As we all know productivity is the measure of units produced in unit of time. But as you see in the definition above there is also quality involved in the units that are produced. So we can never calculate productivity only using quantity without quality.

When we think of productivity in software everyone goes for the easiest measure - number of lines of code written in unit time usually a man day. This is a very very dangerous metric to use for the following reasons

  1. A lot of code is written by code generators and by copy pasting existing code and modifying it to suit ones needs. So there can be a large amount of code written in a very short span of time.

  2. A good design may cause a lot of code reuse - thus reducing the amount of code that is written but in turn improving performance and maintainability. Does this mean that the productivity has come down.

  3. Tough technical problems may have a lesser amount of code that is written than easier problems - but tough technical problems involve a lot of thinking and usually take longer to do. Does this mean that the ones working on the tougher problems are less productive.

Let me tell you typically what happens in a project that involves development of a business functionality.

  • The initial framework and prototypes are developed - usually takes sometime and there is not much code that is written.
  • Once the framework is proven junior developers are taught the framework and given the functionality to replicate using the framework - short phase when a large amount of code is written.
  • Parallel activities go on to do the parts of the framework that are plugged in on top of the functionality such as security, error handling and so on - does not result in a great amount of code but achieves a large part of the functionality. Usually done by the senior developers in the project.

If you look at the above scenario it will come out that the junior developers that worked on replicating the functionality using a similar kind of an architecture are more productive than the senior developers that worked on the tougher defining parts of the application. So as you can see above the traditional LOC/Man day definition never works. What is more flawed about this definition is that it does not even take into consideration of the quality of the code. One may write a lot of crappy code generating a large amount of code base but the stuff does not even work.

At the end of the writing software is different from manufacturing - productivity is a concept from manufacturing. It is easy to use productivity in manufacturing for the reason that it is the same article that is being produced again and again each and every time. Hence you can either go fast or slow in producing that article and productivity is an apt metric there. The same cannot be said of software. In software we are not producing the same functionality over and over again.

More dangerously productivity tends to be used to evaluate the performance of the person and I hope that by reading what is on top no one in their right mind would use it.

Let us hypothetically say that we want to calculate the productivity in software - how would you do it?

In order to calculate productivity we need a measure of size or quantity. This is the hardest thing to calculate in software the reason being the easiest measure Lines of Code (LOC) can be very misleading. There can be code that is never used or called in the program. They can be code that is absolutely messed up and should never have been written that way. There can be code that can be written on the same line but is written on multiple lines or the other way around. There are hundreds of such issues with using LOC as a size measure. Which brings us to the only other measure and that is trying to count the functionality that is implemented. For this FPA (Function Point Analysis) does a pretty decent job but the catch is that it is not easy to use by everyone. One needs to have experience using it.

Provided you have the FPA count of the project - then comes the next challenge of getting the time to divide it by. One should never add the full duration of the project and use it. This is a big mistake. Each phase of the project has its own challenges and the outputs are different out of each phase. Productivity should be calculated on items where the output is similar if not same. Hence one needs to count the productivity for each of the phases - planning, design, development, Testing and Release (provided we go with the waterfall life cycle) separately.

Now comes to the third measure and that is quality. Quality can be calculated by the amount of functionality that is working with no defects or defects accepted with a work around.

Hence I would say a decent productivity metric would be FPA count/Time in x phase where y% of the functionality is working.


Popular posts from this blog

Online Encumbrance Certificate in Andhra Pradesh

You can get an encumbrance certificate online in AP now. In order to get it you have to perform the following steps. Go to the website Click on Citizen Services -> encumbrance -> Search Click on Yes in the screen that appears Fill in the entries that appear in the search screen. You will have to get quite a few details in so it will help to have a copy of the registration document available with you. Once you finish entering all the details click on Submit. It will then go to a new page with the list of items that matched the search displayed. Click on the check box of the list of encumbrance certificates that are needed and click on submit. This will open a new popup window with the encumbrance certificate. You can then print this certificate. What is this useful for Anyone buying new property can go and verify the current owners of the property that is shown on this certificate in the column Name of PartiesExecutant(EX)&Claimants(CL) with the copy of

Cricket Grounds in Hyderabad

This is a repost of the article I published on the 10th of Jan, 2008 as I have added a new ground - Lahari Resorts. View Larger Map In this post I will try and update the list of cricket grounds that i know in Hyderabad. The grounds that I have listed till now are MCH Play ground, Ameerpet Francis (Do not have the contact number but go to the ground and ask for him). The charges are Rs. 1100 for the ground. They do not charge for anything more. You get the ground from 9:00 AM to 4:00PM. The ground is small. Welfare Center, Sanath Nagar Dhanraj Babu (+91 9394556356). The charges are Rs. 1100 for the ground. They charge you an additional Rs. 500 for the mat and Rs. 100 for cleaning and drawing lines and stuff. They are supposed to give you the ground from 9:00 AM to 4:00PM but what they do is that they pocket extra money from another team wanting to play and give the ground out to them for the remainder of the day assuming that you won't play for the whole day. So what happened th

Problogger guest post

Today my guest post appeared on . I wrote about 9 Tips to Start Blogging Successfully . Let me give you a bit of a background about where this article originated from. I have been blogging for close to 3 years now but I have been doing it seriously only for the last 2 months. I then analysed what were the things that I should have done in order to have become a successful blogger based on what I have noticed on the ones that have become successful. The final analysis of my study is what I put into that article and it is what I am trying to implement since the last 2 months. Reading the comments it was exhilarating to notice that some of the readers actually thought Darren was writing the post :-). It was also nice to notice that many readers agreed with my analysis and that strengthened my belief that what I have written if followed will work. How did I get to do a guest post on ? A little more than a week ago Darren invited bloggers to do guest pos