What is “Enterprise Grade Software”?
When I talk to people about Tract, I inevitably mention that we have built enterprise grade software for growing and mid-market businesses. I use the term “enterprise grade” in context of my previous experience in building software for enterprise companies like BestBuy, United Airlines, and Target. I’ve come to realize that everyone has a different idea of what “enterprise software” really means, and some just use it as a marketing buzzword in hopes of instantly legitimizing their offerings.For me, the term “enterprise grade software” has changed. At the beginning of my career, enterprise software was generally software that ran on mainframe systems like the AS/400, was accessible to a high number of users, had redundant hardware, had daily backups, and defined batch reporting cycles.
As we moved to personal computing, and now into Software as a Service (SaaS) as the mainstream delivery method for software, characteristics that we always associated to enterprise grade software like “Availability”, “Scalability”, “Security”, and “Redundancy” have become standard. They are now a requirement, or expectation, of any software being used by any large enterprise organization. With today’s SaaS delivery infrastructure such as AWS (Amazon Web Services), these elements are essentially provided by default.
The result has been a shift in what characteristics set “enterprise grade” software apart. In today’s SaaS environment, for me it comes down to the following characteristics:
Extensibility – the classic software definition of this term is “the ability to add/modify functionality without impacting existing functionality”, but my definition is “the ability to accommodate customer business rules and process into the existing functionality”. What this means is that enterprise grade systems must have the ability to implement and configure complex business requirements into the existing software, or the ability to adapt the software to meet the customer needs, rather than asking clients to change.
Maintainability – generally defined as the “ability to correct flaws in the existing functionality without impacting other components/systems”, my definition is “the ability for customers to maintain or change the configuration to meet their changing business environment without code change”. This has traditionally been a problem for many systems that have the ability to meet complex business requirements because the means of making the required changes, even though they may not be direct code changes, are difficult, if not impossible, for the average user to actually make. For example, a software company that I know essentially has a pseudo-code framework to configure business rules and is quite capable of enabling even the most complicated business rules. But because of the complexity of the pseudo-code framework, the business users, generally with no technical coding skills, are not able to make on-going changes, thus eliminating any real “maintainability” of the system.
Interoperability – this has been one of the biggest changes in my definition of enterprise grade software. In the past, enterprise grade software providers needed to ensure that their application would run on the customer infrastructure: whether they were a Microsoft, Oracle, or IBM shop, your application had to run on their stack. But today with SaaS, software providers only need to program for a single stack, and so interoperability has shifted to the need for both web and mobile platform accessibility. Enterprise grade now means that the software needs to be operable from the common browsers along with mobile platforms like Android and Apple’s iOS. Even the mobile apps need to provide the functionality to allow employees, managers, owners, and executives to manage their businesses 24×7.
Portability – This is a characteristic that I don’t think many software providers focus on, but yet I see as critical for enterprise grade systems. As more and more large enterprises embrace SaaS software, software providers need to provide the means to extract the data for other purposes. Over my tenure at various software companies, we’ve tried to address this by building report writers to allow customers to define what reports or data they need, but this often resulted in difficult to use solutions. I’ve come to learn that easy data portability is a requirement for any enterprise grade software.
If someone is touting their software as “enterprise grade”, consider my points, but more importantly, ask what makes it “enterprise grade”. A company that is truly using the term to differentiate itself from the herd will most likely give you much more focused and detailed answers than the simple canned response of “it’s robust, scalable, scalable, and has high availability”, and it will become obvious if someone is simply using the term as a buzzword, or understands the enterprise needs in today’s Software as a Service marketplace.