Measuring Programmer Productivity
I often get sales pitches from vendors offering to sell us tools to measure programmer productivity. Typically these tools tend to be plug-ins to various IDEs, version control systems and the like. They may get fancy, and assign different weight to comments, white space, and lines that contain just a bracket, like
{
or even detect duplicate code - to give low weightage to cut-and-paste jobs - but in the end, they are basically measuring lines of code.
Once you start measuring “output” that way, you will tend to get a lot of “output”. Whether that output has value is a different matter. This is a basic Heisenberg problem (you will get a lot of whatever it is that you are measuring!), and I believe there is no escaping it.
I came across a company that proudly displays the fact that they measure every key stroke of the programmmer, and keep a webcam focused on them all the time as they work. I bet very smart people love to work under that system, and they get a lot of “productivity” out of them too. I hear this is a thriving business, particularly in professional services companies, where the quest to measure everything in software development is reaching its absurd limits, so clients can have “perfect visibility” about their projects.
From experience, I have concluded that human beings and measurement systems don’t mix. How do you measure commitment? How do measure passion? How do you measure drive? Yet, those things matter a lot more in productivity than lines of code. It is not a technological problem, and it is not worth thinking about it as “OK, our current system is imperfect, we just need a more perfect measurement system”. We need to rethink the problem fundamentally, or as in Zen terminology, just unask the question of measurement.
So let me ask it directly: Why do we need a measurement system in the first place? Is there a substitute for (very imperfect) human judgement in this area?
Measuring programmers productivity is a typical “sweat shop” mentality -tracking the pay-per-hour-dollar calculation and I personally detest it.
I agree your point on “human beings and measurement systems don’t mix”. And when you start measuring your productiveness by keystrokes (god forbid!) that is the death knell of the innovation.
I doubt any decent product/R&D intensive companies will even think about these kind of measurements leave alone installing it - the likes of Google, Yahoo, Apple, Microsoft et all.