What is Software Productivity?

January 17, 2009

Software is all about solving problems for someone – the customer. It starts with a need. From a customer perspective, the ultimate in productivity would be finding something that is already available in the marketplace that can be purchased. No need to design, build and test; simply sign the purchase order and move straight to implementation!

However, if something is not available, then someone needs to write it, assuming the cost/benefit analysis says yes. And before taking on a development effort, I would be sure to understand whether the benefit derived from building that something is worth the expense.

Once a development project is under way, customer satisfaction – including the perception the customer has of the development team – is gauged on how quickly those features that provide the maximum benefit are delivered, with quality. And this can be significantly accelerated by leveraging industry expertise and existing code.

In my book, the less code that you have to actually write to solve that problem, the more productive you are. Any good development shop will look towards other companies that provide components that can be purchased, make use of vetted frameworks or open source libraries as well as leveraging knowledge and examples that exist on numerous web sites. The bottom line: if you can leverage previously developed and tested code into your solution (or at least approaches to the problem), the result will be greater speed and quality.

Note that I used the phrasing: "leverage previously developed and tested code." The act of design and writing software implies that there is some uniqueness in what is being developed. And that since you cannot purchase an exact solution off the shelf, the best that you can hope for is a little leverage. But even some leverage is better than none.

This desired uniqueness that is part of every development project is also why defining software output is difficult. Not only is the output different for every project, the inputs –also known as requirements – will be different as well.

Since both the inputs and the outputs are variable, you really need to examine the contributions made by individuals, teams, the organization direction as well as the clarity and depth of that direction, and the handoffs (communication and collaboration between these entities) in order to achieve maximum productivity.

The final measure – your results – will come from your customers. Are they dissatisfied, satisfied, delighted, or “raving fans?”