The dynamic of the traditional software industry rewards the delivery of bad software. Worse than that customers encourage this practice while having to pay for the consequences.
Bad software is a product of the unique competitive landscape of the software business, where timing really is everything. Customers are always looking for new features. They want them now and they reward the vendors who are first to market with purchase orders and loyalty. A tough economic climate and fierce competition means that vendors and customers are under constant pressure to stay one step ahead. Promises are made to secure big contracts.
Software rushed out to satisfy the voracious customer appetite is often buggy and unreliable, or ships without promised features. You can’t speed up incredibly complex development work without sacrificing either features or quality. Consequently the ‘testing’ is passed on to the customer, who has then to contend with difficult integration, endless bug tracking, security breaches, problem solving and continual patching. Unless and until these issues are resolved, instead of boosting efficiency, saving time or adding useful new features, the new software will disrupt users, undermine IT-dependent projects and create extra work for IT departments.
How has this happened? The answer lies in economics, not software.
The problem with traditional software development is that the cost of that pain – the downtime, the bugs, the patches and the outright failure – is borne not by the vendors, but by the customer.
This, in economic terms is referred to as an externality, or a situation where the instigator of a problem does not bear the economic cost of fixing it. In real life, a good example of an externality is pollution; consumers do not pay for the pollution caused by using or disposing of certain products; they only pay for the products.
Buggy code is the software equivalent of pollution. If a vendor develops and sells poor quality software, or issues a new feature that introduces a security vulnerability, it’s the customer who has to deal with the actual and potential consequences: system failure, roll-back, patching, breach disclosure, direct financial loss, damage to brand, reputation and so on.
What’s more, they’ll probably even have to pay the software vendors consultants to “fix” the problem they introduced, or bring in an expensive external expert.
This is a shocking state of affairs, but thankfully one that is changing thanks to Cloud Computing.
Software as a Service (SaaS) is software delivered by the vendor as a service, normally over the internet. The software is the enabler, but the customer is actually buying the service, not the software itself. This is a very important distinction because it shifts the economic burden back to the vendor. No longer can vendors consider the costs of downtime, bugs, patches an externality; these costs are now internal and directly impact the bottom line. If the service fails, the vendor doesn’t get paid.
All of this means higher quality coding, testing and implementation because it is the SaaS vendor who is now responsible for everything. But thankfully this is relatively straightforward because the SaaS vendor controls not only the software, but the environment it runs in too. This makes SaaS simpler to code and test than traditional software.
But it doesn’t stop there. All customers run in the same environment, using multi-tenant cloud solutions, so everyone is on the newest version, with the latest features and security. That would be a lot to ask of a traditional software vendor.
There is therefore a natural economic balancing act at work: poor quality design and coding with insufficient quality control is no longer rewarded economically because of externalities. Word soon gets around if there are downtime and security issues, because these are immediately obvious to all customers.
In fact, because SaaS companies are the custodians of their customers’ data, their business depends on their ability to attract and retain customers. Damage in this area is a high price to pay for shorter time to market as it is damage that often can’t be repaired.
The economics of cloud-based services therefore swing to ensure that poor-quality code and processes punish those who create them, not those who consume them, meaning that cloud vendors who continually delight customers will be rewarded with high customer retention, unreserved recommendation and a torrent of new customers.