27
Why Ruby on Rails?
by AkitaOnRails on Dec.27.2007 at 03:29am
For the last 3 years a lot of people have been asking “Why should one use Ruby on Rails when my framework X is clearly superior?” or something like this.
That’s a good question, raises a lot of good points but the way those discussions end are a real shame for the whole community to say the very least. I can’t praise myself too much either because I was part of some flame wars as well and I don’t like what I said in some occasions as well. Yes, I acted like a troll myself and for that I apologize.
Ranting
A recent discussion that attracted a lot of trolls was the Code’s Worst Enemy by Steve Yegge. First of all, Steve is an exceptional developer – I would be happy to be half as smart as he is. That said I assume that Steve knew that would happen, but he posted it nonetheless. He actually did what any good professional would do: he had a problem, and he tackled it the best way he could. One could argue about his conclusions but it doesn’t make him automatically wrong either. He raised several good points, he studied several options and made an educated choice. One could argue that he was too harsh towards Java. Well, that’s his blog and it is called ‘Steve’s Blog Rants’ for a reason.
For those who don’t know me, let me write a brief introduction to set the stage for the rest of the article. I am a full-time Ruby on Rails programmer and Brazil Rails Practice Manager for a respectable US consulting firm. My opinions here are not to be held against them as this is my personal blog, of course. Disclaimers aside, I’ve been programming for 2 decades, since the Z-80 Era, Apple II, MSX, etc. From Basic, to dBase, to Clipper, etc I’ve seem the demise of platforms, newborns, and so on and so forth. For the last decade I’ve been involved in Web Application development and corporate solutions from SAP (as a certified SAP Enterprise Portal developer), IBM, BEA, Microsoft and the whole she-bang. I am myself a certified PMI project manager and I have field practice both project manager and development leader. So, yes, I can consider myself reasonably educated in both technical and humane areas of Software Development life cycles.
I mentioned these certifications because I know there are a bunch of people out there that consider them kinda of important and this article is actually geared toward this kind of people. But truth be told: I usually don’t like to mention this at all. I don’t even sign my e-mails as “Fabio Akita, PMP” as some does because I don’t praise myself for this title either: the certification test were so easy that I don’t think about it is a good indicator for anything.
Technically speaking I’ve dealt with Java for a few years, but I deployed systems based in classic ASP, ASP.NET, PHP, Perl and Python as well. I am professionally working with Rails for only 6 months, though I’ve written the first RoR book for the brazilian audience almost a year and a half ago.
Trolls
But, I am obviously not perfect. Very far from that. And I’ve recently allowed myself to commit the sin of inflaming a discussion in a .NET audience targeted article. It all began because the author deemed RoR developers as noobies that were incapable of grasping ASP.NET superiority. Yes, I know, makes a lot of people angry. But it was not reasonable to drag myself into that nonsense discussion.
I will not mention the website and the author’s name because it is utterly irrelevant. I would ask those who know it to not mention it in the comments as well: it would be just free advertisement for them. The discussion spawned for dozens of comments. In summary, the author ‘challenged’ me to ‘prove’ that I was right by having chosen RoR instead of ASP.NET. Obviously the Burden of Proof was in his hands, as he was the one that made the statement of the contrary.
Then, he tried to turn the whole thing up into a public competition. He actually wanted me to ‘compete’ with him so he could prove his point. It would have a jury to judge the contenders. Basically a geeky American Idol like contest. What made me very angry was that his goal is to ‘scientifically prove’ that ASP.NET is superior to RoR or vice-versa. It bugs me how a ‘contest’ could be held as ‘scientific proof’ for the superiority of anything. He clearly doesn’t know anything about the scientific method – and I will assume that everybody here knows this.
Of course, I declined this nonsense. And looking back, I actually regret discussing with him at all. It was a complete waste of time. I made a lot of rantings and actually wrote bad things. The main point is that this person states that it is utterly a waste of time to get to know anything different than his current toolset unless there are ‘hard evidence’ that the alternatives are superior enough to compensate the time ‘wasted’ learning. We will be doomed when ‘learning something new’ is considered a ‘waste of time’.
One has to wonder how can such a person consider himself a pro-programmer. As Pete McBreen and Dave Thomas already explained several times: Programming is not Rocket Science, literally. It is an evolving engineering field and some aspects of it are more like ‘Art’. Two very good programmers can come up with two very different implementations – both of them good – for the same given Use Case. So it is not a mathematical equation. Programming is very hard to be fully automated – we tried! RAD and 4GL languages come to mind. It is an impossibility to ‘prove’ the superiority if one language or one framework against the other and I will elaborate on why.
There is no point making a ‘contest’ between frameworks X and Y. First and foremost, every modern mainstream language is Turing-complete. Some will perform specific tasks better than others, but essentially any language can do what the other does with varying degrees of difficult. All of them have a history, a father and a set of circumstances that gave birth to them. Guido Van Rossum, Yukihiro Matsumoto, Larry Wall, Anders Hejlsberg, all of them had their own reasons to create a new language. No one can say a nonsense like ‘Matz was clever or more intelligent than Larry’ for God’s sake!
For the same reason no one can state that DHH is smarter than Adrian Holovaty or Avi Bryant. They made their creations based on their particular needs. If you have the same kinds of problems you will lean toward one or the other, but that alone don’t make for a good argument about ‘my frameworks is necessarily better than yours’.
Making choices
And how do you know which one to choose? Well, one thing is for sure: it is NOT by reading biased ‘technical comparisons’ between them. They can serve as an initial baseline for research but if you never tried them, you can’t be sure and you positively are NOT doing an educated choice. That particular ranting .net person clearly has no clue about anything else than .net therefore he’s obviously doing a blind choice every time. And let me keep it clear that I don’t consider him as a model for the whole .net community. That would be dumb, and I know a lot of very good .net developers. He is an exception and not to be considered a good model for a developer.
So, every language being Turing-complete, technically every framework built on top of them have the capability of doing whatever the other alternative framework does. Some will grow so bloated that it becomes a hassle to manage and evolve. Some will be very spartan on their choices and not cover every aspect of development. Some will be too flexible, some will be too limited.
More important than that: every language/framework have a community around it. The bigger the community the faster the growth. One year ago a lot of people wouldn’t believe that Rails would make it until a 2.0 release. But it actually happened, and this is thanks to the large community that helped it happen.
The most important error every reviewer does is holding a framework ‘superior’ against another by comparing just a few key features the he thinks that are important. The error being that the judgment about with feature is better, most of the time, is purely a matter of taste. Some technical characteristics as performance are taken into account, but performance alone is not enough to justify a choice, otherwise we would all be writing Web Apps in Assembler or C. If we are not, so we do consider ‘other’ things as important.
Kind of an OK Article
Now, being some choices a matter of taste, one has to use a lot of tools, experiment, research, be open minded and only then attempt to make a good choice – for yourself. One person’s choice is not necessarily the best choice for everybody else. Finally we come to the article that inspired this post: Visual Studio 2008 vs Ruby on Rails. I don’t know this guy and I’ve never read his blog before. A friend of mine brought this up into my attention. And differently than you might expect: it’s not a pure ranting against RoR. It is actually a developer that, having experience in both ASP.NET and RoR, made his decision on using RoR for some green field projects, and ASP.NET in some other cases. Ok, I can live with that.
So, I left him a post comment, here’s what I said with a few corrections:
Good post, as a full time Railer I don’t really agree with all you say or imply – for example making the mistake (probably unintentional) that Bruce Tate not knowing somethings mean they don’t exist, or are just too difficult to bother; or worse: that he summarizes what a Railer is. But even with this defect I like how you started this discussion: you actually tried RoR even being a .Net programmer and for that I applaud your article. I don’t know you but at least for me you seem to have tried your best to do an educated argument. I don’t see the usual troll ranting.
That’s a breathe of fresh air because recently I naively got myself involved in a public ranting against a brazilian .net troll that started his argument by implying that anyone who chooses RoR is a misinformed amateur. Pros have only one choice: asp.net.
I agreed with him that RoR isn’t perfect. I know that even MS has lots of very smart and truly dedicated developers. I interviewed John Lam for my website and he was very insightful. But this troll in question wanted to set a very lame “competition” to “scientifically prove” that asp.net is far superior and therefore RoR wouldn’t even deserve to exist.
My main problem with him was that he deemed utterly unnecessary for him to even look at RoR to assert that he was right. At that point – after a very lengthy discussion – I dropped the discussion as it became a waste of time. I actually know .net very well and I do respect its capabilities. I’ve deployed Java, Php, Perl and Python systems for that matter. RoR “clicked” for me. It’s that simple. Even being a heavy Eclipse user for the past couple of years I actually don’t miss it that much.
Your discussion raises a number of valid points. No one has ever officially stated that RoR is perfect, it is evolving. I won’t apologize for the trolls, because trolls aren’t exclusive in a single community. You mentioned DotNetNuke, it really is a neat product. Let’s just remember that I used to do PHP-Nuke years before and it took some time for .net to catch up later. The RoR world doesn’t have something similar today, yet! We don’t have anything like Wordpress for that matter, or Plone. It doesn’t mean however that this deems RoR “inferior”, it just means that either the community will catch up soon, or that this niche is already well served and yet-another-clone wouldn’t be meaningful.
You mentioned open source projects that makes .net better like NHibernate. But if we consider just the bare bones out-of-the-box .net it is harder to compare it next to RoR. If we can consider add-ons, than you should add tools like ActiveScaffold to the mix. Now scaffolding doesn’t look so bad. Or maybe add Ambition as a contender for Linq. Or Markaby or Haml for ease of semantic web construction. Maybe Rspec would make it seem just too cool to mention for testing. And so on and so forth.
Don’t get me wrong: I don’t disagree that Vs2008 will be better than vs2003, but they’re not aiming for a frozen down target: we are moving, faster than ever. One year ago no one would have believed that Ruby would be possible and faster over the JVM, but we are now. No one would have believed that one could have things as Twitter happening, but it is. Or even that one would be able to host RoR apps over .net, but we are on the verge to.
The best thing about RoR, to me, is being part of a very energetic community that is always under pressure. We suffer particularly more pressure than any other framework today, because we became the contender to beat down. No one believed us 2 or 3 years ago. But we sped up so fast that a lot of people now have to play catch up. 6 months from now some other frameworks will catch up until where we stand right now. But in 6 months we will have progressed some more. That’s the fun part. Let me make myself very clear that I am not stating that we are superior, but instead that we do have some very good features that everybody wants, and it shows.
And instead of considering just Bruce Tate you should try people as Dr Nic Williams, Geoffrey Grosenbach, Chad Fowler, David Black, Evan Phoenix, Hal Fulton, etc. I know: I’ve interviewed them all.
All that said, let me tell that I partially agree with your conclusion: RoR is not suited for every use case. Any project that diverges from 37signals style apps may have a hard time. You need Wordpress? Stick with the real deal. You need Plone? Stick with it. It is part of being a good developer to know how to make educated decisions. Learning other languages, frameworks and tools is part of the job.
But trying to make your tool look good by the wrong path of trying to make everybody else look bad is a noobie thing. Glad you didn’t walked that line.
My own personal conclusion
So, that ‘other’ .net person states that my decision of using RoR is wrong and I am making myself miserable for using RoR instead of ASP.NET – unless I can prove the contrary. How lame one can be? He never even attempted to use RoR – or Django, or Seaside, or Symphony or anything else for that matter, which is a pity. It is the same thing as saying that the whole community – with thousands of members worldwide – are all delusional around a vaporware called RoR. He prefers to ignore that we already have hundreds of success stories and successfully delivered projects, both public websites and privately held intranet web applications. He ignores that there are several people like me: our day-job is delivering good RoR-based apps.
So, no, RoR is no vaporware. It is here now and many people are already benefiting from it. But, does it make it suitable for every web application? Definitely not. For that you have to decide yourself through hands-on experience. The result for your situation will differ from someone else. There are several reasons to choose one framework over the other: some are technical, some are economics, some are cultural. Whatever the case, there is no Silver Bullet. How many times do we have to repeat that. Fred Brooks warned us 3 decades ago! And this time is no different: RoR is NO Silver Bullet. Nor is ASP.NET for that matter.
Does myself using RoR today make myself ‘religious’ as this guy states? Of course not. I don’t despise other technologies. On the contrary: I am always looking for the future. It can be RoR today and for a few years. Eventually something else will arise. Will it be a framework written in Erland? OCaml? A totally radical new language? Who knows. That’s what makes this quest so exciting.
If you don’t enjoy your day-job, I am very sorry for you, but for me, programming is pure joy. I like technology. I am not loyal to branding, never will be, I don’t care about fancy labels and colorful certifications. “Will this new technology X make myself happier and excited?” If yes, welcome.
Ruby on Rails currently fits the bill perfectly, and for that, I enjoy RoR so much to get onboard on the Rails bandwagon. I hope others do the same and help us grow this great community. If you don’t like RoR, don’t worry, it doesn’t make you or us bad, an educated decision is usually a good decision. No one ever said that we have to agree upon just everything. That would be a tedious world if everything was unanimous. Diversity is the key to evolution.







A brazillian trolls? That sure is a lot.
I really liked you article. There should be more open-minded opinions like you did, thanks for it.