Breaking Down The Data

It is not enough to report some industry average productivity rate for software development. More can be learned about anything by breaking down the numbers into logical pieces. To make sense out of industry, average software development data needs to be broken down into some logical categories. Often, all intelligence is lost in a number when it is averaged. An good example everyone can understand is the unemployment rate. The current unemployment rate in the US is around 5%. It is much more interesting and informative to examine the unemployment rate by educational attainment. The following unemployment figures by educational attainment should not surprise anyone:

Unemployment rates are not constant across industries either. Unemployment varies widely depending on the type of industry we are talking about. Unemployment varies by geographical location too. The reason I am telling you this is that software productivity is more interesting and useful when it is broken down by industry and geography.

Range of Productivity

The range of productivity for software projects depends on several factors. The first factor is the industry supported by the software. Government agencies that are tasked with collecting economic data, including The Bureau of Economic Analysis (USA), Eurostat (Europe), the Office of National Statistics (UK), and other similar agencies all track economic output by industrial sector. It is understood employment and productivity are not constant across industries. They are not constant across the software industry either.

Software productivity and performance vary depending on the industrial sector supported. The software productivity for the automotive industry is going to be different from the health care industry. The number of those employed developing software across different industries is different. It should be relatively intuitive that software development supports a core business, and the health of the core business impacts software development.

No Data

I am astonished at the number of companies with absolutely no measures in place that think they are doing fine or think they are better than average. I have evaluated several companies with no historical data whatsoever. They have no idea of the amount of time spent on projects and how much functionality was implemented with the project. In these cases, I am required to recreate a lot of data. The human resource department gives me a list of employees and their salaries, and I have to estimate project time and project cost based upon actual payroll reports. These same companies do not have any documentation to support their applications, either, so I develop the function point count based upon the actual production applications. To say the least it can be grueling exercise to establish baseline levels of performance.

Analysis

Over the years I have studied and analyzed a lot of data. I have compared the top 5% of performers with the bottom 5% of performers. The top performers are those 5% of companies with the highest productivity, best time to market, and strong profitability. The bottom 5% of companies are those with the lowest productivity rates, worst times to market, and weak profitability. I have also examined all the software organizations in between.

The top performers and bottom performers distribution of project times is different. As the following charts demonstrate, the top companies spend the bulk of project time in requirements while the bottom companies spend the bulk of time coding and testing.

Worst In Class
Requirements 11%
Design 16%
Coding 37%
Testing 37
Best In Class
Requirements 28%
Design 36%
Coding 20%
Testing 16%