A recent post by Mike Gualtieri of Forrester caught my attention. Mike strongly asserts that Java is a dead end for enterprises and business software should be built with something else. Mike mentions a few different options, but mainly promotes 4GL tools such as Powerbuilder and “all in one” business infrastructure software such as SoftwareAG webMethods. He also touches on BPM and event processing, and by event processing I’m pretty sure he means CEP tools such as Esper.
I’ve worked with Java for 10 years. I’ve also worked briefly with FoxPro. I recently spent a few months at a client site digging through SAS code that’s being migrated to Java. I spent almost a month on a SoftwareAG training course to learn the “webMethods way” of doing things. I’ve seen 4GLs in action and I’ve seen Java in action.
Is Mike really advocating the use of proprietary, niche languages such as webMethods Flow over Java? I’m not an analyst at Forrester, but I’ve been turning Powerpoint slides into functioning software for long enough that I feel just about qualified enough to chime in on the subject.
I agree with the spirit of Mike’s post. Java can be a real pain to build typical business software with. The problem isn’t Java itself, the problem is that businesses use it for everything.
People have tried for decades to move away from third-generation languages like Java and towards the nirvana of business folks creating their own apps with some kind of flow-charting tool. One of the first guys I worked with - he had punch cards in his drawer that he punched - told me all about it. It’s the longest running punch line in IT. Mike’s post may have been titled “Java is a dead end”, but it really should have been titled “third-generation languages are a dead end”. And the date of the article could easily have been 1980 or 1990. The dead end is not third-generation languages; languages are merely a tool.
The dead end is producing horrible software and expecting to keep up with the rest of the world.
The dead end is promoting a stock trader or pony salesman or MBA-type to head up your IT department just because he or she really knows their way around office politics.
The dead end is misusing a language or technology for years and blaming the technology and blaming your developers rather than hiring the right people to come up with your strategy and empowering your developers.
Leaders create leaders.
The only reason these strategies worked in the past is because everyone was producing garbage software, but nothing lasts forever.
Here’s a hands-on developer’s opinion on the whole “Java is dead” debate.
Java is no more of a dead end than C, C++, or MATLAB. They all have their uses, but using Java for everything is just as poor of a strategy as trying to use MATLAB for everything.
If you want to build great software, you need to hire great software developers. There’s no magic tool that will allow your business folks to put together fantastic software all by themselves. These ideas look fantastic in a Powerpoint slide or Forrester report, but fall flat in the real world.
Understand what’s important to top-tier developers. Here’s a good place to start. This was written 10 years ago and most companies aren’t even close to a perfect score.
Treat software development as a first-class citizen of your business if you’re going to bother building software. Otherwise, stop building and start buying; find a trusted partner to build for you. There’s nothing wrong with leaning on third-party firms to focus on the technology while you focus on your core business.
If you’ve got a department writing software that operates like anything other than a software business, you’ve got a bunch of problems that no tool in the world will ever fix. There’s nothing worse in the world than software decisions made by companies who treat software as a necessary evil rather than a driver of growth.
Stop putting stock traders and accountants and lawyers in charge of your IT department. They may be smart folks, and that kind of strategy may work in politics, but it’s painful to watch the decisions these people make day in and day out. Decisions like outsourcing a project to India with almost no oversight and wondering why it looks like a box of pudding when it finally gets delivered. Or having a budget of $100mm and not bothering to hire UX and UI professionals.
Developers need to speak up, while keeping in mind the limitations of the process and cultural limitations of large enterprise environments. I’ve seen projects go completely off the rails because developers allow corporate inertia to dictate decisions rather than technical merits. I’ve also seen money saved because someone asks the question, “Why are we building a custom app when we can buy it off the shelf?”
Java is long in the tooth, absolutely, but there’s still so much goodness in the Java world: GWT, Wicket, Guice, and on and on. Talented programmers can create beautiful things with these tools.
Or if you think I’m wrong, you can develop your next app using 4GLs like SAS, FoxPro, and webMethods.