Blogger.create { :name =>'Matt Aimonetti',
:location => 'San Diego, Ca',
:email => mattaimonetti AT gmail.com,
:linkedin => Matt's Linkedin page,
:recommend_me => HERE,
:contractor => true}

Ruby developers don't scale

Written by matt on August 27th, 2008

Wow, it's been a while since I blogged. With all the cool kids saying that spending time reading RSS feeds is overrated (see Defunkt's keynote for instance) I even wonder if people will ever read this post!

Anyways, I have been quite busy preparing courses for classes I gave to a bunch a great Engineers at one of the Fortune 100 companies based in San Diego. I was also planning my big vacation trip to Europe and wrapping up few projects.

However, during my exile overseas, I came to the conclusion that Rubyists don't scale. Since Twitter became stable again, we don't hear many people ranting about Rails not scaling anymore. With one of my clients' app handling around 7 million requests/day I can tell you Ruby/Merb do scale quite well! But ruby developers don't seem to scale for some reason.

Maybe saying that we(Rubyists) don't scale isn't technically correct but that's basically what one of my client told me.

Let's go back in time a little bit and follow my client who we will call clientX.

  • ClientX has a great concept and wants to conquer the internet.
  • ClientX hears that Rails is the way to go.
  • ClientX hires a contractor/mercenary/freelancer/guns for hire/consultant (aka Me)
  • Me builds a killer app using Merb (killing framework)

  • ClientX raises loads of $$$

  • ClientX wants to hire a team because Me doesn't want to become a FTE

  • ClientX and Me look for Rubyists wanting to relocate and get a decent salary
  • ClientX *can't find someone they consider good enough and who would accept their package

  • Many JAVA guys are available on location and accept lower packages

  • Ruby app gets ported over to JAVA
  • Me sad :(

So is it really the Rubyists' fault if we don't want to relocate and only accept higher packages? Should I blame Obie for telling people to charge more and teaching how to hustle? Or should we just tell clients that it's time to get used to working remotely?

Honestly, I don't think any of the above explanations are valid. Ruby is the new/hot technology and very few people have the skills and experience to lead major projects. These people make a good living and enjoy their "freedom" and dream of building their own products. Most of them/us value their work environment, family and are reluctant to move.

scale

At the same time, companies do need people locally(at least a core team) and can't always afford the cool kids.

ClientX, quite frustrated by the whole hiring process told me once: "you Ruby folks are too unavailable and difficult to work with! We need a committed team that actually cares about the company/product."

That hurts when you worked hard on a project and just can't satisfy the client by finding guys willing to relocate and work for them. It gets even more painful when your code gets entirely ported over to JAVA!

But at the same time I understand ClientX's motivation, PHP guys are cheaper, JAVA guys are more available, why in the word did we go with Ruby and are now struggling finding people?

Once again, there is positive and negative side in everything, by choosing Ruby and a "great contractor" ClientX was able to catch up with the competition and even pass them in no time. They quickly raised good money and got everything they needed to become #1. I don't believe it would have been possible to do the same thing so quickly with JAVA for instance. However choosing a cutting edge technology means you need to look harder for talented people.

It's too bad the code gets rewritten in a different language but at the same time, I do my best to facilitate the process and to keep a good relation with my client. There was nothing personal in the decision, it's just too bad we were not able to keep on using the latest/coolest/awesomess technology available :)

To finish on a positive note, here is the solution to scale your Ruby task force provided to you by the #caboose wisdom:

Based on my conversations with other #caboosers who hire other devs, the word in the street is that you just need to get one or two great ruby guys (who will probably cost you a lot) and find a bunch of smart people to train. You'll end up with an awesome team of scalable rubyists ;)



