Joel on Software, as usual, has a great post about software development with a lot of truth in it - in this case, about the impossibility (and even inadvisability) of measuring software development productivity.
As Joel points out, measuring software development productivity is a subset of the problem of measuring knowledge worker performance, which is prone to gaming once a quantitative metric is applied. (In a Dilbert strip, when the programmers were awarded $10 for every bug they found and fixed - even if they created the bug - Wally says "I'm going to write me a minivan this afternoon"!).
But gaming aside, the even bigger reason knowledge worker productivity is hard to measure (and manage) is: How do you measure knowledge worker output, or more importantly, value?
It's especially hard to measure the value of a software developer's work, since there are so many variables that confuse activities with software value, as The Parable of Two Programmers deftly demonstrates.
One of the great things about running a Software-as-a-Service development group is that the software's value is a lot more readily apparent than with on-premise software. With SaaS, the feedback cycle is so quick and direct (through immediate usage by all customers) that many of the components of software value are apparent very quickly - the software's robustness, maintainability, usability, and performance. All the elements that go into software quality are fully visible to the developer and to management within days, giving excellent insight into each developer's productivity (i.e., value per day) and improvement trajectory.
In addition, the entire software development process benefits from fast customer-based feedback. For example, if Product Management prioritizes a feature that customers end up not using, the software developer challenges them with their future prioritizations. This accountability helps ensure that Product Management is focused on features that will be used and provide the most value to customers.
Another aspect that I regularly push is to get a feature in front of customers so we can see how they use it and give us guidance on version 1.1 within days or weeks, not years (as used to be the case with on-premise release cycles). A fast-turn SaaS development approach makes it cheap to fail, delivering more course corrections and customer-determined value while greatly decreasing wasted effort on unfruitful features.
So by continually applying the development team's time on the highest-value features for customers who are currently using the software, the product's value progresses as quickly and efficiently as possible for the development investment. By contrast, with on-premise software, the development investment yields little benefit for customers - feature prioritization is typically targeted at making software demonstrations compelling to the next customer, the several-upgrades-per-decade means that the feedback cycle to the software developer and manager is many years rather than weeks, and a huge percentage of development effort is wasted on maintaining old versions of the software on a myriad of platforms.
The most important part is that the SaaS development process leads to higher value to customers, more quickly and continually increasing over time. The additional value from SaaS after go-live gives customers ever-increasing business benefits, which is why the free ongoing ugprades of SaaS make such a difference in the customer ownership experience vs. on-premise software. Only an ERP practitioner could love the idea of living in the straitjacket of one software version for years and years.
Recent Comments