Update: As several guys pointed out in the comments, Tim’s remark which basically pulled the trigger was sarcastic – I guess have to re-calibrate my sarcasm meter. So you need to replace “Tim” and whatever he said with a different guy and his random quote. There are plenty of them out there these days, so the choice should be easy :-).
This rant was in the works for quite some time – I ditched it at least two times already, convincing myself that there is no use to get into language wars and similar nonsense… but people didn’t let the issue go (i.e. that Ruby jumped the shark / it started to suck for some reason etc – most recent example being a tweet by @timbray) so get ready for some grandiose rantbling!
Tim Bray: “I guess Ruby is over…”
Srsly? By what measure? Actually when did it start? Why exactly then? Again, by what measure? What does ‘over’ mean at all? Says who?
I am currently reading “The Black Swan: The Impact of the Highly Improbable” from Nassim Taleb. There is a section describing Tim’s logic perfectly:
“By a mental mechanism I call naive empiricism, we have a natural tendency to look for instances to confirm our story … – these instances are always easy to find. You take past instances that corroborate your theories and treat them as evidence… I can find confirmation for just about anything, the way a skilled London cabbie can find traffic to increase the fare, even on a holiday”
… or the way Tim can find a bogus evidence for Ruby’s alleged decline, whatever that means. I am wondering where have the current “ruby jumped the shark” guys been 3 quarters ago when Ruby books have been on a roller coaster riding up with the speed of light?!?!
Naive empiricism is everywhere
Guess what, I am guilty of naive empiricism too: I wrote an article stating the opposite of Tim’s tweet, based on similar, but opposite O’Reilly data (i.e. Ruby book sales on the rise). Why? Because I have been a Ruby/Rails zealot back then already, that’s why! And I *wanted* to see Ruby on the rise, and did not really care whether my claims were objective (I *wanted* to see that they were objective – meta-naive empiricism FTW!)
Another great example of naive empiricism is the ‘CDBaby: from Rails to PHP‘ vs ‘MuxTape: from PHP to Rails‘ 2-part saga: the funny thing is that both Derek and Luke argue very convincingly and charismatically about the exact different side of the same coin: why the move from framework X to Y has been the best idea since sliced bread, how it saved their ass, pushed productivity to the ends of the earth… arriving at a total opposite conclusion using the same reasoning.
Another bogus reasoning I hear a lot: Python is used in google so it’s > Ruby! Unfortunately enough for the guys treating this fact as a royal flush , Ruby is used in NASA, by some of the smartest folks in Ruby-land. So what?! Does this mean Ruby > Python (or at least is equal to gogle <=> NASA)? Not at all (In my opinion Ruby > Python actually, but 1) this is a personal preference thing 2) it has nothing to do with google vs NASA 3) is a topic of a different rant, which possibly won’t be written as I grew tired of lang wars fought with flame throwers).
Or take github: currently 31% of the code living there is Ruby (and you can’t really argue that by now, github matters – it’s not just a hobby project of 2 guys tired with their original startup any more). So according to this measure, everyone start learning Ruby!
but Tim argues instead:
“…Everyone start learning C#”
This is the second part of @timbray’s rather questionable tweet… and here is why:
Comparing the need for Ruby workforce to the C# one is like comparing the need for planes to that of cars. No correlation.
C# is usually used…
- for enterprisey stuff
- to write big, monolithic apps
- by big teams for long-term projects
- by BigCO running on a large budget
- in M$ shops
Ruby/Rails is the total opposite… it’s usually used…
- for coding quick web apps / internal DSLs / domain specific stuff
- to craft lean, focused apps, interoperating with each other
- by small, agile, flexible teams, sometimes lone rangers
- Usually smaller budget (direct consequence of the first point)
- in shops with totally different culture compared to that of M$
Both lists could grow unbounded if I cared to come up with more points.
So Tim is essentially saying ‘no need for agile teams cranking out top notch (usually web-based) software fast – everybody jump on the Titanic (the safe 9-5 world of enterprise apps in one of the cubicles of BigCO).
Sorry, but this is utter BS. There will be always a need for lean, agile, quick teams. Following this logic, you should abandon the Python/Django ship too. And btw guess what – the Titanic sunk in the end, no matter how safe it originally was.
So where’s Rails?
It’s not clear to me where is Rails (and a slew of other widely used frameworks/software produced in Ruby) in Tim’s picture. The thing is that Ruby is tied to Rails just like the US economy is tied to just about everyone else’s economy around the world. If Rails prospers, so does Ruby – a kick-ass r41lz h4xx0r is a kick-ass Ruby h4xx0r with knowledge of Rails after all.
However, it looks like there is need for Rails coders: Tom Mornini, one of the founders of Engine Yard, the leading Ruby/Rails hosting states that good Rails developers are very scarce. And while Rails developers will be a scarce commodity, Ruby developers will be too.
Ruby isn’t Fun anymore… wtf?
This is the original part of the rant, from the time when more “ruby/rails sucks” articles popped up in a quick succession, followed by a grandiose trollfest on various social sites, and eventually meta-ranting (my personal favorite).
Apples and Oranges Strike Again
I am a bit confused after reading all this outburst: I seriously think ‘fun’ vs ‘mainstream’, ‘imperfect’ (or even ‘buggy’), ‘slow’ etc. are orthogonal problems. Why should be Ruby less fun than it ever was because now it has more acceptance / users / enterprise penetration and/or it’s slow / 1.9 is not a big deal / it leaks memory (fill in the other pain points from the rants)??! This just doesn’t make any sense. Ruby is fun _and_ it has some problems to address. These two are not contradictory statements at all. It’s immense fun to be with my 2-year old daughter, though she is sometimes hard to handle – so I should say it’s no fun anymore?!?
“Ruby isn’t fun any more *for me*” is a totally different claim from “Ruby isn’t fun any more” (in general). I don’t give a shit if Ruby isn’t fun any more for *you*, but please, don’t describe it as community- or language-wide phenomenon. kthx.
You like python? Great! Putting bread on the table coding in Java? Cool. You’d like to play around with bleeding edge stuff (clojure/scala/erlang etc.)? All the better.
Ruby is slow? The syntax is obscucre? You don’t like Rails/DHH/fanboys/TextMate/Ruby/arrogant douchebags/whatever? Ruby is not fun for you (any more?)
Too bad, so sad – however, this doesn’t alter the fact that Ruby *is* immense fun for me, and a whole community of people, and no ranting will change that, no matter how hard you are trying.
I am not even arguing that Ruby is better than X – I am far beyond that point already (after having my share with some Java vs Ruby flamewars). I am just arguing that people should stop tweeting / blogging about nonsense underpinned with ‘evidence’ just because they want to see the world that way.