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)
Comments:
[Space Monkey] - Mar 10, 2008
Can you explain how Jetty replaced WebSphere? I mean Jetty is a Web Server and WebSphere is an Application Server.
Johannes Brodwall - Mar 10, 2008
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.
[Adgh] - Feb 3, 2011
jetty is more than an a webserver it implements the servlet specification so it can be used as an application server too
[arik] - Aug 6, 2013
Thanks for the article. Helped me put into words what I felt about commercial software for a very long time.