Programming posted by Zohar Arad

10 reasons not to use Ruby

Update (19-Nov-2012 18:30pm) – The following post is a subjective rant. It isn’t meant to convince you that you should or shouldn’t use Ruby, or any other technology. The context of the points below is that of Web development, rather than computer programming in general. My attempt in this post is to surface some points made over the years by developers I met from other programming communities in respect to Ruby as a Web development technology, and illustrate that people should try and keep an open mind when it comes to unfamiliar grounds. Enjoy.

I recently gave a 15min talk about things I love about Ruby as a programming language and an eco-system.

Naturally, that meant upsetting a few tender-hearted PHP, .NET and Java developers, who, instead of becoming curious, felt I was being condescending and critical of their much-loved technology.

Since this isn’t about religion but about opening up to new things, I thought it might be a good idea to come up with all the reasons others might give for not using Ruby for your Web development needs.

1. Ruby isn’t as mature as Java or PHP

It’s true. Java and PHP have been used for Web development longer than Ruby. Well, you know what? My grandmother has also been around longer than Ruby, but I don’t go about using her to build Web apps every other day. In the Web era, where technology reinvents itself every couple of years, being old and mature isn’t necessarily an advantage. In many respects the Ruby community has learned from the mistakes of the past and was able to adapt and adopt better, modern solutions faster than the fragmented PHP community.

If your only criteria for assessing a technology is age, you’re in the wrong line of work.

2. Ruby isn’t as performant as .NET or Java

You’re right. Ruby is also slower than Erlang, Lua and C++ but you don’t go about writing Erlang or C++ code every day, do you? Web development isn’t all about code performance. Your new shiny Web app doesn’t have a million users a day for day one. You need to code it, test it, release it, rinse and repeat, and you need to do that quickly. So, initially, the important factor is developer performance rather than code performance. Hiding behind the “performance” argument is not only cowardly, it’s plain wrong, because instead of focusing on releasing your app as quickly as possible, you’re focusing on the unknown promise that one day you might have to worry about scale. Well, Ruby apps scale as well as .NET or Java apps. We all end up there, clench our teeth and handle it like adults. We might do it differently, but we do it all the same and usually begin at the DB level rather than the application level. Curious, right?

3. Ruby doesn’t work well on Windows

Of course it doesn’t. Windows is great for many things, but Open-Source Web development isn’t one of them. When you think about it, Ruby, like many other great technologies was first developed for *NIX and only later ported to Windows. It’s a bit like buying a scooter and trying to use it for off-road bike racing. It wasn’t designed for that.

Instead of banging your head against the wall, complaining that you’re used to Windows and all that jazz, just take a deep breath, install Linux and get on with life. Technology is about learning new things, not staying in your comfort zone forever.

4. Ruby isn’t as popular or commonly used as PHP

You’re absolutely right! Just do me a favour and mind your head before going back into your DeLorean as you go back to the future (erm, I meant present). Technology isn’t a popularity contest, otherwise we would all be developing Websites in Javascript (currently the most popular language on Github). Technology is means to an end. Popularity is a warped factor that tries to measure adoption rate and community activity to help people gauge production-readiness, code stability and support level. Here’s a novel idea for you then – Try checking production-readiness, code stability and support level on a per-technology basis, rather than throwing popularity figures into the thinning air.

5. The Ruby community is condescending and snobbish

Well, yeah, and the Java community is stubborn, the .NET community is closed-minded, the Perl community is quirky and the C++ community is a bunch of middle-aged, pipe-smoking elves.

I’ve met all sorts of developers from all sorts of backgrounds. I’m not saying there aren’t any Ruby snobs, but from my experience they’re not the majority (and I have met some very snobbish Java and .NET developers as well). Mostly, I think that people mistake pragmatism for condescension. Since Ruby is relatively young, and tends towards early adoption of many technologies, Rubyists have a relatively easy life when it comes to trivial stuff like tests, deployment, integrations with 3rd parties and so on. So when a Rubyist is “boasting” that things are easier in the Ruby world, they’re not looking down at you, but merely suggesting there’s a simpler, more pragmatic way of doing things.

6. Ruby is too opinionated and takes away my freedom to do things my way

This is one of those statements that’s not only wrong, but just plain dumb. Let me ask you this – How many ways are there to write an HTTP routing component for a Web app or an image manipulation library?

