Aside from “Do you offer night classes?”,”Why teach Ruby on Rails?” is the most common question we’ve received from Interface inquisitors. I thought I’d take a few minutes to answer in detail.
First, I’d like to emphasize that we aren’t setting out to teach Ruby on Rails. We are teaching web development. Right now we’re using Ruby and Rails (as well as a host of other tools) to do that.
We did choose these tools intentionally, though. Each of them has unique (and shared) strengths that I will highlight below.
Like all design efforts, designing a programming language is a series of difficult trade-offs. You have to decide early on which virtues to bestow upon your language and then compromise everywhere else to maintain those virtues.
Some languages place execution performance first. Others focus on cross-platform compilation. Some languages have seemingly no focus whatsoever, but I don’t want to pick on anybody, so I won’t mention PHP by name.
When designing Ruby, Yukihiro (“Matz”) Matsumoto chose to focus on programmer happiness. All of the design decisions centered around the question “How can Ruby make programmers happy?” (more on the Ruby philosophy)
What this focus resulted in was a language that programmers fell deeply in love with. They were so smitten, in fact, that many would go home from their full-time programming jobs and write Ruby programs on the nights and weekends.
Matz’s focus on programmer happiness also resulted in a language that looks a lot like English and lets you express yourself clearly and succinctly. This makes Ruby extremely effective for teaching, because the language’s syntax stays out of your way and is easy to read as well. As the late, great Jim Weirich mused:
The syntax of Ruby is so gentle that anyone blessed with the ability to string thoughts into logical order can produce working applications.
— Jim Weirich (@jimweirich) October 27, 2012
For example, think about how you would tell a computer to print each number from 1 to 10. I bet what you came up with isn’t too far from this:
1.upto(10) do |number| print number end
Ruby is such a great language for teaching that the community has created massively popular tools like KidsRuby.
Ruby became the darling of many disillusioned programmers on its own, but it didn’t hit the mainstream until 2004 when Ruby on Rails revolutionized web development.
Rails’ idea of convention over configuration coupled with Ruby’s malleability produced a productivity cocktail that the industry hadn’t seen previously (and arguably hasn’t seen since).
Suddenly, all of the boilerplate and bikeshedding that was required to make a web application melted away and developers were left with A) a language they loved, and B) nothing but their application to think about.
Rails quickly became the de facto web framework for startups of all sizes and has since made major in-roads in enterprise development. A huge side-benefit to the proliferation of production Rails applications in the wild is that the cost of adding (or switching) development teams is greatly reduced.
There are a few things that make Rails great for teaching web development:
- Conventions are easy to learn and make you productive more quickly.
- Rails embraces the web’s core technologies such as HTTP, which is what we’re really teaching.
- Rails extends Ruby to allow for even more expression.
Why not X?
I’m sure there are just as many reasons to teach web development with other technologies and I’m open to hear those arguments. I’m so open, in fact, that Interface has assembled an amazing team of Fellows to help guide our curriculum over time.
Our goal with Interface is to provide high quality, hands on, IRL training with industry experts in any/every domain that touches the web. This spring we’re teaching agile project management and web development with Ruby on Rails. Our offerings will grow and move as the web moves.
If you haven’t already, sign up for our mailing list to find out what new offerings are coming down the pike.