OK, we have had plenty of debate and hype about Ruby on Rails. It's time for IT executives and decision makers to say "Show me the money!" If Ruby on Rails is so fabulous, where are the on-time, under-budget projects?
So, here you go. For the past 18 months, we have been quietly bidding web projects with both Java and Ruby on Rails. The numbers for us, so far, fall out like this:
- For applications in the Rails sweet spot (CRUD+Ajax on the web) our Rails price tends to be 30-50% less than the same bid implemented in Java.
- For applications that are nowhere near the Rails sweet spot (do you know what these are?), our Rails price tends to be only 10% less than the same project implemented in Java
- Applications are completed twice as quickly in Rails.
- When customers want an hourly rate, our hourly rate for Rails work is slightly more than our hourly rate for Java work. However, given that applications are finished 30-50% faster, Ruby/Rails still delivers more per dollar.
This is not to say that the "10x productivity" claims of Rails developers are simply false. There are specific parts of Rails development that are indeed that much faster. But other parts are not, and the 10%-50% above is what we have seen on real projects over the past 18 months.
When 10% is Bigger than 50%
I actually find the 10% number to be the astonishing part of our experience so far. The 50% number sounds better up front, but basically amounts to the same claim that many other people have already made: Rails is extremely productive doing what it was designed to do. The 10% number suggests a much more compelling argument. "Ruby is more productive than Java, period. Even when Java libraries already exist to solve a problem, and you have to roll-your-own in Ruby, Ruby will come out ahead on sizable projects." It is this 10% edge that prompted me to write the Enterprise Hammer articles.
Given my ideas about why we are more productive in Ruby, I would expect Python or Smalltalk developers to have a similar edge. Anybody out there want to share some numbers?