Convention over configuration, best practices and clear codings standards don’t take freedom away from developers. Instead they help them focus on the important things like business logic, rather than the menial, repetitive things like static asset minification and concatenation.

Ruby’s opinionated and convention-driven approach helps developers not only to become more productive, but also to adhere to community-driven standards that aim to reduce boilerplate code to a minimum. Many people can chant the “KISS & DRY” paradigms, yet not as many adhere to it.

The funny thing is that Ruby is one of the only languages I know that lets you change absolutely anything, anytime, anywhere. Yet, people seem to be happy to adhere to its standards and conventions because it makes them more productive, without compromising their ability to innovate and be creative. Curious, right?

7. Ruby isn’t as reliable as Java and .NET

Windows isn’t as secure as NetBSD. Oh No!!! I should dump my shiny new Windows for a NetBSD installation. If you’re only way to measure reliability is type-safeness, then you’re looking at things from the wrong perspective.

While static languages offer a performance boost in relation to dynamic languages, due to their compiled nature, and a strict mechanism to ensure private and public APIs are adhered to, lets be blunt – How many bugs, in your history as a programmer, were the direct result of a wrongly-typed variable?

Ensuring a method can only accept variables of predetermined types doesn’t ensure sound and bug-free code. If anything, it adds noise to an otherwise clean code in case you do have to cast variables or read compiler complaints about wrong types.

Ruby’s way of solving this conundrum is to promote testing as a culture. In other words, your code is as reliable as your tests, not as reliable as your method signatures.

8. Ruby lacks entreprise-level support

Sure, if you’re an enterprising ant working for a bunch of bureaucrats who consider COBOL to be cutting edge stuff. Ever heard of Engine Yard? No? But they offer fantastic enterprise-level Ruby support.

The whole chant about enterprises and support comes from the olden days where companies who made technology felt the only way to ensure a steady income from their products, was to tie end-users to their platform. There are hoards of enterprise official who come up with amazing reasons for you, the developer, to stick to their expensive, reliable, solid, state-of-the-art, technology. Does it mean you have to? Are you so incapable that the mere threat of being left alone “unsupported” deters you from choosing a piece of tech. that might actually be more suitable for your needs?

Let me ask you this – How long do you think it will take a company like Microsoft, to find, fix, admit, and release a fix to a security hole in IIS? Now think again, taking into account all the bad PR this could generate. Do you honestly think that a PR-conscious, money-driven monopoly cares about your Web app’s security?

In an era where technological innovation goes hand-in-hand (and is often driven by) open source code, choosing a closed-source, monopolised, technology for the sake of support is choosing to stay one step behind everyone else. Just take a look at companies like Basho, RedHat, Canonical, 10gen, Cloudera and Engine Yard, who all offer open-source technologies as well as enterprise-level paid support.

9. Ruby doesn’t scale well

That’s an old one, dating mostly to the days of Twitter’s childhood, when Twitter grew so fast, they had to fix deep-level code inside ActiveRecord to add support for multiple MySQL DBs inside their Rails application. Sadly people confuse Ruby and Rails and in the Twitter example forget to mention that Twitter admitted they owe part of their rapid, successful growth to Rails’ ease of use and rapid development principles.

There comes a time in any successful application’s life-cycle when scale becomes and issue. Facebook solved it by compiling PHP to C++, Twitter opted for Scala, YouTube still run on Python, Apache and MySQL. Since no two Web apps are exactly alike, one should learn from battle-hardened experience of successful Web apps, rather than proclaim one technology is superiorly scalable than another.

10. It’s a lot harder to find experienced Ruby developers in today’s market

That’s actually true, depending on where you are in the world. In Israel, for example, where .NET and PHP are more widely used, finding good Ruby developers is harder. But, you know what? It’s also harder to find experienced Javascript developers. In my mind, that’s a clear indicator that a certain segment of the market is in demand, and is on the rise, which is definitely a good thing.

To top it all up, I can safely say, that finding good PHP developers is also hard, especially in a rapidly growing and vibrant high-tech market. I would even argue that finding good PHP developers is harder than finding good Ruby developers because being a good PHP developer requires both more experience and more discipline, in relation to Ruby, due to PHP’s fragmented, user-generated documentation and inconsistent API.

