Software is not a product
This post is also available in: Nederlands (Dutch)
The idea is ubiquitous: software is a “thing”. You engineer it, you build it. When you are done you appraise the end-result as a master artist views his piece.
To do it better, you think about improving your build processes. You borrow from industries like the automobile industry (Toyota and its Lean method for example). You define projects and wrestle to improve your control over it.
We want to build better things, and to build it better.
It seems not to help. Projects fail. Software fails. It is not scalable, not extensible, not flexible. New methods gain ground, promising a lot, delivering nothing. What could be wrong? Why is it so hard to do ICT?
The reason is simple. The reason is a simple but devilishly deceiving cognitive error: software is not a product. It is not a thing.
This simple turn-around suddenly clears the fog in a surprising way. It is a fundamental reorientation of software.
It is not called “soft” ware for nothing. Software is not tangible. All our efforts to make it so or to make it more so will inevitably fail because of its fundamental nature.
What I would like to propose is to stop viewing software as the result product of our work, but to view the process as such. How we walk in sync with our users, with the business, to improve the way of working and gain the necessary competitive edge. Within this world view software is a by-product of this ever-improving and evolving process, which incorporates all our knowledge and understanding, and which will prove as efficient and effective for any new “product” we may envision as it was for the existing ones. It is the organisation and its people that matter, that make the difference. We all knew that. So why not turn the attention to that? We all know that ICT should be a partner in business, in a fundamentally different way than HR or catering are. Why not take this to its inevitable conclusion and realise that ultimately the intelligent enterprise rests its intelligence not in its software but in the way it realises that software?
To apply Agile and Lean principles to the process as the ultimate product, makes it so much easier to apply it. An automobile is not comparable to software. An automobile is designed and engineered on the drawing board. Software is not. It materialises through endless iterations, it is never “done”, it is an evolving entity and what’s more important: it evolves together with the enterprise and its environment.
The product of ICT is the process. Software systems are by-products. By focussing on improving the quality of processes, the quality of the by-products will improve more effectively.