An ex-student of mine is trying to decide what web technology to use in the project he’s about to start working on.  The three choices are Java plus some kind of framework, Django and Python (which he knows very well), or Ruby on Rails (which he doesn’t, but could pick up quickly).  The argument in favor of Java plus whatever is that his employer is sure to be able to hire good Java programmers at a reasonable price for the next decade, but as he points out, doing small or medium-sized project in Java takes longer and hurts more than doing it in a dynamic language like Python or Ruby.

But what about Django vs. Rails? Is one more widely used than the other?  That’s usually a pretty good guide to how easy it will be to hire programmers who already know it [1], and how quickly libraries or adapters for [name of next year’s hot new technology goes here] appear for it.

In the past, I’ve relied on book sales, or even just the number of books on a topic, to tell me how much programmers care about something. My ex-student tried something else: a Google Trends query comparing “django” with “ruby rails”:


I was very surprised: my impression had been that Ruby on Rails was much more widely used than Django. But then I looked at the query itself a little more closely, and decided to try two others. The first compares “rails” to “django”:


That’s a very different answer, but looking at the results, it’s also untrustworthy, since “rails” includes web traffic about trains. How about trying “ruby rails” vs. “python django”:


Which is the “right” answer? I have no idea. The last one corresponds most closely with my preconceptions, but I’ve been bitten enough times to recognize confirmation bias when I commit it :-). Rails Pub Night in Toronto draws ten to twenty times as many people as meetings of the Toronto Python Users’ Group, but again, that’s not necessarily an indication of who’s using Django.

What else would you try to figure it out?

[1] Yes, a good programmer can learn a new language in a couple of weeks, but mastering a web framework and the dozens of modules needed to build an industrial-grade app takes a lot longer—it’s like the difference between being able to ask where the bathroom is and being able to discuss literature.