Ruby on Rails has quickly become the default web app development framework among the “hacker” and startup community since first releasing in 2004. Why? Because Rails was designed from the ground-up with programmer productivity in mind. It uses a variant of the Model/View/Controller architecture pattern to organize application programming. In addition to the MVC-based arch, Rails strongly emphasizes convention over configuration (CoC) and the rapid development principle of Don’t Repeat Yourself (DRY). It is these three elements — MVC, CoC and DRY — that make Rails such a productive web app development framework. However, Rails offers another productivity bonus by default: since it was built using the dynamic Ruby programming language, developers don’t get bogged down in all the overheard that goes with statically-typed languages such as Java.
Some of the largest online brands were built using Rails, including Github, Groupon, and Basecamp. So why isn’t the government using Rails as a web application development framework? After all, Rails is ideal for realizing the full benefits of agile application development.
Part of the adoption issue is that Rails hasn’t been perceived as “enterprise safe” to-date. The fact is Rails has great built-in security and solutions for protecting passwords and data. Perhaps the real anchor is that there simply isn’t as large as resource pool as there is for Java or .NET programmers. As John Topley notes in this Q&A thread:
“There’s no doubt that right now Ruby is still seen as a somewhat exotic language and the availability of skilled Ruby programmers reflects this. Technically, Ruby is more sophisticated than Java or C#, being closer to Smalltalk in terms of OO purity and closer to LISP in terms of meta-programming facilities. Suffice to say, companies are going to find it easier to get Java or .NET programmers for a low rate from body shops, than they are Ruby programmers. That’s not to insult Java or .NET programmers, rather it’s a reflection of the fact that there are many employers who still regard software development as something to be done by the cheapest bidder, rather than something that should be done right. Java and .NET programmers are pretty much a commodity now, so can be offered for less cost.”
Having extensive experience with Rails myself, I might argue that it would take far less time to develop a comparable app in Rails / Ruby than it would Java or .NET, so the higher priced resources would be justified.
What are your thoughts on the government’s adoption of Ruby on Rails? Should it accelerate? Or proceed cautiously? What government applications that you’re aware of have been built using Rails?
I like Ruby on Rails but I see two reasons why it doesn’t share greater adoption:
1) RoR out of the box makes plain HTML pages. RoR’s strength is in the backend processing and it really shines there. I did play around with RoR back 2007 when you could pair it with Adobe Flex to make some beautiful interfaces but I haven’t seen much activity since then.
2) Learning curve just scares off all but the hardcore programmer. Just look at the three terms you use to explain the benefits of RoR: CoC, DRY, and MVC. Ask your typical user what any of those mean and, more importantly, why are they important. Those are important concepts to the developer but the average user doesn’t really see the benefits other than their applications run well. If you stopped me and asked me for the specifications of my car engine, it will be a short conversation. All I know is that I like Honda engines because the car runs well.
You are right that MVC, CoC, and DRY are important. That’s why I am spending some time in the next few months catching up on CoffeScript, Backbone.js, and Node.js. I like that folks are trying bring the advantages of MVC to Javascript development.
Thanks for the comment, Bill. I tend to agree on the learning curve. Rails and its meta-programming usage abstracts a lot of what’s going on with the app. To the new Rails developer, it all seems like magic and difficult to understand.
I’m not sure I’d say Ruby is any more popular in start-ups than other languages. (Python is used by EventBrite, Google, DropBox, and several others – see some here: http://www.quora.com/Which-Y-Combinator-startups-use-Python )
Ruby’s MVC approach is unique. I haven’t played around with Ruby much myself, but I’ve seen others comment in the Twitterverse and Blogosphere that it’s not as TDD friendly as other languages.
I actually think a better way of thinking on this is not what specific language is better or not, but the fact that interpreted languages (Python, Ruby, Scala, and JavaScript) are gaining mindshare over compiled languages. They offer faster feedback…
Cheers,
Paul
Paul, you’re right that Python is certainly popular. As far as TDD in Ruby, RSpec + Capybara are fantastic libraries for that. The Ruby / Rails community is pretty obsessed with TDD. It seems that pure JavaScript frameworks, for both the front-end and back-end, are gaining momentum. Meteor looks very promising.
There’s no reason why Government shouldn’t enjoy the advantages that give fast-moving startups competitive advantage. As federal development shops adopt modern practices such as CI, automated functional testing, and continuous delivery, they’ll find that full-stack web frameworks like Rails can get you there much faster.
Paul, TDD, BDD, and ATDD are *huge* in the Ruby community. Tools like Cucumber and Watir came from the Ruby community. With all the testing focus and tools available, Ruby is the most TDD-friendly language I know.
Agreed that the four languages you mention are the big ones for startups these days, and largely because of the frameworks: Rails, Django, Lift, and Node.
Great comment Mark. You’re absolutely right about Ruby / Rails community being so TDD-focused.
And, Mark, you’re also correct on the benefits that government would realize by leveraging the same frameworks that startups employ. Sure, Rails might not be appropriate for every app, but if you want speed, you can’t get any faster.