It is interesting to note the buzz around Ruby on Rails (RoR) in the last few months. Basically RoR advocates are selling you a 10x productivity and so much things that we wonder if it will not cure the world from paludism, hunger, poverty and CO2 emission in its 2.0 release .
I have been looking at Ruby very passively in 2001, played a bit with it, did some sample scripts to process data as an exercise, but nothing serious. No one was using it anyway, and asking to install it on server was like asking to install Microsoft Word on a production server.
When RoR started to make some buzz with the video, like everybody I took a look at the framework and this looked a bit wizardesque to me. Very cool, very slick, but this was ringing a bell…like what happens if your application and your database does not really match the RoR way of doing things. Are you spending like 10 days trying to figure how to do it ? Ok, you’ve got a great mailing list but…
Following Pareto rules, you obviouslly spend normally 80-90% of your time in 20-10% of your application. I think that any developper has his own experience spending several days trying to fix a one-line bug in any language and can recognize what happens when you come across unmaintainable code. You’re literally spending ages looking at things because it is unreadable and logic is spreaded everywhere. Does the language helps you dealing with this ? Bad PHP code is to me more vicious than bad Java code. As for bad Ruby code, well, I honestly don’t know, but the syntax flexibility is not necessarily a good thing and can be a productivity killer in the long run if things can be made in so many ways.
There are more and more feedbacks from people having a look at RoR and noticing that some things are really annoying. It’s a good thing because it goes beyond the hype that says that Ruby is cool because it is the language of choice of Andrew Hunt and David Thomas (from which I have utter respect because I have been reading Pragmatic Programmer back in 2000 and really loved the book) , or Ruby is cool because children love it. And children are having so much fun with it that it must be a killer language.
Well, I remember programming some BASIC at home and at school back between 1984 and 1989 with a Commodore VIC 20, an Amstrad CPC-464, a Sinclair ZX-81 and some Bull Micral PC Clone with MS-DOS and I don’t think that BASIC is seen today as the language of choice by famous people but rather the result of a easily accessible language that we know is productive (Visual BASIC) but a sure example of unmaintainable code in the long run…assuming there is a need to maintain it. A quick badly developped and non-usable app. can easily last a dozen years as can be seen in most cashier computers, still today. I have also seen the application (Delphi) used by most real estate agencies in France, and it really is not a prime example of a professional application. Usability is terrible and staff use 5% of the features because it is just so bad.
Ruby might be a nice language but I think the buzz around is mostly related to the need of doing something else. Most of us in software development like new challenges and are very curious and do like new shiny toys. Also, if you are a well-known consultant and wrote some books about…say Java, EJBs, J2EE and co, it could make sense to throw the baby out with the bath water and publish articles and books about Ruby…on Rails or not. You stand out from the crowd immediately when writing such book, you’re focusing attention. Everybody’s wondering mmmm there must be something. You won’t have that if you’re writing another book on say…EJB3 and Java EE, it will mostly be a rehash on what has been written in the last years, and, there are so many available on the Java topic. Writing about Ruby is a good marketing strategy to me.
There’s also a lock-in strategy in some way. While for customers, they mostly care about having the job done, some put a particular condition of the technical limits. For instance I have seen some customers explicitely requesting J2EE development without EJBs. Some people do care about what they would be able to do with it and the skills required to maintain the delivered application. As of today, deciding to go the Ruby way, is mostly a guarantee to have exclusive rights for maintenance and support. Your customer will simply have a very hard time looking somewhere else if you’re hit by a bus. From a consultant perspective, it’s a very good thing, from the customer, not really.
That said, yesterday, I had the idea of developping a small in-house application which could be a nice way to use Ruby on Rails without killing anyone in the process. It won’t be maintained by anyone but me and not used by anyone but me. It’s not wasted time anyway, you always learn something from trying new things and how things are done somewhere else. That’s cross-fertilization of ideas… that’s also the essence of opensource.
update: Fixed the first name of Andrew Hunt, I was a bit too focused on David