Below is an email Q&A I had recently:


I know u are a proponent of Ruby on Rails. What is the main thing about the Rail f/w that is so productive?


First thing, before the wrong foot etc.. this entry will clarify what i think Rails positioning is. So, the keywords i guess is: quick & agile.

a) Ruby the scripting language?


maybe its a the joy of learning a new language... but ruby is quite fun to code in, albeit the lack of code-completion editors (maybe not for long). but perhaps its b'cos i'd programmed without code-completion for the larger part so can still settle with that lack.

update: I'd forgotten to mention that I missed the power and ease of arrays in a scripting language (compared to Java or C), and also the code block syntax in Ruby is insanely cool even when compared to a beautiful language like Python.

b) The framework (What part of it)


I like that it comes with a pretty good ORM. Also, I only need to know very few conventions to get started. Yes these can be generalized into "small learning curve".

Why no Java/.Net/C++/VB etc has copied it point for point then ?


Regarding clones, there is: .Net, Java, Python, even PHP. But who's interested? - and that's actually quite important question: Can framework-X garner the same level of PR/momentum/growth? Clones are just pet projects out to prove X-can-also-do-Y. The original is currently used for bread-and-butter projects by DHH and co. So they're very actively on it, using it, etc. The original was extracted from a project, not written to a designed spec. Why not somebody invest to use those clones as bread-and-butter? Well, wouldn't that somebody rather use Rails instead? unless, of cos, they've an axe to grind against Rails.

c) The domain chosen?


hmm, don't really understand. its for building general web apps.

d) The philosophy ?


Probably. convention over configuration is probably the first breath of fresh air. i'd originally cited this as a "no xml config file nightmare" thing, but actually it runs deeper, especially parameters passed to-and-fro forms/post, database column naming, before_* after_* hooks (benefits from very primitive AOP), where the files are placed (easy to learn another app) etc.

When doing Rails, I feel as if somebody has felt the same pain as I and here are his consolidated solution for each and every problem, and I gratefully receive a solution for our lessons learnt.

Very little things - may be detrimental to cite this example and make it seem like child's play.. but I found myself smiling when I learnt this - like e.g. having an 'employee_counter' column in the "companies" table.. just having it and Rails will do the rest: e.g. +1 whenever a new "employees" record is inserted. very little things. update: also, a verbose error 500 page with stacktrace, session data, http parameters by default - but when in production mode, outside world sees 'friendly error page'.. but localhost still gives you the verbose errors to help debugging, how thoughtful!

And for the record, this is the blog entry that I stumbled upon Rails: Award for beautiful coding: David Heinemeier Hansson

update: I'd also forgotten to mention that I'd always preferred saving development time than saving runtime.