A friend of mine recently contacted me about my entry called Why Ruby on Rails won’t become mainstream and is asking me if I’m still of this opinion. I thought that revisiting this topic would be a good way to start the year, so here goes…

My first reaction was to go to monster.com and dice.com and check out a few numbers. Here are some preliminary results:

dice.com monster.com
Ruby 632 562
Ruby on Rails 243 190
Java 14996 > 5000
J2EE 7313 4380
.net 11905 [Error]
C# 6886 > 5000
PHP 2170 2216

These numbers are fairly consistent but since the data sample is relatively low, you are welcome to dismiss them as not representative, but that won’t stop me from elaborating a bit more on the subject…

My overall impression is that Ruby on Rails has settled in a niche that is probably not marginal any more but is still a far cry from being any close to mainstream. I’m also betting that this mindshare will probably not grow by much in the coming year, so it will be interesting to revisit this prediction in one year from now.

At any rate, I would say that my concern with Ruby on Rails has shifted in a few subtle ways. The problem is no longer that it won’t become mainstream but that it suffers from a few blemishes and flaws that still make betting an entire business on it a risky call plagued with limits that even the most determined entrepreneur will have a hard time overcoming.
Here are a few random thoughts:

  • From a developer’s perspective, finding a job in Ruby or Ruby on Rails is probably not extremely hard, although it’s still much harder than finding one in Java or C#, but it seems to me that the very fact that Ruby is a niche is what allows the few developers that are fluent in it to locate paying jobs with reasonable salaries (at least, it seems to be the case around me, but I live in San Francisco so my personal data sample is probably a bit biased).

  • The lack of powerful IDE functionalities such as refactoring for Ruby (and Ruby on Rails is much worse off) is still a concern and limits tremendously the pool of developers that Ruby can tap into (see below for some elaboration on this topic).

  • Let’s suppose we can rank developers on a scale from A+ to G-, G- being “terrible” and A+ being “stellar”, I claim that in order to implement a similar product, you will need a team of B+ Ruby developers while a similar result could be achieved with a team of C+ Java developers.

This echoes one of the points I made in my original article: Ruby on Rails is sometimes too clever and too magical, and it takes quite a bit more of intellectual effort to understand how it works than it takes to understand how a servlet or even an advanced framework like WebWorks works. I also suspect that in order to be efficient with RoR, you need to practice it every day. Stop using it or abandon a certain section of your code for a few months and I’m afraid that the combination of Ruby and RoR’s sometimes overbearing cuteness will lead you to a lot of hours trying to understand how your own code works (RoR’s tendency to have a lot of implicit defaults or source files in different directories magically connected to each other doesn’t help).

Let’s go back to the developer quality argument: not only do you need smarter developers when you’re writing a Rails application, there also happens to be *less* of these smart developers, since the pool of Ruby programmers is dwarfed by that of Java.

In short, you need better people picked from a smaller pool.

This is potentially a deadly hurdle for start ups that have passed the prototype stage and are now trying to grow their business and their product. They can no longer afford to be picky: whenever they find someone who appears to be good enough, they need to hire him, regardless of any other potential flaws.

And to conclude this brief opinion piece on something even more gloomy, Zed Shaw, the author of Mongrel, a very popular Ruby framework and someone who’s highly respected in the Ruby community (albeit probably not for much longer), posted this very morning a scathing summary of his experience with the Ruby on Rails community. It’s not pretty, it’s very abrasive and probably laced with as many inaccuracies as correct statements, but I’m pretty sure a lot of Rails programmers will relate to some of the anger and frustration that Zed feels.

So do I still think that Ruby on Rails won’t become mainstream? Yes. Definitely. And even if I’m wrong, it will take many years before Ruby on Rails can come even close to the numbers displayed by other popular languages and web frameworks.