1. It is open source
Open source projects are just inherently awesome.
Get a strange error that does not include a code line of yours? Want to know how things really work from behind? Want to improve your programming skills?
All of these may be achieved by just going through the source code on Github.
I know – it is just awesome.
Open source comes with a responsibility though: if something breaks down there’s no one to complain to, you must dig inside and handle it yourself.
2. Its fluid code
RoR is well-known for its idiomatic code style, which I sometimes call “English with underscores instead of spaces”.
This is thanks to the Ruby language itself, which the platform relies on, and to the RoR infrastructure which produced a great platform to work with.
When you develop with RoR you can achieve such levels of code-readability,
that you can just look over and over again on the same block of code and have two thoughts in your head:
1. The future is here – computers understand natural language and even interpret them into CPU commands.
2. I’m so proud of myself for producing this beautiful block of code.
Now I know, some people will say that code readability depends on the developer and I fully agree with this statement, but the fact is that same-level developers will produce a code in Ruby/RoR that is more fluid and readable than in any other programming language/platform.
3. CoC – Convention Over Configuration
RoR is one of the most convention-driven platforms on earth. Once you get into the RoR state of mind, development becomes very rapid since RoR conventions do most of the infrastructure work for you.
If it is model creation, database migrations, routing or controllers – the trivial code is given with a single line of command in the terminal.
This would not have been possible without strong conventions which allow RoR to make a lot of assumptions on your code, and generate a lot of it for you as a skeleton to work with.
CoC also has a downside: It makes the learning curve for RoR a bit steep, and it is a lot harder for inexperienced RoR developers to go against the stream (conventions).
RoR beginners often find themselves “struggling” against RoR to do something, just because they don’t know how it was “meant to be done” in RoR.
Once you get some experience though, nothing can stop you.
4. Its expressiveness
When I say expressiveness I mean the ability to achieve the same goals using different ways.
I wanted to put the expressiveness bullet right after the CoC bullet to make a very important point clear:
Although RoR is convention-driven, if you know the platform well, you can go crazy and do whatever you like with it!
RoR supplies you with a great MVC playground to work with, and for every purpose there is always more than one way to achieve it.
Some of the ways might go along with the conventions of RoR and some might fit how you, as a programmer, think things should be done, and go against them. The important thing is that they are all feasible and doable.
5. It promotes testing and TDD
What else could be said about the importance of testing in a development process?
My first reaction to TDD was antagonism – it felt redundant and artificial.
After trying TDD for some time I can’t think of programming without it.
Testing gives you confidence in your code, allows you to improve and refactor it securely, makes a new programmer get into the code more rapidly,
makes your code reusable, modular, readable, maintainable and a 1000 other adjectives which describe a healthy code.
RoR prominently promotes testing: Almost every generator produces tests with it.
Every plugin or expansion (called gems) comes with test helpers which allow you to test them in the context of your system.
There are numerous gems that their whole purpose is just to make testing easier, faster and more efficient.
Even the test directory in the app root is always there as a reminder and makes you feel bad for every un-tested code you write.
6. The community
Ruby and RoR have great world-wide communities.
I can’t point my finger on what exactly makes this language/platform so social, but I guess it has some magic.
The amount of gems the community creates is enormous.
You can find a gem for almost every purpose you’d think of, and if you couldn’t find one, it is a great opportunity to contribute and publish one.
RoR forums are full of people sharing and helping each other.
There are so many little secrets and tricks in RoR and even after years of RoR programming you keep learning new stuff about it.
This makes helping a lot easier since even a beginner may know a trick that an intermediate doesn’t.
7. It is fun
I have always loved programming.
I’ve been programming in different platforms and languages since my youth:
If it was at school, a university course, a side-project of mine or at work.
But never in my life I have been so intrigued and fascinated by it like I am today, programming with RoR.