
One of my recent development experiences sums up the power of Ruby on Rails.
After a year of using Ruby on Rails for a variety of projects, I recently provided a client with a Web based solution in an unbelievable four hours.
I had been consulting for a logistics and transportation company operating in fairly inaccessible regions of Central Asia when I was given the task of identifying inefficient aspects of the company workflow, and then developing a solution to attain greater efficiency based on my study.
I was quickly able to identify three main areas where greater efficiency and integrity could be realized within the company’s workflow:
- Vehicle dispatching, logging and tracking
- Daily, weekly and monthly reporting
- Client communication
Anyone who has ever operated a business in remote parts of Central Asia is aware of the numerous logistic hurdles beyond the ordinary challenges faced by most businesses day to day. It is especially challenging to operate a transportation company in parts of Central Asia with a history of conflict, due to the problematic state of the roads and unique security issues. Within this environment the company desperately needed to upgrade their existing system and workflow, and had little time to do so. Therefore the time frame allowed for getting “product to market” was extremely short.
After making an initial assessment of the company’s capabilities and needs, I determined that a database driven secure Web application with online and off-line functionality would be the required solution to the company’s many challenges.
I made my decision based on three factors:
- The company was rapidly becoming decentralized and the company needed to move away from a single dispatcher based system.
- As a result of becoming decentralized, the company also required a system which was secure, ensuring the personal safety of both customers and drivers alike. Allowing only authorized employees access to travel records was a top priority.
- While Internet connectivity is reliable at the company’s offices (due to being satellite based), electricity is not. Internet connectivity therefore could not be guaranteed at an uptime of 99% or greater without the use of costly batteries, and because of that factor, offline execution was a main requirement for the new application.
I decided upon a new approach to my first meeting with the client since I had very little time to assess their needs and devise a solution: I decided to build the Web application *during* the initial brainstorming session itself. Over the course of a four hour meeting at the client’s office I developed a Web application on a Macintosh laptop running Ruby on Rails with ActiveScaffold, MySQL and Google Gears (for offline capability). The results were astonishing. By the end of the meeting we had a complete Web application installed on a production server ready to use with their day to day operations.
What made the blistering speed of development possible was mostly due to ActiveScaffold, a Rails plugin that I will write more about in future posts. Rails by it’s nature is already extremely fast and efficient for the type of development this project called for, however I would estimate that by using ActiveScaffold the development time was cut by an additional 90% compared to if I had built the application without ActiveScaffold.
Simply put, the power of Ruby on Rails.





