Directly out of college in 1983, my first employer was a software company which produced and delivered an ERP Software product that was used by companies such as RCA and Union Carbide. My career keeps returning to software products ever since. I’ve worked for companies delivering software products that were:
- ERP – order processing, purchasing, Inventory, fullfillment, finance
- Healthcare payor side – claims payment, medical claims encounters, actuarial
- CRM – lead intake through delivery and billing including IOS and Android supplemental applications
- Loan and funding – consumer finance
- DoD – U.S. Navy Supply System
- Education – class and student scheduling
Besides a variety of vertical markets, the software products were delivered in a number of architectures. Each of these architectures provides unique challenges.
- on-premises – installed locally and managed entirely by the client
- on-premises managed – installed locally but managed by the vendor
- cloud hosted – off-premises servers at a hosting company
- SaaS – cloud hosted and managed by the vendor
Each architecture style brings with it both advantages and challenges and it is important for product leadership to understand the environment the product is used in.
- a software product delivered as a SaaS product means the vendor controls all the backend servers. Developers can be more narrow in the tools and code libraries because the impacts of external items such as server OS and version, installed libraries, runtime versions, are all managed by the vendor and can be controlled.
An on-premises installation, however, is managed by the client. Their internal policies may mandate 24 hours installation of zero-day patches which could break the vendor software or they may not be deploying the latest generation of a server OS or SQL database because of other in-house needs. The vendor software has to be designed with supporting this in mind.
- a mobile application may be used for updating customer data. If the customers will be using the applications in areas with poor to zero cellular reception (such as rural areas or basements), it is important for the software to be able to work “offline” and then sync with the cloud when connectivity is restored.