Below is an email Q&A I had recently:
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.
I know u are a proponent of Ruby on Rails. What is the main thing about the Rail f/w that is so productive?
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.
a) Ruby the scripting language?
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.
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".
b) The framework (What part of it)
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.
Why no Java/.Net/C++/VB etc has copied it point for point then ?
hmm, don’t really understand. its for building general web apps.
c) The domain chosen?
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.
d) The philosophy ?
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.