i don’t know much about rails — or real programming for that matter — but what’s your take on zeb shaw’s rant about the wackness of the rails community?
Ah yes, I read this post a few weeks ago.
To begin with I can only speak about developing Web applications of limited scope. The example I cite in my post will never need to scale to the point of accommodating hundreds of users, let alone millions. In fact the user base will most likely not exceed 100 users in the next 5 years! Additionally, this is a very lightweight application that pushes a few bytes to and from the server in any given hour… very low activity, so immediately I’m talking about a very specific type of Web solution where many of the concerns Zed’s talking about don’t apply.
One might look at this reasoning and say that I’m completely off the mark, and that any application might need to scale up dramatically if the company begins to grow at an unexpectedly fast pace. Well, after 17 years of being in this business I can say that this is not true. Some businesses scale up exponentially, some try, and others are simply not that type of business and instead see a slow and steady increase in their dependency in Web technology. Most of my past clients have been small and mid-sized companies that require modest Web solutions up front and then small incremental development in the first few years of operation, and it’s usually easy to identify which category a company falls into. Typically I begin by looking at the company’s history of growth, their projections, their market, and I’m usually able to grasp where they stand in terms of Web technology needs. Believe it or not, I have more than one client still as reliant on fax machines for client communication as they are on the Web.
Zed is arguing from the standpoint of an engineer who is concerned with building enterprise level applications and the deep engineering that goes along with that goal - and that’s exactly the stance I would expect someone on his level to be arguing. I’m sure he’s a sick programmer. Having “created Mongrel” on your list of personal achievements means you are more than qualified to make the rant he made and have it mean something.
But now on to why ROR is an extremely powerful tool for someone like myself…
First, I’m defining the power of Ruby on Rails based not solely from a technical standpoint. Rather I’m basing my opinion from a business standpoint, creative standpoint and technical standpoint, giving equal weight to each respective view.
From the business standpoint, my margins on labor for this project were 25x what they would have been if I had used another technology (and had to create the various UI features that come built to Rails and ActiveScaffold for example).
When I say 25x, I’m speaking in literal terms. No joke. I completed the development part of the contract in four hours, where previously without ROR and ActiveScaffold it might have taken 100 hours.
I don’t need an MBA to understand that Rails was the best choice for this type of project.
And then we get into the bigger, long term picture… I’m in the process of turning an offshore company on to ROR. What happens once my team of programmers who work twice as hard as their Western counterparts, demand only a third of the compensation (and as a bonus have advanced degrees like Ph.D.s in mathematics) achieve expertise in ROR? My shabby 25x begins to look like 250x perhaps? Either way I think we’ll begin to see a real shake up in the Web development world. The impact of Rails cannot be taken lightly or written off at this point.
Second, having so much of the development process made painless allows one to brainstorm on the creative side of the project. Admittedly, this was not a project that required a great deal of creativity, but there was a huge window of time allowed for the creative process since the time required to implement the concept was so short. For future projects I know this will be a huge advantage over other Web development technologies.
And then there is the topic of building prototypes. ROR is a sick tool for creating prototypes. The key point in my post was the ability to “build-while-brainstorming”. Had I not needed to actually launch the application by the end of the meeting, and instead was only building a prototype, I could have been even more liberal with experimentation. This is where things get very interesting. In nearly the time it takes me to *think* of a new feature for a Web site or application, I can prototype it, and immediately put it in the hands of a client to play with.
Bruce Tate often speaks about the “ah-ha” moment everyone experiences when beginning to use Rails. For me that moment came the first day I used it, prototyping a feature for an existing Web site. In fact I almost fell off of my chair when the feature was complete *before I even knew it was complete* (I kept saying to myself, “that can’t be all the code required to make this prototype functional”… but sure enough it was).
Third, while I can’t debate any of his technical claims since I hire an engineer to maintain the servers running my Rails apps, and understand very little about what happens under the hood (with this project for example all I needed to know was front-end languages and a modest understanding of the ROR framework), I can only say that my engineer achieves his promised 99%+ uptime (without using Mongrel by the way). I don’t know how he does it, but he does it. So I have to believe that the many issues you hear about that come along with Rails can be resolved, even with enterprise level applications. And in fact I was priviledged to sit down with some ROR industry experts this past year and get an overview on how they build enterprise level applications. All I can say is their apps work and rarely crash. So that tells me I cannot write off Rails, and that things will only get better.
I have to say two things about the tone of Zed’s rant. First, I find it quite refreshing. How many people in the tech world will actually speak their mind and not be afraid to have their name attached to unpopular opinions or manners of speaking. There are plenty of people like the one he describes who will shoot their mouth off online but in person are spineless and remain silent when you meet them. I get the feeling Zed is one of the few who walks the walk, and is the same in person as he is online.
He speaks more like an artist than a technologist. Do you think anyone at Microsoft or Sun would have the guts to make a post like this? Let alone respond to it… or even read it (since this post might not even accessible from behind most corporate firewalls due to the use of profanity). Or how about those in the Open Source world? Funny how “Open Source” usually doesn’t translate into “open opinions” and free expression in the public forum. That’s why I loved “My Tongue-Lashing from Eben Moglen” last year, a video of Tim O’Reilly being slammed in front of an audience at OSCON 2007. And I do give credit to Tim O’Reilly. How many CEOs would post something like this on their blog? Anyway, I’m straying, so I’ll leave more on that topic for later.
Back to Zed…
It’s a shame someone like this as had such bad luck on the business end of things.
I’d like to meet Zed someday.
If he pressed me on my opinion of Rails (provided he didn’t think it was beneath him to speak with me), my argument would be simple (and it wouldn’t even be a tech focused argument).
The first thing I would say to Zed is: “In less than the time it took you to negotiate that NYC deal that you ended up *not* getting paid on, I completed my Rails project, got paid and spent the 96 hours I saved using Rails on a white sandy beach drinking coconuts, getting massaged and tinkering with whatever technology I felt like at any given hour.”
The second thing I would say is “I know the value of a great programmer like yourself. I *always* pay well and on time. Let’s talk.”
well, that clears that up. thanks.