Hacker News new | past | comments | ask | show | jobs | submit login
RoR, Django or both?
20 points by syedahmed on Dec 3, 2014 | hide | past | favorite | 22 comments
I'm a .NET guy. I really want to work for a tech startup (or possibly start my own). The cool startups don't use MS stack, hence I decided to learn a new language and a web development framework. I have narrowed it down to Django and Rails. I'd like to know your (Django and Rails enthusiasts) opinion on each framework. I want to say goodbye to .NET forever.



Django and Rails are pretty much equivalent these days in just about every meaningful way.

I've gone Django for no other reason than I much prefer Python over Ruby. This is not to say Ruby is a bad language, but I much prefer Python's "one way of doing things" ideology over Ruby's "many ways of doing the same thing". The fact that the "alias" keyword exists in Ruby annoys me to no end.

I also get the benefit of using Python outside of web dev, such as with the awesome SciPy stack for statistical analysis.

It's a personal preference at the end of the day though. You won't go wrong in either direction really.

Finally, don't discount .NET. If you know it well, there's no reason you can't build your own solid startup with it at the foundation. It's been done before.

(You're going to have fun trying to figure out what front-end JS libs/frameworks to learn next :)


I'd go with Rails, if you are choosing by framework. If you are choosing by language, well, then choose the language you want to work in.

Your characterization of Ruby vs Python i think is very flawed though, and of course doesn't generalize to frameworks because Rails has (canonically) been called an 'opinionated' framework.


The bigger choice there is Ruby vs Python. They're both great language, of equivalent capabilities and sophistication, but encapsulate quite different styles of viewing programming. I suggest playing with Python and Ruby some more and seeing which makes you feel more at home.

Personally, I love Python but never felt quite at home with Django. Ruby and I havent ever meshed well and Rails was not better in that regard. My current favorite framework is Flask. Flask's simple power matches my style well.


The only correct answer to this is to spend some time to go (all the way) through the getting started guides for both.

Now, if you are sincerely planning to shape your career on this decision (and because you didn't clarify how you narrowed your decision down to Django and Rails), I'd recommend taking advantage of your current flexibility to get your hands dirty with a wider array of the options out there before investing copious amounts of time specializing on a single language/framework.

In your position, I'd take this time to actually go through the getting started guides for at least a couple of additional languages/frameworks (e.g., Symfony, Zend Framework, etc for PHP and Meteor, Express, etc for Node.js). This will allow you to find the stack that's a genuinely good fit based on your current skill level, opinions, experience, etc. This should not only give you confidence in your decision, but more importantly, it's sure to make the entire learning process much more enjoyable. Additionally, this approach would give you exposure to the documentation quality of the various projects in the process.

All tech arguments and language hate aside, specializing in any of the languages/frameworks mentioned will absolutely make you employable by a wide variety of companies in the current market, so personally I wouldn't stress over that aspect of it very much. That is, unless you're only planning to entertain local opportunities and live in a region which lacks tech diversity. In that case, your local job market should probably be a more important factor in your decision.


I work in Django, and I love it. I chose it because I also wanted to learn Python, since it is used in Open source projects I support and is commonly used in a variety of spaces beyond web development.

I think it will boil down to your personal preferences for the most part. On the other hand, when I was looking for jobs early this year, there were 5-10 times more openings for RoR developers than Django, so if you are looking for work in the medium term, I would choose RoR.


As someone who does both Django and Rails, I suggest Rails.

Rails is very "do it the Rails way" about putting together a website, while Django lets you kind of do whatever. If you're a beginner, the do whatever part of Django can often lead to very kludgey code and a big mess if you don't take the time to carefully architect out your application.

Rails is also nice because it's very strict MVC and built for the modern web (meaning it's easy to have a model spit out it's values in either JSON or be plugged into a template, for example). With Django there's alot of fiddling and "what file do I put this function in?" (for the beginner).

Plus Rails has super duper good form handling, while I find the form handling on Django to be atrocious.

I think your choice should come down to how well you know the architecture of the application you want to build. For me, I find it easier to shoehorn my application into the RoR framwork than to try and shoehorn the Django framework around my application.

(FWIW, I'm speaking of Django 1.6 and Rails 4. Things may have changed in the latest version of Django)


> Rails is very "do it the Rails way" about putting together a website, while Django lets you kind of do whatever. If you're a beginner, the do whatever part of Django can often lead to very kludgey code and a big mess if you don't take the time to carefully architect out your application.

I agree with this. Once you learn the rails way of organizing an app, it's easy to jump right in to any app. That said, it takes some time to learn it, and lots and lots of "magic" happens, which is annoying to me.


The same advice as always: There's no one true answer. They're about equal, so mess with both and move forward with the one you feel most comfortable with. Or Node.js.

Play with them all and decide which one you enjoy the most.


There's plenty of great shops that run .NET or will value your .NET experience and expect you can learn on the job.

Instead of choosing between RoR or Django, just find a startup whose product you love and apply to work there.


Any of those two will greatly help your employability. But if your goal is to start your own startup, and you're moving away from .NET only because

> The cool startups don't use MS stack

Then I recommend you strongly reconsider. Starting a startup is not about your coolness factor, but about the product you ship. Your users could not care less about what your technology stack is. If you take 6 months to master a technology you don't know, that's a lot of time where your are not actually developping your product.


I've used both. I like Django better. I don't think Rails is bad or Ruby is bad. Just that I personally prefer Django and Python.

They're very similar. Most of what you know about Python/Django is still applicable with Ruby/Rails and vice versa. If you learn one, it won't be wasted effort if you decide to switch to the other.

I would say just try them both out with a tutorial or practice project and see which one feels nicer to you.


I'm a Djangonaut whose also built an (extremely simple) app with RoR. I like them both. I'm more comfortable with Python, so I'm biased, but Rails is full of stuff that makes early prototyping fast, and lots of TDD goodness. I remember the first time I used Generate and it barfed out all these files, and I barfed rainbows in amazement.


I personally find Python code easier to read and maintain, and I have an easier time keeping up with changes in new versions. I was pretty familiar with Rails 2, but feel like there are frequently big changes between releases that I can't keep up with if I'm not a full time Rails developer.


I much prefer python to ruby, language-wise.

I find it much easier to work with Rails addons than Django addons, typically.

If most of the work is new code, and not patching together various plugins, I'd choose Django every time.

I work in Rails every day professionally, and choose to write all my side-projects in Django, fwiw.


They're basically equivalent, so just figure out whether you like Python or Ruby more as a language and base your decision on that. And meanwhile, also try to figure out whether you enjoy making CRUD apps, because that's what Rails and Django are for.


can't speak to django, but i've worked with rails, node, and meteor (caveat: not "professionally," only on some personal (failed) startups)

rails: always have had pains with maintaining apps, but will always love ruby. very much stays true to its convention over configuration philosophy. if you stick to (or sometimes, can even find) the "right" way to do things, it's very smooth. if you start down a wrong path things can get painful quickly. luckily there's a lot of resources for 90% of things you'll want to do.

node/express etc.: basically the flip side of rails, a lot of doing it yourself. there's a good ecosystem but i've sometimes found myself lost in a sea of options.

meteor: last year or so i've been doing more and more stuff in the framework and it's a good mix of both of the above. it's reliant on Mongo so a lot of RDBMS techniques are useless which can cause some pain. ecosystem is pretty young so there's a lot of the node-esque soul searching.

like runjake said, i'd try each out. have found the following somewhat useful:

* ruby/sinatra: http://code.tutsplus.com/tutorials/singing-with-sinatra--net... (express, later, was inspired by sinatra which is a quick library to learn)

* rails: http://ruby.railstutorials.org (the "definitive" starting point i suppose)

* node/express: http://scotch.io/tutorials/javascript/build-a-restful-api-us... (this is just an API but generally gets the main ideas across)

* meteor: https://www.meteor.com/install ("Discover Meteor" is the best resource to start, but it's not free)

Outside of the Rails tutorial, should probably be able to get a rough sense of each in a day


I would approach this from a different angle than the other commenters suggested so far and make a list of companies you might like to work for. Find out what stacks they're using and make your decision based on that.


I'd say there are marginally more RoR jobs than Django ones. There are especially more RoR jobs if you look for remote jobs.


node.js


I just started poking around Meteor.js also. Seems like .JS market is pretty hot these days.


Why?


Haven't you heard? node.js is pretty hot these days!




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: