What’s better for me: Rails or Django?

Click here to get a free Christian audio book each month from christianaudio

Over the last two years or so, I’ve spent a lot of time learning both Rails and Django. The reason: I have a lot of potential web-based projects that could really benefit from my writing my own software from scratch. In the past, I had relied on things like WordPress, Drupal, Mambo/Joomla, or any of the long string of content management systems in the “nuke” family. What absolutely drove me crazy was when I wanted to launch a feature that did not exist in an existing plugin/module/addon for whatever software I was using and, although I consider myself a novice programmer, I never wanted to take the time to learn whatever software enough to be able to extend it myself. And I absolutely hate PHP.

So, that led me on my excursion to the world of Ruby and Python and their Rails and Django web frameworks. The following is my admittedly non-professional opinion regarding all four topics.

Programming Languages

Ruby: In my quest to learn a new language, I actually started with Python, got a bit confused, and went to Ruby. I love Ruby. I was able to learn programming concepts better than I ever did with my horror-filled PHP experience. Once I had that foundation, it was very easy for me to move onto learning Python. PHP seemed to make some more sense too. The Ruby language seemed to be more natural to me. I know quite a few programmers and this seems to be their main reason for preferring one language over another too. For me, that’s Ruby. For you, it might be completely different.

It makes a lot of sense to me that there are many “Learn to Program” books that focus on Ruby. It worked for me. It might work for you too.

Python: I’m sure the Python folks would argue with me, but coming from a small foundation in PHP and a newly-larger foundation in Ruby, the difference between methods and functions in Python was confusing. In my PHP experience, everything was a function. With Ruby, everything was a method. With Python, I was constantly guessing. The language itself seemed to do everything Ruby could do and, given its age (still relatively young, but older than Ruby), it also has a lot more pre-written code to use to extend your applications. That was surely a plus, but it also seemed that extra characters needed to be typed when you program (i.e., extra parenthesis). As I read other opinions regarding Python on the Internet, it seemed that one of the biggest criticisms is the indentation structure of the code. To me, this made a lot of sense and I easily picked it up. It was the method/function distinction (or lack thereof) and the requirement to have parentheses when they were not really necessary that turned me away.

Web frameworks

Ruby on Rails: Let’s just say I really liked Rails and spent a lot of time writing the basics of a content management system to teach me the framework. I also like the existence of multiple podcasts and screencasts that really helped me to learn both the language, but the culture and community (yes, each open source project has both its own culture and community). As I started moving away since I didn’t have much time to learn anymore, new words began appearing in the podcasts covering new technologies (Rack, Merb merger, etc.) that were foreign to me. It started to seem like the framework was moving ahead faster than I could keep up with.

Django: I really liked Django too, perhaps more than Rails. I like creating URLs from regular expressions and really liked the admin interface. The thing I most disliked was that it was written in Python. What most annoyed me was that most of the books were written for earlier versions of the framework and most of the code examples no longer worked. Again, this project was moving ahead faster than I (or book authors) could keep up with. Newer books are current.

Note: I’m sure if I had more time to devote to keeping up, it wouldn’t be a problem for either language or framework, but I was attempting to learn as I worked a more-than-full-time job while keeping time aside to spend with my family

Conclusion

After spending all that time learning, I realized that, as much as I want to build my own applications from scratch, I’m a content developer first and my programming has to come second. I spent a lot of time learning how to program (which I don’t regret), but I need to spend my time writing content. That’s what I enjoy. That’s what I want to do. So, I began to look at some of the open source projects again that originally led me to want to write my own software: WordPress and Drupal.

Drupal: After spending time listening to the Lullabot podcast and reading some books, I realized that most of the more advanced site concept ideas I had could be achieved using Drupal. Are there some limitations that I could get past by writing my own applications? Of course. Is it worth working within Drupal’s boundaries (“boundaries” means “stuff other people smarter than me wrote that I’m not smart enough to contribute to….and I hate PHP”) to save me the development time and help me to launch a site quickly? YES!

WordPress: has a lot more plugins than it had a couple years ago and can accomplish anything I need for a basic site. This blog is powered by WordPress. This is the simplest way for anyone to launch a website.

So, my opinion seemed to come around full-circle. I wish that I had the time to write my own applications and I’m sure that, depending on the specific use case, either Rails or Django would do a great job. Until then, I’m happy with Drupal and WordPress.

Subscribe / Share

Article by Richard Smolenski

My name is Richard Smolenski and I am a theologian in training. I have an M.A. in Christian Apologetics from Biola University and an M.A. in Religion (Biblical Studies), and an M.Div. in Theology and Apologetics from Liberty Seminary. Read 107 articles by
  • http://jamesgae.appspot.com James Cai Haibin

    Hi,

    Nice reading your experience choosing between ROR and Django, if you want ready made why not try Django-CMS (http://www.django-cms.org/)?

  • http://pirosb3.com Daniel Pyrathon

    Hi

    Congratulations for the article, i much enjoyed reading it.
    I am a Django programmer that is typing to find out what’s that “magic” people are speaking about in rails.
    Personally, i still can’t get it. I just prefer Python syntax as it looks more logical.. but that’s just me.

    Have you made your mind up?? :)

    Dan

  • http://www.ngi.org Rick Beacham

    I don’t know.. Worldpress and Drupal are over done for certain sites…. I mean I see people using these CMS and its really hard to mantain them in the end. Editing is a real headache. Files are named using silly expressions that make them large and cryptic. Trying to add anything is always more complicated at best and takes more time. then having your own custom cms. My advice is try not to re-invent the wheel when its not needed. But on the other hand sometimes re-inventing can make it better depending upon what your using it for. DJANGO, Rails, PHP CMS , and perl are best for what your going to need them for solving the solution. Perl for instance has AWSTATS, python has matplotlib, php as a CMS and on and on .

  • Pingback: Broken Gold Buyers Honolulu

Search

Categories

Archives