Having taken multiple team-based software development classes, I’ve always wondered how software development teams measure and record their productivity levels over the course of an entire project. Are there certain metrics to use in order to measure such productivity over time? Is this metric universal to all software development projects, or does it vary depending on the purpose of the software?
To research the answer a bit further, I read “Measuring Developer Productivity” by experienced developer, Max Kanat-Alexander. In this blog post, he begins at the root of what productivity is; essentially, it is the making of a certain product, a process which can be deemed effective when it takes the least amount of time and materials to complete. He continues by explaining that,
The key to understanding what productivity is is realizing that it has to do with products. A person who is productive is a person who regularly and efficiently produces products. – Max Kanat-Alexander
This clarifies the definition of what productivity is and thus allows us to understand that productivity must be measured over an increment of time. A productive team is one that produces developed software that fits all of the necessary criteria in a time efficient manner. Now, do we count developer productivity in keyboard clicks? Lines of code? Neither. Kanat-Alexander outlines his point as he explains that,
The point here is that “computer programmer,” like “carpenter,” is a skill, not a job. You don’t measure the practice of a skill if you want to know how much a person is producing. You measure something about the product that that skill produces. – Max Kanat-Alexander
I found this point in particular to be incredibly interesting to consider. Instead of being measured by a very small and insignificant portion of the job, the metric necessary is project/job dependent. How many tasks of your job can you complete in a single day? In a single hour? If you are able to complete many small tasks, then you are very productive. Even if you are able to complete one very large task, then that is also considered productive. The way productivity should be measured is by the weight and size of the task and how many you are able to finish to an effective working level each day of development. With this metric, it is easier for managers to grasp how productive their software developers really are.