Ruby On Rails thoughts
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







The other point which isn’t mentioned is how much time you actually spend coding, compared to getting the requirements, thinking about the design, gossiping at the watercooler, and testing it.
So while rails might might the coding stage 10x faster, that might only make up 20-30% of your daily activities.
Comment by Ian Holsman — November 30, 2005 @ 5:42 am
Ian, I agree about time spent coding vs ‘thinking’ and ‘maturing’. I don’t know if there has been any survey about it, but as far as I know there are already easily a 10x difference productivity between people which greatly depends on experience about the domain.
Another point to consider is work environment. As we spend so much time ‘thinking’, we just need uninterrupted slots to be able to ‘get in the zone’ and code. In my previous company work environment was a disaster. You were spending your time moving between offices (I changed about 8 times in 18 months), people from executives, marketing, assistant, finance, engineers, project managers, passing by and asking you questions. I was able to calm down a bit the marketing and make them understand that engineers do need uninterrupted time, but could not get the executives to understand the difference between a manager making 10 different phone calls and an engineer working on 3 different software projects the same day.
There is so much to be done before thinking about language or framework productivity.
Comment by stephane — November 30, 2005 @ 1:58 pm
There is also another drawback about switching to a brand new language like Ruby or another framework like RoR : it has to have a full bunch of usable tools to be really usable.
What about an IDE? Is there an Eclipse plugin? Or an Idea plugin?
Do we have a debugger?
What about a code formater?
What about a profiler?
Is it easy to generate API documentation?
Those are really common needs, and they have to be addressed. It can takes time before you will get this 10x gain…
And another aspect is the existence of really good libraries. An object oriented language is as good as the libraries you can use.
Not to mention the talended developper base. It’s hard to create this shared knowledge with a brand new language, so claiming that coding with Ruby will bring a 10x gain is a little bit questionnable…
Of course, IMHO ! And I said the same thing about java, but it was back in 1996, until 2000.
Comment by Emmanuel Lécharny — December 1, 2005 @ 8:10 pm