Friday, September 11, 2009

If You Can't Measure It ...

Then you can't improve it. Simple, true, wonderfully profound in its own way, but mainly ignored within the Software Development Community. Software developers consider themselves artists, I understand this, that is my background. You can't measure art, you can critique it, and the market tends to decide what is worthwhile or not. In this day and age, the term is rather overused. At Subway, employees are Sandwich artists, and at the coffee shops, we have Barrista's. But, my degree was in Computer Science, and whether a programmer considers themselves and engineer or a scientist, both of those disciplines require intense scrutiny and measurement. Yet, we seem to have drifted away from that regarding the science of programming.

So, imagine we could come up with a standardize constant measurement lets say a Software Unit (swu). If we had a formalized concept on how to estimate projects in swu's, instead of klocs, person months, etc,. then there would be a way to empirically measure one project against another. Basic software metrics could then be produced that could be used internally and externally to measure how a shop was doing.

For example, productivity becomes: (total project time)/(total swu's). Quality becomes: (total defects)/(total swu's). If we have a quality estimate, then we can set a release standard stating what % of defects need to be removed prior to releasing to the field. Testing coverage could also be defined as: (total test cases)/(total swu's). Suddenly this all becomes very simple, if, we have a constant definitely as this concept of a Software Unit.

Now, this is just not me being the lone wolf in the woods howling at the moon. Carnegie Mellon has a whole department dedicated to Software Metrics,

Of course, what would any reference be without the Wiki reference: In the Wiki case, I especially like the very end of the reference where once can see the links to Function Points, Case Points, and how to integrate these with newer Agile and Scrum development techniques.

From my experience, leaders will find resistance from programmers who never had their work measured before, but, the organization rewards for planning, estimating, process improvement, quality, and timely execution are tremendous and in the end, once the threshold has been crossed, all parties reap in the benefits.

Personally, I am a big fan of metrics and will always pursue them in every development shop I work with. There is always a way to turn the ship to make these work, despite what opposition one may find.