We've seen a number of blog posts recently looking back over the technology trends of 2005 and looking ahead to 2006. Unsurprisingly, one of the oft-repeated Important Things(tm) from last year was the rise of Rails, Ruby, dynamic languages, and the hype machine surrounding them. I have one piece of advice for most of those bloggers, and I quote one of the deepest thinkers of our time, Noel Gallagher: "don't look back in anger". (He also famously wrote
She's got a brother We don't get on with one another But I quite fancy her mother And I think that she likes me
(and I think there's wisdom there for all of us.)
One of my favorite sub-memes of this major meme is that 2006 will show that dynamically typed languages are a fad and Java and .NET will again rule the day, and especially that 2006 will be the year that we see one spectacular failure of Ruby in the enterprise and this will be the death knell of this trend.
I have two words in response: "duh uhhhhh". Of COURSE we're going to see a massive public failure of a project written in Ruby or Python or Lisp or SmallTalk or Perl or whatever. It is inevitable. We'll see massive flameouts on a grand scale. You know why? Because for all that Rails or Ruby or Python or what have you attempt to solve a lot of the problems of modern software development, none of them can solve the underlying problem, that software is written by people and is often written by uninterested people. Now that the hype machine has generated enough attention on these dynamically typed platforms, it is only a matter of time before they are adopted by teams who are uninspired by or uninterested in their technical merits, propensities, and features. These teams will use them because they think they can get the same paycheck with less work, and their projects will fail. Loudly.
Does this mean that these languages, platforms and frameworks will be demonstrated to be the emperor's clothes? Not at all. It will merely announce their ascendence into the time-honored tier of Tools that People Use. Nobody has ever claimed, for instance, that using Ruby will make all projects succeed. Just that, in the hands of developers who care, projects can succeed faster and be better. Arguing that a large failure of a Ruby project in 2006 will be a death blow overlooks two important facts:
- there will be many more loud failures of Java and .NET projects in the same time frame
- there hasn't been a loud failure of a Ruby/Rails project yet.
Do either of these facts mean that Java and .NET have failed? Nope, but it sure is interesting, no?