Why is enterprise software often so complicated?

In enterprise business applications, complexity stems from complex enterprise needs. To give you a flavor of these, here are just a few examples of requirements that lead to creation of complex platform infrastructures that make up the complex enterprise software.

User Interface

Translation for multiple languages

Localization for different areas (e.g. currency, dates etc)

Complex Query Needs (custom fields, saved queries etc)

Customizability/Extensibility

Adding custom attributes, objects

Modifying out of the box functionality e.g. business processes

Modifying the look and feel for personalization by end users (e.g. MyYahoo)

Verticalization needs (e.g. industry specific flavors)

Operational

High Availability (for planned downtimes)

Selective feature uptake (to avoid re-training thousands of users)

Performance requirements for high volume, latency, throughput etc.

Functional

Complex security needs (users, roles etc)

Organizational setup (e.g. business units, divisions etc)

Error handling and compensation for rolled back business processes

In addition, there are a few additional factors to consider for large enterprise software products:

Development Scalability
For multi-product application suites, economies of scale is achieved by consolidating common functions into a common platform, which then have the same complexities that the applications face when trying to develop products for a wide range of customers. This adds a layer of “knobs” to tune over and above the functional knobs that the application software provides.

Integration
No enterprise software lives in an island and integration with other systems is usually one of the big costs in application deployments. Integrations are inherently complex due to the nature of trying to tie together heterogenous applications with different data models, granularity, cardinality, semantics and protocols.

Standards
To allow for a plug-n-play model, most platform level APIs are driven with facade style interfaces that can plug-in to various implementations e.g. jazn; that add a layer of complexity. Use of standards-based technologies (BPEL, ESB, Web Services) also contributes to some level of complexity, as those standards are aimed towards satisfying requirements from all the participating members who created those standards.

Perception
I do not pretend that all enterprise software are absolutely user-friendly, but do realize that large chunks of enterprise software are targeted towards specific roles, which may seem very unfriendly to users who are not in that role. For example, a snazzy, graphical UI is not necessarily “simple” for data-entry clerk as it is to a knowledge worker.

When you think about it, a large percentage of the world economy depends on enterprise business software (ERP, CRM, HCM etc), and requirements such as above tend to add complexity.

Note that while the software can be complex, there is no excuse for not making the end-user experience as smooth as it can be. Although in my experience, some complexity does tends to bleed into the user experience, especially in on-premise deployments. The SaaS model, to some extent, shields end-users from most of the complexity, but once you start getting into requirements such as integration, complexity does find its way through during implementations.

6 thoughts on “Why is enterprise software often so complicated?”

When it comes to small to medium online business, only the best eCommerce developer is the solution for the business to succeed. There are many developers out there and one of them is the Los Angeles Magento Developer. About 110,000 clients that this developer have been serving as of now.

Nice summary of issues. Perhaps true user-centered design has a role to play in ameliorating, including all stakeholders in the process (buyers, implementers, support, end users, functional admins, etc). Nice to see translation/localization in there! See my article on the international aspects of ERP/CRM here: http://www.multilingual.com/articleDetail.php?id=732