History Repeats Itself
By Alex Bunardzic under Then they fight you..., F/OSS, Rails on 22. August 2005Jason Hunter (Jason Hunter), a renowned Java evangelist an the author of two highly popular books on J2EE technology (Java Servlet Programming, and Java Enterprise Best Practices, ) posted an interesting blog entry last week: The Innovator’s Dilemma: It’s Happening To Java. The “innovator’s dilemma” that Jason is talking about is expressed as follows: “you can listen to customers, provide them with what they want, but still lose out – because a cheaper, not-as-good but good-enough competitor comes in and eats your market.”
Kind of reminds me of the days when I was shopping for my home audio system. I used to visit lots of high-end shops, where knowledgeable sales personnel would engage me in detailed demos of various components, but at the end of the day I would walk across the street to some of those cheap outlets (Circuit City etc.) to see if I could get same or similar components for less.
The dilemma Jason is referring to is specifically related to Java. Here we have an exorbitantly expensive platform, that, ten years after its launch, had reached a point where it is too complex to be able to be used in any meaningful, let alone feasible fashion. So, in a way, we could say that the situation is similar to what was happening to the mainframes 15 - 20 years ago, when the businesses reached the end of their rope and realized that they need to adopt a more disruptive technology.
Jason’s thesis is that Ruby on Rails is this disruptive technology. Java is now being perceived as a sitting duck, similar to how mainframes were the sitting ducks of the early nineties. And similar to how client/server technology came about and claimed the market share traditionally reserved for the mainframes, RoR is today poised to eat into the Java’s market share (hence the ‘disruptive’ epithet).
One of the strongest arguments he makes about RoR’s threat is this one: “In programming these days, cheaper isn’t about price, it’s about mental effort.”
Now, anyone who’s ever tried to develop a web application using the J2EE frameworks, and then tried to to the same thing using RoR, will undoubtedly agree that RoR requires significantly less of a mental effort. And thus, RoR is significantly cheaper.
Ironically, it was this same quality that made Java so attractive 10 years ago. Due to the fact that Java was so much simpler than C++ (so much so that in its early days Java used to be called ‘C minus-minus’), it made huge inroads into the development community’s mind share, and overtook C++ as the language of choice when it comes to developing applications. Lowering the cost of software development is obviously a strong driving force in motivating the adoption of the new technology.
The mood in the Java camp nowadays is really strange. As is to be expected, the prevailing sentiment is the one of huge denial. This is similar to the mainframe crowd sentiment 15 years ago.
But the odd thing is that the same people who tend to shrug off RoR’s threat to Java seem to be at the same time working frantically on proving that Java can be concise too. Ironically, they are attempting to introduce simplicity into the Java platform by adding new features to it! This leaves an open question: since when is bloat to be regarded as simplification?
In the final analysis, it is extremely significant that a number of top-echelon Java evangelists are jumping into RoR heads first, and are buying into it hook, line and sinker. The worrisome aspect of all this is that, once RoR takes off and hits the mainstream, who’s going to do the new development? Most of the existing development workforce hadn’t managed yet to make the transition from procedural to object-based approach. The full fledged OO nature of Ruby, coupled with its dynamic nature, may prove to be too big of a challenge for the average application developer out there.
The Badger:
Significant in which sense, though? These are people who didn’t “get” dynamic languages for about a decade. Perhaps the only significant thing one can take away from these people’s participation in the RoR hype chorus is that they like to cheerlead for a fashionable cause, but then we already knew that.
comment at 22. August 2005
Withheld to protect the ignorant:
Replace X with C++, Java, Python, .Net, and now Ruby/Rails. Guess what? The old languages are still being used, um, a lot.
That’s great that Rails allows you to create a ToDo application in 5 minutes from scratch. Guess what? Lots of businesses picked their poison several years ago and are firmly entrenched in a combination of language, middleware and backend. Rails doesn’t do much for them.
A combination of Eclipse and a nice framework in Java plus the humongous amount of free, bug-tested, optimized, libraries that are out there is still attractive to a lot of people.
comment at 22. August 2005
alexbunardzic:
The Badger writes:
“Significant in which sense, though?”
There are currently some 4.5 million Java developers worldwide. Maybe you’ve just joined the IT workforce, so you may not know much about the IT history, but not that long ago Sun and the budding Java community were celebrating the hundred thousandth download of JSDK.
What I’m trying to say is that most of these 4.5 million Java developers don’t have much of an opinion when it comes to which language/platform is good and which one isn’t that good. They just go in whichever direction the industry moguls point them to.
Up until recently, it was all Java and J2EE. Jason Hunter was one of the most prominent gurus who popularized the open source frameworks back in 2000 (such as Webmacro, Velocity, etc.) He helped bring those beasts into the corporate fold.
Today, he’s advocating that we abandon them and look into something like RoR instead. And guess what — there is a big chance that the crowds will listen.
So, if the prospect of having hundreds of thousands developers switch over to RoR does not count as being significant in your book, I guess our respective definitions of what’s significant widely vary.
Perhaps you could tells us what would be significant in your world?
“Perhaps the only significant thing one can take away from these people’s participation in the RoR hype chorus is that they like to cheerlead for a fashionable cause, but then we already knew that.”
Yes, and we already know that their cheering is what makes or breaks certain market segments. Who do you think killed two-tier client/server?
comment at 22. August 2005
alexbunardzic:
“Replace X with C++, Java, Python, .Net, and now Ruby/Rails. Guess what? The old languages are still being used, um, a lot.”
No technology ever dies out. Today, even a hundred years after the invention of automobile, the horse-pulled carriages are still in operation. And they will remain with us forever.
That’s not the point. the point is which technology is getting the most focus. Yes, COBOL is still being used for an odd dev job (very rarely, though). Same is with FORTRAN, even Pascal. But that fact doesn’t make them equal contestants to Java, VB, C#, etc.
“Guess what? Lots of businesses picked their poison several years ago and are firmly entrenched in a combination of language, middleware and backend. Rails doesn’t do much for them.”
Interestingly enough, I’ve heard the exact same argument 15 years ago. Only that time the poison that the businesses have picked was the mainframe technology. People were convinced that C++, VB, Java and other client/server paradigms will never replace those monolithic mainframes as the main application development platform.
Today, Java is the new mainframe. Java is what COBOL used to be 15 years ago.
Don’t forget that businesses had enormous investment in mainframe technology 15 years ago. Yet, they were willy-nilly forced to reliquish their stranglehold on the dying technology and to move on to the more modern platforms.
It had already happened once, I don’t see no reason why it couldn’t happen again.
comment at 22. August 2005
Rafe:
Alex, your writing might be more interesting if you didn’t constantly rely on the straw man argument to support the cases you try to make.
comment at 22. August 2005
alexbunardzic:
Rafe,
Everything could be construed as a straw man argument. Any time anyone disagrees with your opinion, you could cry ’straw man!’
In this particular case, though, what is it that strikes you as being the ’straw man argument’? The fact that I’ve related another person’s opinion is a straw man argument?
comment at 22. August 2005
Rafe:
Plenty of people are using Java in a meaningful, feasible fashion, including me. So this is a straw man, you make up an impression of Java that doesn’t really exist so you can explain why it doesn’t work.
Is this the mood in the Java camp? I see a lot of people in the Java camp who are excited about Rails. And what are they supposed to be denying anyway? I guarantee you that not only are more people using Java than are using Rails, but more people are learning Java than are learning Rails. I’m sure the same is true for PHP and .NET as well — not that any of them are a better platform, but we’re just talking about platforms that are operating in different leagues right now.
And I think Jason is falling into the straw man trap as well. Java/J2EE has never been the best platform for agile development. We’ve always had Perl, PHP, Python, ColdFusion, and plenty of other platforms that offer a better story if you’re looking to crank out small applications quickly. That’s not Java’s strength, and pretending that’s so is the ultimate straw man, I think.
comment at 22. August 2005
teddziuba:
RoR is dangerously close to becoming a buzzword. I don’t want to see stuff re-implemented on RoR just because “it feels good”, but I know in my heart it’s going to happen. Sigh.
Where’s my Python at?
comment at 22. August 2005
SteveW:
“Today, Java is the new mainframe. Java is what COBOL used to be 15 years ago.”
What exactly does that mean? Widespread usage?
The gulf between COBOL and Java is a lot larger than the gulf between Java and Ruby. Java is very usable today, has a vast library of code to pick and choose from, and has some great IDEs that make coding in it very productive. A search on Monster for IT jobs with the keyword Ruby: 14. A search on Monster for IT jobs with the keyword Java: I don’t know–it says “more than 1000″. Who’s dying?
“Yet, they were willy-nilly forced to reliquish their stranglehold on the dying technology and to move on to the more modern platforms.”
Back then you had mainframes with limited CPU and memory and disk space, no internet, no web browsers, no irc, no xml, no 3D graphics, etc. Fast forward to today. Sorry, but I fail to see the same evolutionary jump from Java to Ruby.
I’m not a Ruby hater, but I’m not looking at life through ruby-colored glasses either. The amount of hype being generated over Ruby on Rails is kookie, and a little skepticism is only natural.
comment at 22. August 2005
mark:
That’s a ridiculously simplistic generalization. Are you saying this is true for any application, no matter its size, scope, or purpose?
comment at 22. August 2005
thirdshift:
I currently pay the bills with Java. I have also coded PHP, Perl and VBScript/ASP professionally as well. The point being, that I am not a Java zealot.
I am currently learning Ruby and Rails and I am really enjoying both of them. Do you know what the only thing is that bugs me about them? Exceedingly arrogant and ignorant statements like the one above made by a thankfully small group of Ruby/Rails advocates. If any bit of what you are trying to do with this post is to persuade Java developers to consider Ruby and/or Rails then you are failing.
comment at 22. August 2005
The Ricker:
“Due to the fact that Java was so much simpler than C++ (so much so that in its early days Java used to be called ‘C minus-minus’), it made huge inroads into the development community’s mind share, and overtook C++ as the language of choice when it comes to developing applications.”
This is puzzling. Java on windows never took off. Java on Mac never really took off–in fact, they’re openly shunning it in favor of Objective-C. Most embedded programming doesn’t use Java. Most games don’t use Java. In fact, the only thing I can think of that Java really won some inroads in was server-side programming.
“Most of the existing development workforce hadn’t managed yet to make the transition from procedural to object-based approach. The full fledged OO nature of Ruby, coupled with its dynamic nature, may prove to be too big of a challenge for the average application developer out there.”
Geez–spare us the arrogance. If Ruby becomes pragmatic for the wallet, developers will flock to it, just like they did Java. And I thought Ruby was supposed to be easier to learn than Java, anyway.
There’s too much koolaid zealotry going on here. The reason why you see that the “mood in the Java camp nowadays is really strange” is because you’re reading blogs and visiting conferences–you know, stuff that thrives on fads. The silent majority of developers are working away in businesses. The world is larger than the blogosphere. Take a step back for a bit and look.
comment at 23. August 2005
dave:
Without wanting to actually predict whether Ruby on Rails (or any other technology) will overthrow Java and on what timescale, I must say I’m disappointed by the level of debate.
We’re talking about the innovators dilemma & disruptive innovations. If your point includes:
then you’re not really getting it, are you? Go read a few articles and then come back.
And if you’re entire problem with RoR is the Koolaid Factor, go read Physics of Passion: The Koolaid Point. It posits that this is an inevitable reaction to having passionate users, and of course you’re not going to get very far without such users. You could even see this as a sign of success.
Also re: dissing Java on the desktop, why does everything in technology seem to come down to mainstream desktop apps and games? You get this when folk are talking down Open Source too. I don’t care if some app produced by Microsoft or AOL on a million dollar budget and distributed to the whole world is written in entirely closed source C++. Who else is in that position? The small audience desktop apps being built by small companies and small teams to support people in businesses with unique needs are being built in Java (if they’re not still using VB that is) or being thrown out completely in favour of web apps (again in Java, PHP or maybe Rails).
I’m much more interested in the incredible desktop apps being built by individuals and small teams using Cocoa on Mac OS X (a technology stack that is somewhere on a par with Java when compared with C++ and Ruby) and I am patiently waiting for the open source, cross-platform, dynamic language equivalent of Ruby on Rails for the desktop. Python seems to be shaping up to fill this role on Ubuntu Linux, while Red Hat, Novell argue about adopting the technologies (Java and Mono) that this blog post says are dying, but I’ve not seen anything that captures best practices quite as well as RoR does in the web realm.
comment at 23. August 2005
james governor:
i think dilbert says it better:
http://www.dilbert.com/comics/dilbert/archive/dilbert-20050823.html
comment at 23. August 2005
Peter Williams’ Weblog » Blog Archive » Less Condescension, please:
[…] I generally like the writing on lesscode.org but I have to take issue with the tone of History Repeats Itself. Mr Bunardzic is basically right about the fact that Java succeeded because it was simpler than C++ and that it looks like Ruby might succeed because it is simpler than Java but I really dislike the condescending attitude he has toward programmers stuck in static languages. […]
pingback at 23. August 2005
alexbunardzic:
Peter Williams objected against my condescending attitude. My defense is as follows:
I think you may have misunderstood my concerns. I have been teaching object-oriented development at the local colleges for 5 years now, and I’ve seen what sorts of challenges they pose to procedural developers. As most people would agree, the transition from procedural to object-oriented is very difficult for many developers. I can testify from my first hand experience that many procedural developers attempting to make a transition do not extend themselves to truly try the OO way of doing things.
Instead, quite typically, many of my students take the OO constraints that come with languages such as Java, and use them as a simple structure for hosting their procedural code.
I’ve seen reams and reams of code written in Java where procedural code was masquerading as OO. Needless to say, the resulting applications usually end up being a huge ball of mud. You can read this as being condescending, but I just call it as I see it.
My concern is that if the community has consistently shown such resistance toward static OO paradigm, their resistance towards a fully dynamic one will probably be even greater.
This is strictly my personal perspective, which is biased and tainted by my own quirks. But that’s the only thing I can go by, since I’m not placing much emphasis on the overall hype that’s being passed around in the media.
comment at 23. August 2005
alexbunardzic:
The Ricker wrote:
“Geez–spare us the arrogance. If Ruby becomes pragmatic for the wallet, developers will flock to it, just like they did Java. And I thought Ruby was supposed to be easier to learn than Java, anyway.”
Sorry for the arrogance in my post which slipped probably due to my impatience.
You are right — Java at one point became pragmatic for the wallet, which opened up the possibility for me to teach numerous Java and OO classes to the local community. Numerous COBOL, VB etc. developers flocked to Java because of the jobs. The colleges then devised half-baked curriculums to churn half-baked Java developers in order to satisfy the market demand.
The rest is history.
And you are also right that people will flock to Ruby if it ever becomes the job creator.
I would be prepared to argue that Ruby is not easier to learn than Java. There are depths to be plumbed in Ruby that a regular Java person does not even dream of.
But that’s not really the point. The point is that with Ruby we are given a clean slate to rethink our approach and to abandon the ways of complication and complexity that crept into our Java code. Here we finaly have a chance to do things in a reasonable fashion. I’d like to see the software development community give it a world.
comment at 23. August 2005
Viamentis Technologies:
Java: Sitting duck?
The popularity of Rails is making many people sit up and take notice about what RoR is doing right. One of Java web development heavyweights, Jason Hunter, wrote a very interesting article on how RoR is poised to eat into Java developer mindshare. And the
trackback at 24. August 2005
The Badger:
There’s no need to be patronising: I’ve been using Java since 1995, and it has been the technology (rather than something nicer, unfortunately) which has got me hired and thus paid. On the stats front, there have apparently been N million downloads of Solaris, but I doubt that the majority of that particular “shiny new free stuff” crowd ever even installed it. Still, that’s the kind of audience you’re talking about, I suppose.
Yes, let’s look at a cross-section of the safe J2EE corporate choices: the Apache stuff. I’ve dealt with quite a bit of it, and whilst people seem to portray it all as cutting edge stuff, with everyone having fun developing it in a corporate sort of way, if you look at the code base on apache.org it seems to be in a forever-expanding bloat phase like a dying star waiting for a supernova.
I’m sure Jason Hunter is well-known in various scenes, but I’ve never heard of him through my corporate experiences, which admittedly says something about the corporate environments I’ve been in. But then I really wonder whether corporate environments engender that atmosphere of passionate learning which would familiarise employees to Mr Hunter’s endeavours and make them appreciate everything he has to say (as opposed to what Sun/IBM/Oracle/Microsoft have to say). And I also wonder about how great some of the Java scene gurus are with their 10000 class solutions to relatively modest problems. Not that I tar Mr Hunter with that particular brush, but I do doubt the top honours piled on various Rails advocates.
I’d argue that the people who would really appreciate dynamic languages and environments aren’t listening: they’re well ahead of Mr Hunter; they’re using them already! Everyone else is just waiting for a shrink-wrapped package and a certification programme foisted upon them by their bosses.
I don’t doubt that Java is a sitting duck - it’s like a bad film (movie) concept that the nephew of the studio boss has been pitching to executives for the best part of the afternoon, enjoying an indecent amount of attention that worthier projects are never likely to see. That one “needs” Eclipse plus additions (plus big iron) just to make anything more sophisticated than “hello Web” bearable to the cube jockeys is a pretty firm indication that some kind of re-adjustment will arrive to partially replace it. What’s happened so far is that C#/.NET has been the replacement in many corporate scenes: it’s similar enough to be “safe” whilst having the “shiny new” factor - the best of both corporate worlds!
In my view, Rails only deserves respect for making some kinds of applications easier - a not unsurprising facet of a dynamic language framework - but even then there are technical aspects of that project which make me (and presumably many others) cringe, and not in a leather and latex “more discipline required” J2EE way, either. By rubbing the hype in to their already overstated achievements, the Rails people are already on the track well trodden by Sun Microsystems ten years ago. The difference is that Sun bankrolled Java with a lot of loose dot-com cash, white papers and “high corporate” promotion, whose practitioners were never expected to project credibility, whereas in the supposedly developer-centred Rails hype chorus the louder you sing shows how far you still have to go before you really get it.
comment at 24. August 2005
alexbunardzic:
The Badger writes:
“There’s no need to be patronising:”
Sorry if I came across as patronizing; I just wasn’t sure if you’ve been there to witness the rise of Java in the late ’90s. It is obvious now that you’re actually a Java veteran:-)
“By rubbing the hype in to their already overstated achievements, the Rails people are already on the track well trodden by Sun Microsystems ten years ago. The difference is that Sun bankrolled Java with a lot of loose dot-com cash, white papers and “high corporate” promotion, whose practitioners were never expected to project credibility, whereas in the supposedly developer-centred Rails hype chorus the louder you sing shows how far you still have to go before you really get it.”
It’s kind of funny, but if memory serves me, I don’t think that Java’s smashing popularity rode on the dot-com wave. If anything, the corporations that adopted Java and made it really big used to be extremely dot-com shy. Remeber those IBM TV ads from 6 years ago with the pierced, tatooed dot-com high tech kids being portrayed as every corporate henchman’s worst nightmare? That horrid image was then used to highlight the seriousness and non-hacker culture of Java as the only feasible corporate IT solution.
Don’t forget that Java was once in exact same position as Ruby is today. Serious, entrenched corporate people scoffed at Java. IBM had to use pretty nasty, low-blow marketing tactics to scare developers into switching to Java from COBOL and RPG. I recall vividly the ‘burger flipping’ ads in IBM-related magazines, where they bluntly asked the developers what would they rather do: make an effort to learn Java, or switch to flipping burgers? The message was loud and clear — adopt or die!
Ruby (and Rails) community is nowhere near that desperate and that aggressive (nor that condescending). All we are saying is give lesscode a chance!
comment at 25. August 2005
alexbunardzic:
thirdshift wrote:
“If any bit of what you are trying to do with this post is to persuade Java developers to consider Ruby and/or Rails then you are failing.”
I’m not trying to persuade anyone. I was merely relating the article that was originally posted by a very renowned author who has a proven track record of influencing the direction corporate technology is taking (Jason Hunter). I happen to agree with him, which does not automatically mean that I’m trying to proselytize.
comment at 25. August 2005
alexbunardzic:
mark wrote:
“That’s a ridiculously simplistic generalization. Are you saying this is true for any application, no matter its size, scope, or purpose?”
Sorry, I’ve omitted one crucial word — ‘typical’.
comment at 25. August 2005
alexbunardzic:
Rafe wrote:
“Plenty of people are using Java in a meaningful, feasible fashion, including me. So this is a straw man, you make up an impression of Java that doesn’t really exist so you can explain why it doesn’t work.”
As most things in the business world, the IT-related things boil down to cost. Why did corporations agree to abandon their huge investment in mainframes and switch to client/server? One word –cost. Real or perceived, the cost savings is always the biggest driving force behind all such decisions.
Fifteen years ago, with mainframes running the corporate business operations, the cost of doing the maintenance and upkeep reached exorbitant, almost astronomical proportions. This generated huge headache for many corporations. Not only that, but also presented a serious barrier to entry for many smaller businesses who wanted to join in and ride the IT wave.
The only way to increase competitive edge was to adopt a more affordable technological solution. Java came along and offered more agile, smaller footprint solution that was capable of leveraging the existing infrastructure while embracing the emerging one. The only barrier to entry at that point was the lack of available Java skills in the workforce.
Fast forward to 2005. Java environment mushroomed beyond anyone’s wildest dreams. Today, we see framework upon framework being hoisted upon the core Java platform, and the amount of expertise required to cope with that level of complexity is simply insane.
This is why right now corporations are slowly starting to wake up and realize that the cost of doing IT the traditional, Java way, is unsustainable. Compare that to the fraction of a price required to do the same type of maintenance using the next generation tools, such as Ruby and all the domain-specific languages that are so easy to create using Ruby’s built-in meta-programming facilities.
Folks, at this point it’s a no-contest. We may like it or not like it, but, like COBOL programmers in the early ’90s, we’ll be swept by the change dictated by lowering the cost of doing IT maintenance.
I can’t see how can there be more than one way about it.
comment at 25. August 2005
The Badger:
That’s not how I experienced things. Rewind to 1997 - back then, my colleagues and I were under massive pressure to use Java, thanks to the promotional efforts of the likes of Oracle and Sun. Not long afterwards it was “Java in the database” from all the major database system vendors (who are arguably the most corporate of any kind of vendor, too).
Sure, I’ve worked relatively recently on a large server-side project written in C++, and the kind of entrenched corporate people who would choose C++ over Java for that kind of project now are quite different from those back in 1997: arguably much more unhinged. The crucial difference between then and now is that back then you could propose a dynamic language in preference to Java; now, you’re frozen out if you don’t choose Java or C#, and this may also have as much to do with the maturity of the solutions for Java (with a familiarity effect rubbing off on C#) as the corporate whitewashing that makes Java and C# “safe” choices.
I think you’re right about a disruptive correction coming to shake all this up, though. In many respects, dynamic languages have been a better choice for certain kinds of solutions for the last ten years.
comment at 26. August 2005
alexbunardzic:
The Badger writes:
“That’s not how I experienced things. Rewind to 1997 - back then, my colleagues and I were under massive pressure to use Java, thanks to the promotional efforts of the likes of Oracle and Sun.”
That’s very interesting. I was having huge pains, as a Java evangelist back in 1995-96, to get corporate IT honchos to even look for a second at Java. It wasn’t until the IBM’s ‘burger flipping’ campaign, that hit them over their heads, that they started giving in and allowed for the Java-related budgeting.
“I think you’re right about a disruptive correction coming to shake all this up, though. In many respects, dynamic languages have been a better choice for certain kinds of solutions for the last ten years.”
After what I’ve been through in my career, and knowing how fickle the IT industry is, I can quite easily envision IBM and other big corporate iron throwing a new batch of ads at us, in a not too distant future. Something like, ‘either you make an effort to learn Ruby, or you’ll be flipping burgers for a living!’
God fearing regular folks tend to respond to such propaganda, as was witnessed with the unprecedented penetration of Java and .NET into the corporate fold. But these technologies, once shiny new weaponry, are now starting to be perceived as an impediment and a liability, and pretty soon something new will get introduced through the massive propaganda campaigns. If that’s the case, I’d like to push Ruby on the decision makers.
comment at 26. August 2005
Stefan Arentz:
Here is my response … http://www.sateh.com/blog/2005/08/rortunnelvision.php
comment at 27. August 2005
Stefan Arentz:
Hm stupid markup :-)
http://www.sateh.com/blog/2005/08/ror_tunnel_vision.php
comment at 27. August 2005