Software Engineering Stats

I have about some interesting statistics related to software engineering. The exact numbers are not of extreme importance. However the trends themselves were eye opening. Some numbers are not what you would think. I am going to go over some of them here to provoke thought.

The first is one I have heard before. A good programmer is 30 times better than a mediocre one. That seems massive. But I know there is a huge gap between the great programmers and the average ones. There is an ongoing debate over how great this difference is. This is just saying that it is huge (30 times equates to 3000 percent).

In comparison to great developers, great tools only provide a 5 to 30 percent increase in developer productivity. There is a lot of hype in how much productivity gains a tool provides. The root source of this hype is the companies that are selling the tools. That would be expected. What is not normally discussed is that there is an initial decrease in productivity when developers learn how to use a tool.

Software maintenance takes up 40 to 80 percent of the cost for a project. However this maintenance is not all just fixing bugs. As much as 60 percent of this maintenance is for enhancements to the code.

There are many causes for runaway projects. Unstable requirements are one of the causes. Another cause is optimistic estimation. You are going to be in trouble if the estimates are provided by the management or marketing teams. Schedule pressure in general can spell doom for a project.

Developers do conduct unit testing. However they normally cover 60 percent of the possible paths at most. Code reviews can eliminate 90 percent of software errors. Unfortunately rigorous reviews are skipped by most developers.

Finally, a high order language can achieve 90 percent of the speed reached by pure assembly language. This assumes that you turn optimization on in the compiler. The moral is that you do not need to step down to assembly language for most applications to achieve good speed. Moreover, you can get great gains by choosing the correct design.