Ruby On Rails Maybe God Sent

MON, 20 MAR 2006

Last weekend I decided to get my hands dirty on Ruy On Rails. I bought Agile Web Development with Rails book and got hooked immediately.

I studied Visual Basic during my Uni days, but fell in love with Java after my first job. And I’ve been faithful every since, Java has tought me the beauty of object oriented programming, design patterns and frameworks. But due to its flexibility and large number of open source projects. It prones to entangle developers into a mesh best practices to adopt.

For web framework itself, it ranges from request-based (Struts, Web Work, Spring MVC) to component based frameworks (JSF, Tapestry, Wicket), and the combination of both (Stripes) to full-stack framework like RIFE and Appfuse. I used Struts before and when I was looking for a better framework I have to read up JSF, Tapestry and Spring MVC. And I finally settled with Spring MVC, though each framework have its own good and bad points. How about persistence framework (Hibernate, EJB, JDO, iBATIS)?

Learning Ruby On Rails is a different experience, it felt  like sailing through a calm sea with warm sun light and breezy wind. Maybe my bakground in Java and web development industry helps. But it is also mainly due to Ruby’s main guiding principles,  “Don’t Repeat Yourself” and “Convention Over Configuration.” So things are laid for you, chosen and decided. No questions asked. The codes are short, clean, and there are lots of shortcuts. It may look weird at first, but you’ll get used to it.

Compared to Java, Ruby is still very young, but being young, it is able to learn from the mistakes made by its predecessors Java and other languages. And coming from different perspectives to improve developers productivity, and with higher customer expectation each day for each dollar spent, especially in Asia, Ruby may be God sent. I’ve yet to further explore Ruby and to complete the other half of the book; there could be some quirks, but I hope there won’t be many.

No Comments . Comments Feed . Trackback URI

Add Your Comment



(optional)