Ryan Bigg

⟵ Posts

Please learn Rails

17 Mar 2012

Tyler Menezes wrote a blog post called “I will not learn Rails” which appeared on my Twitter timeline. After reading it, I felt like I needed to reply to it in long form. Here it is.

Hi Tyler,

I’ve been doing Rails since I was your age. I’m now 24. You do the math. Not once have I ever considered quitting it due to anything outlined in your blog post.

Your blog post appeared on my Twitter timeline from MikeG1 who is known for his extreme grasp of .Net, Ruby (and Rails) and sarcasm. I couldn’t exactly tell if his post was intended as sarcasm, but a follow up tweet clarified that for me. I have massive respect for Mike for reasons that I won’t go into here.

Still, I feel like I need to reply to your blog post. It contains things that I disagree with on a personal level and I would much rather address these this way than posting it as a comment on your article.

So, here we go. Comments are inline.

tl;dr: Assholes are everywhere. Ignore them. They feed on your attention.

You start with this explosive line:

I will not learn Rails: I don’t want to be associated with a community who call themselves “rockstar developers”.

Within the Rails community, I find that the people who call themselves “rockstar developers”, aren’t. These people pretend to be much better than what they are. The true fact about this is that no matter what programming community you associate yourself with will have these people.

The developers that I admire and respect do not call themselves “rockstar developers”. They are humble, courteous and all around good people to be around. It’s my very, very strong opinion that you will not find a community more open and welcome than the Ruby and Rails communities that isn’t a religious organisation. It’s seriously that level of zealotry and passion about making the community a better place that keeps me within the Ruby community.

“Matz is nice so we are nice” is an expression you’ll probably hear a lot, if you stick around.

Yet at every event, there’s someone who apparently believes the information is wholly inaccurate, or perhaps that sitting through a presentation without challenging everything is the mark of a weak man. There’s nothing wrong with questioning things, but when your questions are disruptive to the point of forcing the presenter to skip sections of their talk for time, you’re an asshole. If I’m going to an event, I’m going for a reason: the event. Not you.

Again, these people are everywhere. I can’t speak for your own events, but the events I go to such as local Ruby groups back in Australia and conferences all over the world, I have probably encountered somebody like this twice. That’s over my entire Ruby community experience. These people are usually “dealt with”, by members of the community talking with them, or in a more explosive manner, such as a huge Internet-wide backlash that sometimes comes up.

Point is: you will see these people everywhere too. Ignore them. They mean very, very little.

Zed Shaw wrote an extremely controversial blog post, “Rails is a Ghetto,” in 2009 in which he pointed out the tendancy of the rails community to behave like a fifth grade classroom after he closed commits to his project because people behaved like a fifth grade classroom:

A small correction here: Zed wrote this post on 31st December, 2007. Not in 2009. This makes this blog post a little over four years old. The people that are mentioned in that blog post, such as Kevin Clark, are not involved with the community any more. They’ve moved on to other things. Also, the Rails community has evolved dramatically over those four years. My personal aim for the Rails community is to make it nothing like the PHP or C communities, where you’re told to “RTFM” whenever you ask a question. You’ll probably get that kind of thing occasionally in the Ruby community, but 99% of the time you’ll get linked to the perfect spot in the documentation. Then, if you still don’t understand, people will take the time and help you to understand. All for free.

Yet personally twice I’ve seen these “rockstars” completely killing the passion in young developers. It’s “tough love”, they may argue.

I used to get insulted when peoeple would simplify what I did. It’s generally these young developers that do that kind of thing. They would say “Oh, you just sit there and write code all day. All I need to do is learn everything there is know about Ruby and Rails and I can write code just like you”. Well, actually, you can’t do that. Ruby and Rails are too big to keep all in one brain at one time, and so that first point is improbable, and secondly: there’s so much more to writing code than just putting characters on a screen.

These rockstars that you’re talking about probably don’t acknowledge that those young developers are exactly as they were X years ago. These young developers may have such a passion for wanting to learn a language, that they don’t realise that the more senior developer just can’t “get it” that the younger guy doesn’t just understand.

I used to hate on people who just wouldn’t go out and learn. Now, I’m more patient. I recognise that they are just trying to learn and that if I spend some time teaching them, showing them whatever it is they want to know, they’ll be so much more appreciative and passionate of both the language and my help that they’ll probably stick around longer. If I dismiss them, then what is there perogative to stick around? There just isn’t one. They would be crazy to do so.

From presentations full of porn and jokes at the expense of women …

I remember this incident well. The enormous backlash against Matt Aimonetti was of a scale that I had never seen before. I have never seen that many people from the Ruby community be so united against any particular thing that one individual has done. This incident was the reason that Mike Gunderloy stopped contributing as much as he used to the Ruby community.

Since this incident, the Ruby community abhorrs any kind of sexism. Yesterday, at Mountain West Ruby Conference, a person gave a talk on “Pinterest for Bros”. Afterwards, some standout members of the community such as Josh Susser messaged him on Twitter and told him off. I haven’t seen his replies, but I don’t think he meant it as much as Matt did.

… DongML …

Again, sometimes you’ll encounter assholes. This is one of them. Ignore, move on. They will be dealt with by the community at-large.