So, instead of shying away from a good thing because it’s hard, why not train Ruby developers yourself? I mean, if you agree it’s the right technology to use, why not invest in it?


  • This post isn’t a technical examination

    • Nope, nor does it try to be technical. It’s a subjective view from my perspective

    • I think you dont really know about the power of Ruby and all therir implementations. Youy shuld be know Ruby is PHP father and PHP is used for programmers non enginners graduated Just for techical people.

      PHP should be more popular than ruby but is slower. And you are sure saying that is difficult to meet people who uses ruby and the main reason is becouse are few Good Developers.

  • Great post! You are not your tool, and your app is not your language.
    I am however guilty of shoe-horning Ruby into places it shouldn’t got, and been bitten.

  • Ruby , Java, and PHP were all released in 1995.

  • This article seem very disjointed.

    In production PHP tends to be slower then Ruby, Python or Perl. It would be very surprising if Ruby was slower than Lua (unless it a corner case)?

    if you want speed use Java or C++ or better yet use C.

    • This article isn’t about Ruby performance. It’s about recounting “reasons” people from other eco-systems give to not using Ruby.
      As per your Lua reference, from what I know, Lua is faster than both Ruby & Python, but again, this article isn’t about a performance competition between languages.

  • Ruby – First appeared in 1995
    Java – First appeared in 1995
    PHP – First appeared in 1995

    I stopped reading after #1

    • I should clarify that I am talking about all these languages in the context of Web development, where PHP, if you recall had a clear dominance over other languages for several years.

  • Here are a few responses to three of your points (and staying well clear of the silly ones about scaling and community ;-):

    1 – Ruby has been around at least as long as Java and PHP. Go check Wikipedia — they all ‘first appeared’ in 1995. Incredible, huh? Matz started on Ruby in something like ’92.

    2 & 3 – JRuby takes care of both of those points. You can deploy your Rails app to a J2EE server if you like. And it’s fast.

    6 – You’re confusing Rails with Ruby. Ruby is not opinionated, it’s just a language. You can do anything you like with it.

    • In response to your valid points:

      1. This is purely in the context of Web development
      2. Read the article again from the top – I’m trying to “quote” people from other eco-systems who give reasons for not using Ruby.
      3. Ruby is as far as I can tell more opinionated that PHP and Python for example. There are clear best practices, do and do nots. I agree that Rails is a very opinionated framework, but from my experience, coding in Ruby (even without Rails), tends towards certain “right” ways of doing things.

  • Nice article, totally agree with you. :)

  • This post comes off as quite defensive. Ruby doesn’t need another post talking about how great it is, that just pours fuel on the language holy war fire. An honest discussion about community weaknesses from insiders would be more useful.

    • I’m actually not trying to preach for Ruby or come to its defence. Since I have encountered defensive approaches from people in other communities, when the whole “Ruby vs. X” comes up, I thought i’d write a summary of common “excuses” or “reasons” I encountered to entrench one’s self in their current technology, rather than remain open minded.

      I have no problem with people using PHP or Java or even .NET for their work, as long as they’re happy and it makes them productive. I do have a problem with people discrediting Ruby due to fantasy excuses and irrational reasons that origin from close-mindedness.

      If I was proficient enough in PHP or Java for example, I’d be more than happy to do a similar writeup for these technologies.

  • […] Programming News: 10 reasons not to use Ruby I recently gave a 15min talk about things I love about Ruby as a programming language and an eco-system. Naturally, that meant upsetting a few tender-hearted PHP, .NET and Java developers, who, instead of becoming curious, felt I was being condescending and critical of their much-loved technology. Since this isn’t about religion but about opening up to new things, I thought it might be a good idea to come up with all the reasons others might give for not using Ruby for your Web development needs. Read full story => Zohar Arad […]

  • Sorry to say that, but you’re just taking flawed assumptions from hypothetical Ruby opponents, and answering to them with more flawed arguments. I don’t think that helps anything.

    e.g. You’re talking about not confusing Ruby with Rails, but you’re comparing Ruby (a language) with .NET (a big framework with several stacks and several language running on it).
    You’re also confusing “mature” with “old”.
    You’re saying that perfs don’t matter at an early stage (I don’t care about knowing if Ruby is slower or faster than X, it’s not my point here), and I disagree. Even if you can scale as well with Y as with X, having to scale earlier and more often with Y would mean that your costs will be growing faster if you’re using Y. And a technology shift is not cost-free. Whatever the answer, one must ask himself the question of perfs, and if a technology has better performance than another for a given case, use it (that of course balanced with factors like ease of use, productivity, etc).
    Same thing about the environment. You’re not always in situation where you can chose to use Windows or not. So the argument about Windows can in some cases be completely valid. That’s because you didn’t precise if your post is about “don’t use Ruby on production”, “don’t use Ruby when you’re in the position to make a company decision” or “don’t use Ruby for your pet project”.

    Your lack of precision make your post lose credibility and become one of the many potential trolls around.

    Like Ruby ? Fine. Don’t like Ruby ? Fine too. Do benchmarks, check which of the tools you need are available or easy to make with each language/stack, try things and pick whatever suits you best and solves your problem. That what’s make you a developer, not caring about trends and answering to childish claims.
    You want to take a stand and defend your language of choice? Do it! Show nice code and good metrics, that speaks by itself.

    • I’m sorry that reading this post makes you think of me as a troll. Early on I tried to explain that I wanted to tackle claims i heard made by developers from different eco-system about Ruby. I’m actually not trying to troll anything, or anyone or even say “You should use Ruby”. This stuff was sitting in the back of my mind for some time now and I thought I’d rant about it. So, this isn’t a post about the merits of Ruby vs. X but a post about mindsets of people I spoke to about working with Ruby vs. working with other techs.

  • good article.
    I would like to read about the other side.
    why should I use rails, especially from the point of view of the project manager side

  • Not saying that you’re a troll, I don’t know you and don’t want to judge you based on the content of a unique post. I don’t think either that the point of the post was trolling.
    But unfortunately what you’ve written looks like a troll, because you take, out of context, quotes that seem bad from others, and answer to them with some confusion and inacurracy (see examples in my previous answer), thus making yourself look bad.
    Plus, with such a title, you can expect lot of people coming with trolling in mind before even reading.
    Knowing how to communicate is also part of being a good developer, don’t let irritation coming from the others’ rants make you fall into the same flawed logic. ;)

    • Points taken to heart :) and thanks for your willingness to debate rather than simply criticise. I must admit I’m a bit overwhelmed by the responses and traffic. I just reopened the blog, and this was literally my first post, which I didn’t expect to go on Hacker News.

      I’ll make an effort to better communicate my ideas in future posts.

  • If only you would know a little more, you wouldn’t tell all these shit.

    But you highlight the problem with RoR (and generally by extension Ruby) people : they are stuck in their shinny conception of the world, and think everyone should be stuck with them.

    Well, guess what, there is people that do know more and they don’t need shitty post like that to know what technology to use when…
    (And yes, outside of RoR, there is about hundred reason to not use Ruby for a web service…).

    • First of all, I’d appreciate it if you could refrain from offensive words such as “shit”.

      Furthermore, if you read the post in context, you’d find that I’m not trying to promote Ruby, but to show that some of the claims I heard being made against Ruby are baseless and originate in close-mindedness, rather than mere merit. I don’t claim that Ruby or RoR are the only valid tools to write Web services, nor do I claim that other technologies are invalid, unusable or inappropriate.

      This isn’t a discussion about technology, but about attitude, and I’m sorry that yours seems so negative and close-minded.

  • Well!

  • Well I’m not a Ruby lover but still I would say that comparing languages is like comparing a hamburger with a pizza. You can say “10 reasons not to eat pizza” because someone else can also write “10 reasons not to eat hamburger”.

  • Great and funny post :) Thanks a lot!

  • […] The Blog…  […]

  • […] The Blog…  […]

    • We’re American. Don’t code in a Japanese language-drive their efficient cars. Go openware or Oracle or anything American. That’s where the past is and that’s where the future is as far as coding goes(besides GNU).

  • These comments about each point are so biased. You just took Ruby’s flaws and other language’s strong points and discarded them as irrelevant. For example: Rails is slow and you are gonna have a lot less problem with performance if you use PHP (specially without bloated frameworks). It’s a fact that you can’t ignore, but that might not be a problem in some project

    A good programmer is someone who does amazing things with his favorite language and that’s it. Doesn’t hurt to study other languages though, you might find your new favorite language or learn new techniques. I myself am stepping out of Ruby after some years programming with it. Got tired of it’s flaws (and also I kinda want to program native desktop softwares now so C++!)

  • I love your blog

    I have read this article and enjoyed it

Looking for something?

Related Posts

Be Sociable