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 money quote:
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 can hardly agree with this statement. Is WebSphere Application Server expensive? Sure. Does it have a steep learning curve? Yup.
Does it do the job competently and reliably? Yes. Does it actually do everything listed in its marketing slides? Yup. Does it perform? In 6.1 IBM seems to think so. Can you automate the entire deployment process? Yes.
Bad software hurts you in an insidious way: It eats up the time of every developer a little at a time
Agreed. And I believe that the general clunkiness of the Integrated Development Environments that IBM provides is likely what Johannes is referring to. WID/RAD builds still take far too much time than they should, random errors appear and disappear and the UI does freeze needlessly, leading to death by ‘…a thousand pinpricks’. What I don’t quite understand is why his project didn’t evaluate using a better IDE for J2EE development. The WAS server is a reliable workhorse, why throw the baby out with the bath water?
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.
This experience with a long deployment cycle isn’t really valid. You can script all of this stuff through ant tasks and JUnit cases. There’s no reason (other than the assumed process of the company in question) why an admin would be required to spend hours installing an EAR.
So when managers ask why a project is late, developers feel personally guilty. And it’s a poor craftsman who blames his tool, no?
I’d have to say its the smart craftsman who understands his tool and the time it takes to actually accomplish the task. It’s also the smart developer who comes clean and lets his project manager know when the plan may slip. This seems like more of a process/estimation problem that something caused explicitly by the software. If this was the first project on the WebSphere platform, I would assume a good project manager would build in contingencies for skilling up and learning.
And from the comments:
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).
Yowza, it looks to me like a ton of work went into reproducing the capabilities that WebSphere provided ‘for free’. Rolling your own message service implementation? Thats not a path I’d want to go down any time soon. Also, what happens to this system two three years down the road? All these multiple components, multiple vendors. They are all going to point the finger at each other when production goes down and Johannes is left holding the ball. I can appreciate the technical marvel that went into replacing WebSphere, but there’s also large questions of support, documentation and skillset that have to be answered.
So. Does Enterprise software suck? I believe like anything in life, its about costs versus benefits. What is most important to the project? Reliability that the vendor will be in business 5 years down the road? Exploiting the latest in Web 2.0 functionality? Fast development cycles? Documentation? Throw-away or 25+ year expected life? Companies need to try to look down the pipeline and find something that will support what they want to do.
Enterprise software tries to be all things to everyone, so it can come up short. Does it necessarily suck? No.