Comments

  • Sean on 27 Aug 09:16

    I have 5 Ruby-only developers working on my team. Our project doesn't have anything to do with web development, and we've "scaled" quite well.

  • web design company on 27 Aug 09:28

    Maybe companies should stop being cheap and should start ponying up the dough required to land real Ruby talent and of course this can be generalized: "Maybe companies should stop being cheap and should start ponying up the dough required to land real talent"

  • Glenn on 27 Aug 10:15

    I've worked on quite a number .Net, Rails, and Java projects over my career, having to project manager a few hundred of them before ruby convinced me to go back to coding. I can categorically say that every ruby project bar one has worked out significantly cheaper than the equivalent would have in any other framework I've used, based on my experience.

    I don't think it necessarily has anything to do with the language per se, but more so the type of developers it attracts. Any project that has run over budget and schedule has been because we've ended up developing far beyond scope, and in all instances gone live with production ready code long before any gantt chart suggested we had to.

    So I'd say Obie is right. You need to be persuasive enough to convince your client that one of the most important parts of the project is finding the right group of people. If you'd rather save money by hiring cheap developers, I'd rather not be working on it... or certainly wouldn't want my name associated with the end result.

    What is it they say about monkeys writing Shakespeare?

  • masukomi on 27 Aug 10:36

    The problem you describe has nothing to do with scalability. The problem is AVAILability.

    Ruby developers probably scale just as well as developers for any other language. In many cases I think Ruby lets you get more done from the same developer, but there just aren't many of us. Also, your client's statement that "you Ruby folks are too unavailable and difficult to work with! We need a committed team that actually cares about the company/product." is ludicrous when discussing hiring people. A) you don't know if someone is difficult to work with until you're working with them B) you can't hire someone that's committed to your company / product. You build commitment after hiring. He's correct about availability though.

    In short, this just boils down to the economics of supply and demand, and right now there's very little supply. Also, in my experience, most developers don't want to uproot themselves and move to a different state for a new job regardless of what language they develop in.

  • Ugly American on 27 Aug 10:37

    If the client had a clue they'd look at how many Java projects go over budget and behind schedule.

    It doesn't matter how many people you hire that can't even read the instructions, quantity is not equal to quality.

  • Anthony Broad-Crawford on 27 Aug 11:45

    Did you try any local Ruby or Ruby on Rails user groups? Meetup.com has one in almost every major city. We have scaled from three developers to eight developers in a Rails development shop. We leverage the meetup groups heavily, and most of our candidates come from their. However, our Meetup group has roughly sixty people in it. So we can be picky and choosy in regards to who we bring in.

  • Mike on 27 Aug 12:05

    How high was salaries for Ruby FTEs?

  • Joe Grossberg on 27 Aug 12:18

    You also seem to overlook the fact that the lion's share of today's Ruby developers were PHP or Java developers a few years ago. So hire the smartest PHP or Java guys. Have them learn Ruby.

    And I question your decision to go with Merb (not even Rails?). That framework embodies a lot of good ideas, but writing someone's app in a framework that is at the 0.9 stage, is lacking lots of features (moreso in DataMapper than Merb itself) and is (justifiably) breaking backwards-compatibility all the time is bordering on irresponsible.

  • Hates_ on 27 Aug 12:27

    There is always Grails for those projects that have to be Java. A slightly less painful alternative at least.

  • Matt Aimonetti on 27 Aug 12:45

    @sean glad to hear you had a good experience, I'm sure loads of people do "scale" well, for instance integrum is doing very good with most employees who learned Ruby when they joined the company. But even people like Hashrocket have a hard time finding people sometimes.

    @Glenn & @masukomi I totally agree with you.

    @Ugly American true, at the same time, talented JAVA developers will be able to catch up and keep the project running. I'm not too worried about that. (I would have preferred them to keep on working on the Ruby code tho)

    @Anthony Broad-Crawford I did, I'm actually very involved in the San Diego Ruby Group. But for some reason it was harder to find people in my client's area. Also, they wanted a "Ruby Rock Star" to lead the group. Good comment for people trying to add more staff to their own team tho!

    @Joe Grossberg I agree about hiring JAVA/Python guys. However a company needs a strong developer and they couldn't find/afford one.

    Regarding Merb, it's an interesting story, we started with Rails but had to switch to Merb mainly for performance and flexibility reasons. Being myself an active the Merb contributor and knowing quite well both framework, the choice was obvious (I have an older post covering the speed difference for this app)

    @Hates_ Grails is quite interesting, but if you are a JAVA developer and you love your environment, I can see that you don't want to switch. Also, if you are willing to port an app to Grails, you're almost better off leaving it in Ruby :p

  • Toonces on 27 Aug 13:25

    @Sean: What does your team develop?

    @Matt: It's Java, not JAVA.

  • Thomas on 27 Aug 13:32

    Would you care to name the site running on Merb that handles seven million requests daily? Without a citation, that's hogwash.

  • Matt Aimonetti on 27 Aug 14:00

    @Thomas I wish I could but I'm under NDA. You can ask Engine Yard they host the sites and few other Merb apps, they'll tell you.

  • Anthony Green on 27 Aug 23:50

    *ClientX has a great concept and wants to conquer the internet. *ClientX hires a contractor/mercenary/freelancer/guns for hire/consultant (aka Me) *ClientX raises loads of $$$

    As a developer I'd be worried how much this sounds like my experience with PHP 10 years ago in the .com bubble.

    *ClientX hears that Rails is the way to go.

    Now I'd be really worried, a client that chooses their technology based on buzz.

    *ClientX and Me look for Rubyists wanting to relocate and get a decent salary

    Depends what you consider decent having described a company that sounds like in might not be around tomorrow.

    *ClientX *can't find someone they consider good enough and who would accept their package

    You can't get good people on the cheap. You want to hire a couple of mentors and train the rest. Make sure you choose dedication as a quality too. I've worked with SE's who are talented in many ways but lack enthusiasm for Ruby and Rails, and therefore didn't take to it.

    *Many JAVA /PHP guys are available on location and accept lower packages

    So your client isn't looking for a technology that enables the team to be Agile ? They don't worry they could end up with unmaintainable spaghetti code ? Surely they'll have more problems trying to recruit genuine talent from Java or PHP because the ratio of volume to talent is so much higher ?

  • Jack Collier on 28 Aug 06:38

    Mirror Placement might be able to help your clients find ruby talent.

  • Cody Skidmore on 28 Aug 11:42

    I tried getting a full time gig as a Ruby developer for a while. I've been writing software for more than 17 years and know my way around.

    Companies shouldn't whine when they simply can't get Ruby developers. They're inducing their own problems. They want Ruby developers with at 2 years of professional experience and none are available. So somehow, you have to get professional experience without getting a job????

    That leaves most developers who like Ruby working on their own projects freelancing for themselves. By the time you succeed building your own project, you don't need a company to hire you.

    Adjust your strategy. If you'd like to hire Ruby developers, boot-strap your own team using local resources and get your project done. I'd take a good full time job with less compensation just to work on Ruby/Rails project but companies won't compromise.

  • Amos on 28 Aug 12:45

    I know the client in question here, and I have been advising him on what to do about his engineering predicament. I would say that he made the right choice, and this is coming from someone who only writes Ruby apps nowadays. He was unable to find local Ruby talent and found a bunch of guys willing and able to port a complex app to Java. He was just working with the resources available. Until Ruby crosses the chasm, Java or PHP talent will be much easier to find.

    But I would definitely agree with the last point about being able to train engineers to write Ruby once you have a good core team. He just wasn't able to build on top that base.

    @Thomas I can verify that this number is accurate.

  • Sam Smoot on 28 Aug 12:57

    @Cody: Get in touch. There are companies interested in people with your background. Including mine. Frankly, a sharp Java/.NET developer is almost preferred to me because there seem to be fewer people with a PHP background that could speak from experience on Dependency Injection, Separation of Concerns, Single Responsibility Principle, etc. Not that they don't exist, I'm just more in-tune with those communities as a former .NET person myself, so it's easier to evaluate from that perspective.

    To me, even if you might choose to violate some of the "rules" when working in Ruby, it's those concepts I'm looking for in a developer second only to a good work ethic (and I mean staying on-task, not long hours).

    It's just a personal belief of mine that developers who understand SoC write better code. So yeah. I'd take a "I just read Programming Ruby over the weekend" developer with a grounded background in practices I think are swell over someone with a few years of experience in Ruby but without that foundation any day.

  • Sean on 28 Aug 13:06

    @Toonces: My team does security and application traffic simulation in Ruby. It's accelerated to ridiculous speeds by our custom harware.

  • another ME on 28 Aug 13:43

    I am still trying to scale myself, but I agree with the get any good enough programmer and train him on Ruby

  • Ben Hughes on 28 Aug 15:49

    As a Ruby developer with an economics background, I don't really understand this whole notion of Ruby developers being too "expensive" and "unavailable". Since ultimately what matters is what gets produced, comparing the expense of developers really has nothing to do with salary and everything to do with salary divided by productivity. Given that, it could very well be that hiring a skilled Ruby developer at $200,000 is actually cheaper than hiring a PHP web monkey for $30,000 if that Ruby developer literally produces ten times more output per unit time than the PHP developer. This isn't to say this actually would happen in reality since there could be an equivalently-skilled developer willing to work for $140,000 (supply & demand), but the point regarding comparing just those two alternatives still stands.

    In general I think the labor market with respect to software development is pretty unbalanced anyways as the productivity differences among not only developers themselves but specific toolsets has a very high level of variance, I'd argue much more so than most other fields, yet "compensation" doesn't vary nearly as much. In other words I think people drastically underestimate the variance in 1) developer productivity and 2) toolset productivity and the necessary affects that has on the pay-productivity relationship.

  • Ben Hughes on 28 Aug 19:05

    You guys should really check out Jay Field's response to this, it's very well-put: http://blog.jayfields.com/2008/08/great-developers-are-hard-to-find.html

    Martin Fowler also eloquently lays out the productivity-cost relationship here: http://www.martinfowler.com/bliki/CheaperTalentHypothesis.html

  • Herb on 29 Aug 01:28

    From what I've heard, twitter has moved away most of their infrastructure from Rails, so it may not be the best example of Rails scaling...

  • Herb on 29 Aug 01:37

    I've been Googling around and I couldn't find any evidence to support my previous statement. I shouldn't spread unsubstantiated interweb rumours, I apologize for the previous post. :)

  • Gustavo Barrancos on 30 Aug 09:06

    Interesting... I've noted similar behavior (in a much smaller scale) with lisp developers across the years. Bill Clementson explains (http://bc.tech.coop/blog/060118.html)

    I rope that rubyists can break this tendency!

  • Matt Aimonetti on 30 Aug 15:08

    @Gustavo Really interesting article about Lisp and the way Yahoo and Sony decided to rewrite List apps after buying them. Hopefully Ruby will have more "traction" and a stronger crowd behind it to avoid these scenarios.

    @drnic had a good comment over at Jay Fields's blog when he's asking for a blog post about creating/training experts ;) I'm not sure we need many more experts but we certainly need to make our community grow and "steal" some experts from other languages :D

Comments are closed