One of the projects that i am working on is about to do a switch from a php platform to a Ruby on Rails custom platform. But wait, judging from my previous posts, am i not a Python guy? Don’t i love Django and heavily recommend it?
I sure am, and I sure do. And that will not change any time soon.
The decision for choosing Ruby on Rails was not a technical one. The other members of the team(2-3 people) are big RoR fans(in fact, i call them fan boys). And so i thought that it wouldn’t be wise to suggest anything else. Was this decision good or bad? Time will tell. And so will this blog, so stay tuned.
Anyway, so since having done many languages and many platforms over the years, i consider that i have reached some sort of language(platform)-agonistic maturity. I also consider that having several different technologies in your arsenal will definitely allow for more flexibility and power when attacking problems.
So, considering this as an experiment, i thought it would be useful to document my progress on this blog and by doing so also discuss the weaknesses and strength of Ruby on Rails. Ok, so here it goes.
The only exposure that i have of Ruby on Rails and even just Ruby as a language is what i read over the web and some slight interest when i was about to choose between Python and Ruby as my main language earlier last year. So i’ll try to list what i already believe to be true about the platform and as i go on with my education, i’ll look back and see what was true and what wasn’t.
– Ruby seems like en easy to learn language. A lot of the language syntax and Ruby-way-doing-things(yes, that’s one word) is meant as a productivity boost.
– Ruby is not a new language, it is as old as Python and Java.
– Python and Ruby have similar principles. The most interesting perhaps is that code should be easy to read and some would say beautiful to look at.(should be
true of any language, but depends on the programmer i guess)
– It was meant to solve a general problem and is not meant as an end-all-be-all type of solution.
– I come from a c background so i had trouble getting used to languages that don’t follow the C syntax(and its older parents). Earlier on in my career, i decided that i shouldn’t let something like different syntax stop me from learning what might be a truly great technology. I followed this approach with Python and was quite successful and will do the same with Ruby.
– I think that a lot of the features in Ruby 1.9 should really have been in earlier versions. I don’t know why is that the case though, maybe there’s a good reason.
– I don’t appreciate the Ruby community believing that the Ruby language is the best thing since sliced bread. It is possible that it is an excellent language but definitely not the answer to everything. Passion is always good, but zealotry is not. I believe that good programmers should choose the best tool for the job. I wouldn’t advocate Python for every kind of problem out there.
– Some of the fan boys mentioned above keep on talking about how great the Ruby and RoR community is. Might be, we’ll see. I find that the Python community is amazing. I also find that the free software community is incredible and and and….
– Some time ago, there was a big debate about the original Mongrel author and the RoR community. I read that with interest, though in all fairness, i find that what he said might apply to a lot of other communities as well.
– Scalability with RoR has always been an issue. I think this was made famous by twitter. I did read DHH’s response though, and i find that what he suggests are actually scalability advice that you can can apply everywhere. And so, i don’t believe that there’s any inherent problem with RoR itself.
– A lot of people also complain about some of the conventions used in RoR and how dreadful they are. That is somewhat scary, but then again, all frameworks have some of those. It would be possible to create a framework that doesn’t, but then it would be too complex to learn. A compromise is always needed. I don’t yet know enough to comment on this, I’ll report back.
– People always rave on about the great toolset that RoR has. In particular, capistrano and rake. I think those are definitely good tools but there are several different alternatives for different techs as well.
– I went with Django earlier last year because of the excellent way the framework developed. It has very good documentation and a healthy development environment. At the time, i couldn’t see that in RoR.
– RoR and consequently Ruby got its fame largely from the efforts of one company. 37Signals may be great, but i wouldn’t trust the development of a general purpose framework to one small company.
– Django seems like field-produced framework. Initially, it constituted the guts of a CMS and was later extracted and made in a general framework. I find that it particularly adept at solving problems that you would encounter when writing a data driven web application which a CMS is an extreme example of.
This is getting to be a long post, and i could probably go on. But i’ll spare the readers. One final comment though. One developer recently commented that “Ruby is glorious”. That kind of nonsense makes very angry because it tells me that this particular developer has not seen anything but Ruby and is inexperienced enough to make you afraid of working with him. You can substitute the word Ruby in that statement with any other language and the comment would still be valid. I try to stay away from discussions with such people because its a complete waste of my time.