ED: What has been the most surprising or gratifying use of Rails you've seen so far, outside of 37signals?
DHH: I've been very gratified by seeing the success of 43things.com. The Robot Co-op was perhaps the first "major" company that picked up Rails shortly after its release. They had a very inspiring motivation for their work: to help people reach their goals in life. How can you not just love that?
And it works! I landed my keynote speaking engagement at OSCON in part because Nat Torkington saw my list of goals and noted that I had "deliver a keynote on Rails to 500+ people" on there. He got in touch, and this August, I gave a keynote in front of the 2000 people at OSCON.
But in general, I've been extremely pleased to see the broad uptake of Rails happen so rapidly and that we know we have a real economic ecosystem revolving around the framework. On our list of people working professionally with Rails, we count more than 3000 people from over 40 different countries. I'm continuously floored by that.
ED: What's your favourite Rails feature?
DHH: In general, all the things it doesn't do. All the features we said no to. All the ornaments we turned down. All the 20% solutions that solve 80% of the problem.
More specifically, I really like our domain-specific languages. The beauty of specifying relationships with
belongs_to, has_one, has_many and
has_and_belongs_to_many. The ease of using validations like
On Programming Languages
ED: When I first saw Rails, I must admit that it being Ruby made me think twice. It's an unusual language. How did you first get into Ruby?
DHH: I got into Rails in the summer of 2003. 37signals was about to embark on the development of Basecamp—which would ultimately turn the company from a consulting firm to product development. We had been using PHP for years, and I had tried as hard as I could to arrive at a reusable framework that would make my life easier. And I actually had a very early and at least somewhat decent reminiscence of Rails running in PHP at the time, but I wasn't happy.
And it was one of those "love it or leave it" moments. I realize that if this was going to be my working life, developing web applications, I had to be using tools that I loved, not tools that I merely tolerated. So I was open for alternatives.
Then my influences conspired. I am a big fan of both the Pragmatic Programmers and Martin Fowler, and I was seeing Ruby popping up time and time again from both of these sides. And a friend of mine had given it a cursory overview and challenged my reasons for staying with PHP.
So for a short while, I went into apologetic mode and built up all the stable arguments for why to reject change. We wouldn't be able to find programmers knowing Ruby for 37signals, PHP probably had more and better libraries, and on it went. But that thankfully didn't last too long because I decided to actually give Ruby a try.
It took one day to say, "I really like this." It took one week to say, "I'm never going back to PHP again." And it took one month before my proficiency with Ruby made me run circles around my former programming capabilities in PHP. It was just such an incredibly powerful fit. Ruby fit my brain perfectly. I was having so much more fun and getting so much more done.
I realize that this makes PHP sound bad, but it's really not about that. I'm grateful for PHP. It got me started with programming because of its incredible immediacy. It served me very well for a long time. I just arrived at a place that was outside what I would consider the sweet spot for that language. And Ruby proved to be exactly what I needed to get into the sweet spot again.