Monday, January 7, 2008

The State of Ruby

Wow. I just read the mother of all rants from this dude, Zed Shaw. He's the author of mongrel, a light web server used for ruby on rails, and from the article, he seems like a fairly competent ruby hacker. I will have to be honest though, when I read the following paragraph, I almost disregarded the entire article.

"I’ll add one more thing to the people reading this: I mean business when I say I’ll take anyone on who wants to fight me. You think you can take me, I’ll pay to rent a boxing ring and beat your fucking ass legally. Remember that I’ve studied enough martial arts to be deadly even though I’m old, and I don’t give a fuck if I kick your mother fucking ass or you kick mine. You don’t like what I’ve said, then write something in reply but fuck you if you think you’re gonna talk to me like you can hurt me."

Whoa dude, calm down tough guy. This screams like little man syndrome to me. You all know the type, they have a fuse shorter then dynamite and will try, in every conceivable way to sound like that big dog at corner of street that is always barking. Unfortunately, in reality they lack that vicious bite they try so desperately hard to make everyone believe they have. Hey, I'm not saying I hated it; quite the contrary, it thoroughly entertained me.

All jokes aside, I was rather shocked about reading some of these rants about how fractured the ruby community is. Maybe it is just this guy, I don't know. But when you read comments such as:

"Now, DHH tells me that he’s got 400 restarts a mother fucking day. That’s 1 restart about ever 4 minutes bitches. These restarts went away after I exposed bugs in the GC and Threads which Mentalguy fixed with fastthread (like a Ninja, Mentalguy is awesome)."

That is ridiculous. 400 restarts a day?! I wouldn't even deal with one a day, let alone 400! Who in their right minds would use rails if it was that gc collector was that inefficient, with out of memory exceptions being thrown left and right? I might have to take zed on that fact, however, he does know the rails core. At least he conveys that he does. I was under the impression that ruby on rails scales?! 37 Signals uses it without any problems, right?

This next interesting rant is about Michael Koziarski:

"That’s right, dude works on Rails in some capacity, apparently writing tons of shitty fucking code with his butt buddy Nicholas Sekar. Yet, nobody knows him. He’s got more web sites than Elvis and Chuck Noris combined and nobody knows him. He’s written mountains more open source code than me and no-bo-dy knows him."

Ah Napoleon, how entertaining this is to read. This is a guy I want to meet in person, dude is intense, and I like that. But to be fair to Mr. Koziarski, I hadn't known either of these two guys up until today,thanks to Zed. I mostly stay in the java/C#/spring/javascript/python world, so I never really read anything about Ruby or Rails. Now I have. Thanks Zed, you now exist in my world...for better or worse.

How bout the top 9 tips about thoughtworks processes. I think this is actually excellent material, and Zed says himself, most consulting outfits work this way. It is really hard to find a really good consulting company apparently. On with the list anyhow and take a read for yourself.

"Continue the logic further my friends with this little walk through consulting practices:

  1. TW figures out it can make a mint doing RoR projects for dumb ass MBAs at dumbass companies.
  2. TW goes for it and gets 60% of its business now all RoR.
  3. TW realizes that they can’t hire enough Ruby people to do that. Actually, they didn’t really try too hard since that’d mean paying the new people a fair salary.
  4. Yet, somehow they put 6-20 people on projects and claim that these people are Rails experts with a high standard of quality. These people actually had two weeks of training.
  5. After each person has been on a project for a few months, they mysteriously get transitioned to another project, become “sick”, or generally leave.
  6. They are then replaced with someone else who’s training is limited.
  7. During their operations they seem to focus entirely on the process, but very little on the quality of the code. Sorry guys, but having a 1:4 code:test ratio is not focusing on code quality. It’s focusing on test quality.
  8. Finally, when your project is in the dumps and it takes months to get simple things done you realize that you’ve been paying ThoughtWorks a premium for what is effectively a bunch of total newbies who are only there for a few months before they roll off.
  9. You my friend got fucked in the ass. Congratulations because all the idiots who paid ThoughtWorks 6x times salary for junior ass wipes got taken and simply paid to train ThoughtWorks’ new crew."

And to prevent yourself from this consulting nightmare, some good tips. I can't argue with them, they are solid and should probably be used by anyone thinking of hiring a consulting company. Here they are:

"I have a few pieces of advice for people about to hire any company like ThoughtWorks. There’s just a few simple strategies you can follow to make sure you get the most out of them and get your money’s worth:

  1. Make sure you have the right to see every resume and interview each consultant they place. Treat them like new hires and don’t let anyone who’s not worth the rate you’re paying on the team.
  2. Demand a variable rate based on the position of the person and their experience.
  3. Demand that no employees can leave the project to work on another project. These placements have to be for the life of the project or until the employee quits.
  4. Require that you have the right to have someone replaced if they are not immediately capable. Part of what you’re paying is that a ThoughtWorker should be able to drop in commando style and just start working. The reality is they are usually totally lost anyway.
  5. Seriously consider recruiting one full time employee as a team lead, another as a project manager, and then staff the rest of your team with independent consultants. You’ll find that you get more control and better quality at a lower price."
Having never been a consultant, and been sheltered from dealing with consultants at any job that I have had over the course of my career, I think every single one of those tips can save your company money. These tips allow you to keep control of the entire project, provided that you have the resources to have a watch dog hound them. However, I have rosy glasses on and I am not experienced all in this field, so please forgive my ignorance if I think these ideas are pure genius.

The rest is just more of a loaded diatribe, unless your really into that. I am not kidding when I tell you this; it's a 20 page rant, 19 of which is about trashing the same people, just in different ways. I read it, I was entertained but not worth blogging about. You can go here and check it out, and I encourage you do so. Zed made some execellent points, and deserve props for those, even though he claims throughout he has no bridges to burn because none existed. Well, with posts like these, no bridges will ever exist for you my friend, because not everyone likes your abrasiveness as much as you do.

http://www.zedshaw.com/rants/rails_is_a_ghetto.html

1 comment:

Anonymous said...

He removed it for some reason or other. You can only find in http://web.archive.org/web/20080107085941/http://www.zedshaw.com/rants/rails_is_a_ghetto.html?
That is by far the best rant ever. He's one wounded dude. I'm totally on his side in everything he says. The rant has changed my view on a lot of things. I don't hold any respect for books that come from pagrammatic Dave and his agency after writing(according to zed) a shitty Ruby book. The part about him not having a job scared me a bit. This guy is a rockstar programmer and doesn't have a job?! What about an undergrad like me in a third world country? Damn. Come to think of it, the 400 restarts can't be possible. Nobody can stand that.