Is Ruby on Rails a Silver Bullet?

Scope for even greater gains?

This view of the situation begs an obvious question. Has Rails addressed all the accidental complexity inherent in web application development? Is there scope for even further gains?

To anyone involved in writing web applications “the hard way”, Rails can seem almost magical. But it certainly isn’t perfect.

To my mind, the single biggest element of accidental complexity remaining is the awkward flow of control in web applications. A traditional desktop application which wants to ask a user a question simply displays a dialog box and waits until the user is done. The flow of control is very simple and explicitly visible in the source code.

By contrast a web application has to save whatever state it needs, deliver a page containing a form to the user and relinquish control. At some point in the future the user may or may not submit the form at which point the application has to determine where it left off, reload all the state it previously saved and then continue. The flow of control for a single logical action ends up spread over several different pages and is very difficult to see in the code.

And it turns out that there are already people working on solving this problem through frameworks based on continuations. The best known of these is probably Seaside (written in Smalltalk). It is interesting to note, however, that although Ruby supports continuations at the moment it may not in the future.

Limitations of the Rails silver bullet?

An obvious corollary follows from the realization that Rails’ productivity gains come from the fact that it’s addressing the accidental difficulties associated with web application development. The productivity gains only apply to those aspects of your application which are affected by these accidental difficulties.

Here at 82ASK, for example, we make use of some pretty sophisticated Natural Language Processing and Machine Learning techniques to optimize operational efficiency and automate or semi-automate the question answering process. Rails can’t help us here, even though this functionality resides within a web application written in Rails. We have a complicated workflow which has taken us several years of experience to develop, and again Rails can’t help us with this. It’s complicated because the problem at hand is intrinsically complicated (although Rails can help us respond quickly when we have to and try several different potential UI solutions in order to determine the best approach).

Conclusion

Compared to traditional approaches to web application development, Rails delivers very significant productivity improvements. But these improvements can only be delivered in areas which have previously been plagued by accidental difficulties.

Ruby on Rails does not change the rules of the game. It might help you overcome some of the complexities of web application development, but it won’t help you with whatever are the fundamental complexities of the problem you’re trying to solve. They are still all yours!

Previous writings along a similar vein

Unsurprisingly, others have written about Rails and No Silver Bullet. You may find the following interesting counterpoints:

Pages: 1 2 3

6 Responses to “Is Ruby on Rails a Silver Bullet?”


  1. 1 ilan berci April 5, 2007 at 3:43 pm

    Simply fantastic artile, (I especially appreciate all the links to the referenced articles!) I agree with you a 100% in the fact that rails provides benefit by simply addressing accidental difficulties but that is what they stated from the very start (as long as you stay on the path and follow their sensical conventions).

    Likewise, it obviously won’t improve efficiency in addressing your bussiness model (which framework does) and never make such claims. You need Ruby for that! 🙂

    Thank you for taking the time to write this, I will forward it to my development group.

    ilan

  2. 2 jerzy prekurat April 5, 2007 at 9:02 pm

    My initial lack of enthusiasm towards RoR was based exactly on “No Silver Bullet” way of thinking: tools do not address essential difficulties of the problem, most tools address accidental difficulties well enough, so what is the big deal ? YAT, YAT, YAT… (yet another tool)

    Well, there is something: it works….

    I think this article comes long way towards answering – why it works and where it works. Thanks !

    jerzy

  3. 3 Bruce Tate April 6, 2007 at 2:20 pm

    Fantastic article. You have said it better than I. I’ve since taken a CTO role at a company called WellGood, LLC, the makers of ChangingThePresent.org. We’ve come to understand that Rails can make a dramatic difference in our overall productivity. It can’t improve our business processes.

    Said another way, if technology is your bottleneck, Rails will rock your world. In this spirit, Rails has been very good to us. It’s very close to a silver bullet in that sense. We’re simply applying a more appropriate technology to the task at hand.

    But technology usually isn’t the bottleneck. So in some cases, we make bad decisions, and actually dig a hole faster than before. All in all, we’re good enough from a process perspective, and we have a close enough problem to the ideal Rails niche, that we’re able to be very productive.

  4. 4 John May 27, 2007 at 3:38 pm

    Nice article. One word: WebObjects. If you know this Rails is “meh”, if you don’t Rails is GOD!

  5. 5 Sam Halliday August 14, 2007 at 8:07 am

    It’s interesting to note that Bruce Tate and Justin Gehtland wrote an app in 4 months in Java, then ported to Ruby in four days. Note that I said “ported” not “wrote”. After 4 months of discovering the architectural bugs and learning the traps and pitfalls of a program… rewriting it should be a breeze! Still, 4 nights is bloody fast.


  1. 1 There might just be a Silver Bullet « 3Spoken Trackback on April 10, 2007 at 7:02 am

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s





%d bloggers like this: