Why does enterprise software suck?

Among UX practitioners, everyone who works in the dusty corner of enterprise software must come face to face with this question:

Why does enterprise software suck so badly? 

and the corollary since we UX practitioners are a hopeful bunch  “Does it have to be this way?  Can’t anything be done?

I can claim to have some legitimate insights into the first part.  The second part, a little less so.  But I believe that some of the standard UX practices need to be modified slightly for the enterprise context.  More on that in a later post.

Let’s start with the problems.  It’s always easiest to start there.  Enterprise software sucks because:

  1. The software is made for the “choosers”, not the “users”.
  2. There are a lot of different users, creating inherent complexity in the workflows.
  3. From the vendor’s perspective, the entire system is highly customized for each client so there is little incentive to make it perfect since it will all be changed anyway.
  4. Getting information from customers about what they need is really hard.

In this article, Part 1, I’ll cover the first two.

1) The software is made for the “choosers”, not the “users”

There is a principle in human factors called “Grudin’s Law” which states “When those who benefit are not those who do the work, then the technology is likely to fail, or at least be subverted”.  We see this all the time in enterprise software.

For example, a company might want to streamline the way their internal employee expense claims works.  They want to be able to keep track of who is spending what, get instant, up-to-date reports on how much each department is spending and so on.  So the people who are benefiting are the ones that hold the purse strings and make financial decisions.  I can guarantee you that when the vendor came into the office pitching their product they told them about how much money they could save by being able to better track their expenses.  They probably spent a good deal of time understanding the workflows of the finance department so that they could suit their needs.  However, it is  unlikely they spent any time at all talking to the people that would have to actually use the system to file their travel expenses and their employee lunch expenses.  What often happens in these situations is that the employees will try to subvert the system as much as possible, which often leads to garbage data out for the people who wanted the system in the first place.  Garbage data in = garbage data out, therefore the projected ROI (return on investment) is never realized.  

2) Enterprise software has many users along the workflow chain creating an inherent complexity.

Consumer software has one user.  If you want to get fancy it will involve family members or friends who share things.  Enterprise software has many users, each with their own highly specific needs, backgrounds, goals, and workflows.  This gives the system an inherent complexity that is simply not present in consumer software.

Consider the aforementioned expense system.  There are many different kinds of users:

  • users who submit expenses (occasionally or frequently)
  • users who submit expenses on behalf of others (admins)
  • users who need to approve or reject expenses
  • users who set up the rules about the expense approval process.  (“we are tightening our belts so now all travel needs to be approved by a VP”)
  • users who want to see how much their department is spendings
  • users who want to see if the new procurement process is meeting expected reduction in costs.
  • users in other countries who need a different language in the UI
  • users who are issuing checks or making bank transfers

Right away, we can see that this is going to be more complex than say, uploading photos and sharing them with your friends.

This doesn’t mean it is an impossible task, just a much much harder one, and harder to get “right” for all the users along the chain.  Especially when the vendor isn’t talking to all of these people.

In my next post, I will tackle the next two reasons.