July 02, 2010
When I decided to work on my own thing seriously, one of the first decisions I had to confront was “What should I write the darn thing in?” To cut to the chase, I ended up going with Ruby on Rails, and here’s why.
There was one thing though. Like I said, I’ve been writing .NET code for a while, and I realized that if I didn’t do something different, I’d just get burned out from programming in the same environment over and over. I’m already advising and contributing to another extra-curricular project that will be using ASP.NET MVC, and yet another .NET project would just be too much.
What else was there then? I wrote my photo blog in a Python framework called Pylons. I thought Pylons was alright, but the documentation left quite a bit to be desired. It was difficult to track down answers to questions, and just took too much time to really be productive.
There’s also Django, another popular Python framework. It has fantastic documentation, and a vibrant community. There’s a lot of stuff to like about it, so why didn’t I go with it? It wasn’t that I found fault with Django itself, just that I liked what I saw with Rails more.
Rails has been around since 2004, making it incredibly mature as far as web frameworks go. The documentation isn’t quite as good as Django’s, but still better than most things. The guides are especially good. But, perhaps the killer feature of Rails is the plugin model and library. If you need some piece of functionality, someone has probably already thought about it and written a gem for it.
From a productivity standpoint, I feel that even though I’ve only been using Rails for about 4 weeks, I’m already more adept at it than I am with Pylons, and I’ve used Pylons [off and on] for two years.
Nothing is perfect, and there are certainly things I don’t like about Rails, but nothing I can’t deal with and work around. Right now my biggest problem is that I just don’t know what I don’t know! Some of the code I’ve written will surely make Ruby aficionados cringe and curse my name, and I have spent way too much time on a small part only to find that it was already built into the language or framework just waiting for me. These are the birthing pains though, eventually, I will be better at it.
So, Rails it is. I’m not using a funky HTML or CSS generator yet (one thing at a time), but I might incorporate them some time down the line. I haven’t settled on a database yet either; one of the the nice things about Rails is that it’s Migration model allows you to change it very easily. I’ll probably go with MySQL, or perhaps Postgres (Oracle being responsible for MySQL fills me with dread, but haven’t used Postgres… ever).
Written by Scott Williams who lives and works in sunny Phoenix, AZ. Twitter is also a place.