A number of us product management types were talking about various types of software products with the goal of identifying which type is the riskiest to develop.
To help frame our discussion, we decided to classify all software as belonging to one of 4 categories:
- Embedded — Software that is embedded within a physical device. For example, the code that is used within various control systems for automobiles, major appliances, cell phones, etc.
- Desktop — Software that is installed on individual laptop or desktop computers and each copy is used by an individual. For example, anti-virus utilities, word processors, spreadsheets, web browsers, and personal database products.
- Enterprise — Software that is installed at a company and is used by a number of users at that company. For example, ERP systems, PLM (product life cycle management) systems, multi-user database systems, and web servers.
- SaaS — Software that is offered by a provider as a service to multiple users from multiple companies. For example, sales force automation services, ERP services, medical trial monitoring services, and PLM services.
Then we asked the following question…. “If a major software product from each of these categories experienced a significant failure, which type of software would pose the greatest risk to its customers?” Or if you prefer, “Which type of software is the riskiest to develop?”
Embedded software is very difficult to update / repair once it is in the hands of the consumer. And because it does not contain the same sort of user interfaces as other software types, it can be more difficult to troubleshoot. Thus, if your PDA locks up when your address book has too many entries — your only remedy is to reboot your device, try to avoid the problem, or acquire a replacement device. However, if your automobile were to accelerate out of control due to an error in the throttle control systems — you, your passengers, and others around you could be endangered.
Desktop software is used on an individual basis. And unfortunately for most over-worked IT staffs, individual users often upgrade or customize the software that they are provided to meet their own needs. As a result, if a particular software revision or update fails, only those users who have installed that software are affected and they can often revert to a previous version.
Enterprise software affects all of the people at a company who are using it. Thus a failure can severely impact the company’s ability to perform its business. I remember a situation years ago where an automobile manufacturer was carefully monitoring an upgrade to their enterprise PLM system because any failure could have halted production in their manufacturing plants and sent thousands of workers home.
Software-as-a-Service software is typically provided to users from multiple companies. Thus, any failure could severely impact the ability of multiple companies to perform their business.
So, here are our conclusions as to the riskiest software to develop, in rank order:
- Embedded Software — because a failure could result in injury or death to users of our products, which would be very difficult for our company to handle and recover from.
- Software-as-a-Service — because a failure could affect multiple companies, including some companies that we might never know were impacted until after they failed to renew their services contract.
- Enterprise — because a failure could impact the business of an entire company. The short-term impact could be mitigated through high-level corporate support and aggressive fire-fighting, but our company would still need to apply additional longer term efforts to repair its relationship with each affected company.
- Desktop — because individual users could uninstall the latest update or revision and continue using the previous version of the software. The impact to the company would depend on how widely used the faulty version was and how much individual users depended on it. However, it is unlikely that the company’s business would be severely affected or that lives might be lost.
So what do you think? Have we categorized software correctly? And if so, do you agree with our rankings?