I Will Not Learn Rails
(Originally published March 2012.)
I will not learn Rails: I don’t want to be associated with a community who call themselves “rockstar developers”.
Quite often - nearly once a week around the time I write this - I find myself at various developer or startup meetups or other networking events. So far, only one of the events I’ve been to has actually been bad. (htc: if you’re going to be giving a presentation at a developer meetup, either make it interesting, or send people who actually have even simple knowledge about the product beyond what’s in the deck.)
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.
Update: Apparently I’m not the first one to notice this.
These questions are rarely good. Useful questions are asked because someone was interested in clarification. These questions were asked because they need to ask them. As a concequence, they’re usually a very specific anecdote or a technicality. (One of the recurring themes of science is generalizations. None of the equations required to build a computer were 100% correct. If you can’t accept this, you’re in the wrong field, because you will literally never do anything.)
The disruptions usually progress to more openly aggressive ones as the attendee becomes more comfortable with insulting the presenter. I once attended an event where an attendee heavily criticized Startup Weekend for not promoting startup education heavily enough because attendees usually have to attend more than one event before they’re successful. Never mind that they’ve probably saved years of struggling if they’d been on their own.
Naturally, these people love to talk to their “peers” after the presentation, so they can “help” them. As if by shitting all over someone, they’ve somehow stumbled across something which is more effective than traditional conversation; something which other people are simply too weak to participate in. If you don’t enjoy it, you’re too scared.
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:
<kevinclark> zedas: they aren’t passive aggressive. You don’t want anyone to check in to your repo. Evan’s repo is open to anyone who’s gotten a patch in. polar opposites
<kevinclark> and you’re still a dick
<kevinclark> and I’m enjoying the vacation
<kevinclark> so, keep it up
<zedas> kevinclark: you just called me a dick?
<kevinclark> you can still read too
Kevin, acting like a fifth grader, then goes on to delete the config file for the project, causing the developers an hour of work tracking down the cause of their failed tests.
THEY’RE DESTROYING THE NEXT GENERATION OF COMPUTER SCIENTISTS
I have no problem with criticism. It’s just better for the community to tell someone their idea is shit without killing their desire to be in that community.
As someone who’s highly involved in the education sector for computer science, showing people we’re friendly, nice, approachable people is one of the biggest difficulties I face when trying to explain to people why they should take at least an interest in computer science (and hopefully an introductory class!). Yet personally twice I’ve seen these “rockstars” completely killing the passion in young developers. It’s “tough love”, they may argue. Bullshit. I’ve had many a dream shot down during my education. There are polite ways to do it; ways which don’t result in hostility towards other developers.
It often takes me weeks to convince someone newer to actually make an effort in a community. They show up, mingle about for a bit, and then the rockstar developer introduces himself. (To start, the introduction usually has the words “I’ll get to you,” since making people wait is a sign of importance.) He then proceeds to tell them how their idea is stupid, and the many tiny reasons it will never work. For example, Twitter will never work because who wants to read that shit? And Square is an awful idea because you’ll never be able to work with the credit card companies, and customers won’t trust someone with a credit card reader on their phone. And hey, why haven’t you made the readers yet? Hey, don’t get me wrong, this is a great thing to do as a hobby.
(Somehow, their ideas are always fantastic, despite the fact that the only successful “rockstars” I’ve met are the team from 37signals.)
It’s not as if Rails doesn’t know about the problem. Rails is the problem. They created the problem.
From presentations full of porn and jokes at the expense of women, to DongML, to refusing to acknowledge design flaw after design flaw, then freaking out when they turn out to be bad choices. The rails group curated the atmosphere of immaturity.
THEY’RE NOT ACTUALLY ANY BETTER THAN THE REST OF US
Rails isn’t actually that good.
Yes, Rails was a successful framework. A successful framework which runs on Ruby, a language which they didn’t develop. That, in turn, is usually run on a server running a flavor of Linux, which they didn’t develop. 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.
Early on, it didn’t even run well! Ignoring the fact that the framework+server still takes on the order of a gigabyte ofram, making it a poor choice for many of the simple applications they target, early rails applications needed to be restarted tens of times a day. They ignored the vast number of users who were on shared hosts, requiring very specific configurations which a majority of their target market do not need.
By all measures, this has improved after some of the early releases, but the core team are hardly the gods of programming they often purport to be.
Rails isn’t even special. The idea of simplifying development has been around for ages, and many other frameworks exist with less aggressive communities. The Django community, for instance, has, in my experience, been filled with nice people who enjoy chatting about development.
I don’t want to give the wrong impression: I’ve met hundreds of fantastic Rails developers, and I have some close friends in the area. Similarly, Rails developers are hardly the only childish ones in the developer community. What the Rails team did was to popularize the idea that being crude was somehow a more enlightened way to be; they legitimized what was otherwise a fringe behavior.
I am a developer. I write code. I enjoy this, and I enjoy making products for people. I like meeting other people who also enjoy these activities. I don’t pretend to be a rockstar; programmers will never be rockstars. I try to solve problems I think are important. Even if I’m successful, it doesn’t mean I’m good: it’s quite a bit about luck and connections. At best I’m a great programmer.
I’m certainly not against using the right technology for the job. But Rails is no longer the only framework of its type, and if I have a choice, I’d rather not be part of a community which seriously thinks constant dick jokes are hilarious.
As for how to deal with them, the general advice for trolls applies equally to inadvertent, self-righteous ones: don’t feed the troll. Put no time into the answers to their questions. Don’t reply to their insults. I’ve had several serious conversations with these developers, and have yet to get a single useful bit of information from them which I didn’t get later in the evening from someone more pleasant.