by Adam Juda on Wednesday, January 7, 2015
I spent some time talking to a software engineering manager yesterday. His team was facing a conundrum. No one at his company had any idea how his firm's software development productivity should be measured. Managers were trying to figure out what should be done, but he wanted to bring them a solution.
Measuring a complex service (such as programming) is very difficult. Measuring it in a way that non-technical managers can understand is often thought of as impossible. Any single measurement system will be imperfect, but some are clearly better than others.
- The first measure that we discussed was lines of code (SLOC). Although long-used by many technical managers, it is slowly falling out of fashion. The reason for this is clear. This measurement system encourages programmers to be inefficient. They will simply use ten lines of code when one would have done the trick. Not only does this result in wasted time, but it also results in software applications that are a nightmare to debug, run slowly and are difficult to reuse for future projects.
- The next measure that came up was function points. This system (nearly unknown to younger developers) measures the complexity of software to be written. If a software engineer completes a module that is very complex in a short amount of time, he is obviously working very efficiently. This method works well in many cases, but may lead developers to create overly-complex code.
- Finally, we discussed a tweaked version of earned value management. Under this system, each set of tasks could be assigned a value. An important module might be worth $10,000 whereas a less valuable one might be worth only $100. Such a scheme is usually applied only to entire projects, but there really is little to prevent it from being used on small modules as well. Many would argue that such a system would encourage developers to only work on the most valuable parts of a project - though I would argue that to be more of a benefit than a cost of this system.
I would argue that all three metrics are valid, but companies should strive to move away from the metric at the top (measuring a by-product of work), toward the metrics lower in the list (measuring effort and, ultimately, value created).