Why does so much commercial enterprise software suck?

It’s been a year since my project replaced IBM WebSphere Application Server with a Java SE solution embedding Jetty. Looking back on the last year, I only have one regret: That it took us so long to make the switch. The difference takes a bit of perception: Our software no longer eats away our time, killing us with a thousand pinpricks.

But WebSphere is just the most blatant example of software that gives you nothing, gets in the way of a lean process stream, yet costs a lot of dough. I recently talked to a cousin who works in the oil industry. When we talked about our jobs, he expected me to be using lots of commercial parts, like other engineering disciplines do. The discussion got me to thinking: Why do I always end up regretting it when I use commercial enterprise software?

When my cousin asked the question, I came up with the following answer: The problem is the feedback cycle. The result of a software project is invisible, but software projects last for a long time, and cost a lot of effort. The obvious management decision is to buy your way out of the huge expensive of developer hours. But when an invisible project is over budget, after schedule and waaaay below expectations, it is very hard to find a culprit.

Bad software hurts you in an insidious way: It eats up the time of every developer a little at a time. Instead of testing your changes with a one second unit test, you test your changes with a five minute deployment cycle. Instead of rolling out a new version to a controlled environment with a command in 30 seconds, you schedule a deploy task that the product expert will perform in a few hours.

The result is that developers will go slower than they feel they should be able to. And in my experience, almost all developers are humble to a fault. When they work slower than they expected, they blame themselves.

So when managers ask why a project is late, developers feel personally guilty. And it’s a poor craftsman who blames his tool, no?

And what manager would guess that the expensive software from the slick, world-renouned vendor is to blame. So if you are a developer, do your manager a favor and challenge the technical confines of your project that eat up your time. And if you are a paying for a project, do yourself a favor and listen to the complains of your developers.

(This post is dedicated to JLO, who did just that! Thanks, man)

About Johannes Brodwall

Johannes is Principal Software Engineer in SopraSteria. In his spare time he likes to coach teams and developers on better coding, collaboration, planning and product understanding.
This entry was posted in Software Development. Bookmark the permalink.

9 Responses to Why does so much commercial enterprise software suck?

  1. Space Monkey says:

    Can you explain how Jetty replaced WebSphere? I mean Jetty is a Web Server and WebSphere is an Application Server.

  2. Hi, Space Monkey.

    We either discontinued or replaced all features not included in a web server. Briefly: EJBs we stopped using (thank god for that!); for connection pooling we first used the pool that came with Oracle, and then switched to c3p0; for failover and loadbalancing, we use our expensive switches which already has this build in; for transaction monitoring, we use Spring; we also rolled our own message service implementation (much simpler than JMS, but a drop-in replacement for our use).

    This is a pretty common question, and an important one. Sadly, the answer is pretty boring. Which leads me to think that there's a lot of stuff in an application server that we really neither need nor want.

    Thanks for your question.

  3. Space Monkey says:

    Can you explain how Jetty replaced WebSphere? I mean Jetty is a Web Server and WebSphere is an Application Server.

  4. Hi, Space Monkey.

    We either discontinued or replaced all features not included in a web server. Briefly: EJBs we stopped using (thank god for that!); for connection pooling we first used the pool that came with Oracle, and then switched to c3p0; for failover and loadbalancing, we use our expensive switches which already has this build in; for transaction monitoring, we use Spring; we also rolled our own message service implementation (much simpler than JMS, but a drop-in replacement for our use).

    This is a pretty common question, and an important one. Sadly, the answer is pretty boring. Which leads me to think that there’s a lot of stuff in an application server that we really neither need nor want.

    Thanks for your question.

  5. Does Enterprise Commerical Software Suck?…

    In Johannes Brodwall’s Blog, he asks “Why does so much enterprise commercial software suck?”. In it, he mentions that his project migrated off of WebSphere and onto Jetty and regrets that his project didn’t migrate soon. The mon…

  6. Pingback: danzrobok.com

  7. Adgh says:

    jetty is more than an a webserver it implements the servlet specification so it can be used as an application server too

  8. arik says:

    Thanks for the article. Helped me put into words what I felt about commercial software for a very long time.

Comments are closed.