… to refusing to acknowledge design flaw [semi-colons in URLs] …

This one was a mistake from 2007. It was a silly thing to do and written by a developer who was eventually corrected. There’s so many examples of this happening in Rails: a developer does something stupid, the community corrects it. It ends up being net positive.

… design flaw [mass-assignment]

This is a tricky problem to solve. Rails champions convention over configuration and so having all attributes blacklisted by default means that there would need to be some configuration to whitelist specific attributes. There are other problems which are covered elsewhere. I won’t go into detail here other than to say it’s a problem that’s being addressed by the smartest minds in the community right now.

… then freaking out when they turn out to be bad choices. [Egor Homakov’s post]

Mr. Homakov is not representative of the Rails community at all. He is, to me, an outsider who spends his time trying to show that he’s an “uber l33t hacker” by breaking GitHub or any other Rails site.

The rails group curated the atmosphere of immaturity.

While it is true that we take ourselves much less seriously than other communities (see: C# developers, the end of Aaron Patterson’s talk at Railsconf in 2011, etc.), I wouldn’t go as far as to claim that we’re immature. Rails has been around for 8 years now and is growing more and more mature by the day. Yes, there is some outliers in the community who are immature, but as I keep saying: they are not representative of the masses AND you will find them elsewhere as well.

Rails isn’t actually good.

This is where I went “OH NO HE JUST DINNIT”. Then I chilled out some.

I think Rails is excellent. Of course I’m a little biased, having done it for 6 years, written a book about it and contributed heavily to its documentation.

The framework is exactly what I personally want in a web framework.

Anyway, to address your points that follow:

A successful framework which runs on Ruby, a language which they didn’t develop.

I don’t see how this is a problem. There are many other languages and frameworks that are built on top of other things. Like Django, for instance.

That, in turn, is usually run on a server running a flavor of Linux, which they didn’t develop

Again, not sure why this is such a big deal. Rails is designed to be cross-platform and so should work on many different operating systems. Whatever system Ruby works on, there’s a very, very high chance that Rails will work there also.

What Rails actually did was create some classes which simplified repetitive code. They designed something, wrote some pretty simple code, and became more arrogant than the people who did the bulk of the work.

To be honest, I actually find this a little offensive; almost like you’re trying to start a flamewar. I’ll ignore that and address the points.

Rails is not simple by any means. To understand exactly how Rails works you need to understand quite a lot of things. The code that has been written for Rails is “simple” once you understand it, but that isn’t to say that all parts of Rails are trivial to the uninitiated. For example, explain to me the function of ActiveSupport::Dependencies succinctly. That shit is messed up.

Certain members of the core team are indeed highly arrogant. This mostly comes from them also being highly opinionated. Most of the time, this is not a problem as they are usually right about things. You learn to deal with their arrogance, stroke their ego some and work together on making the world a better place. Yet again, Rails core is not indicative of the community as a whole. No particular group is, really.

And it doesn’t even run well! The framework+server takes on the order of a gigabyte of RAM

I would like to disagree here. While a Rails application may use that much RAM, RAM is cheap. Developer time is not. Rails is not designed to operate on a small cluster of RAM, but is designed for developer productivity and happiness. At the end of the day, what’s more important? A small memory footprint or a framework that justs gets out of your way and lets you develop?

Early rails applications needed to be restarted tens of times a day.

You are addressing an ancient problem here, almost near the beginning of my Rails career. This was due (to my knowledge) to particular problems within how Rails was configured on a server and has been addressed in more than one way since then. This is most definitely not a problem these days, and is therefore a moot point.

They ignored the vast number of users who were on shared hosts, requiring very specific configurations which a majority of their target markey do not need.

Time and time again it is proven that users on shared hosting suffer, I’ll admit. Just the other day somebody couldn’t install a gem onto their Dreamhost server because Dreamhost was still using a 1.3 version of RubyGems. In this case (and many others), it’s generally a configuration issue with the shared hosting provider that causes the problem (such as not staying up-to-date with software releases), not anything in particular to do with Ruby or Rails.

If you can find a case where I’m wrong about this, I would absolutely like to hear about it.

But the core team are hardly the gods of programming they often purport to be.

The core team are not gods at all. They are simple human beings just like you and me. The purporting going on is mostly just posturing.

Rails isn’t even special. The idea of simplifying development has been around for ages …

Simplifying development has been around for exactly how long? Rails was the first framework of its kind that gained a huge following and other frameworks followed after it. Django was one (I think, I’m in the air right now and can’t connect to the Internet), CakePHP another.

The Django community, for instance, has, in my experience, been filled with nice people who enjoy chatting about development.

I have no personal experience with this, but I have heard reports from people who have switched that the Ruby community is nicer and more welcoming than the Django community. I’m sure there’s nice people in both communities.

I’d rather not be part of a community which seriously thinks dick jokes are hilarious.

The truth is that 99.99% of the Rails community thinks dick jokes are immature. There’s a small portion who just won’t give it up, and that’s just in their nature.

Thank you for taking the time to read this far.

I would encourage you to check out the Ruby and Rails community again, even if it is just to see that we’re not all arrogant assholes making dick jokes every chance we get. I think you could really benefit from learning more about the language and the framework.

Thanks! Ryan Bigg