

RoR, Django or both? - syedahmed

I&#x27;m a .NET guy. I really want to work for a tech startup (or possibly start my own). The cool startups don&#x27;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&#x27;d like to know your (Django and Rails enthusiasts) opinion on each framework. I want to say goodbye to .NET forever.
======
lastofus
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 :)

~~~
nartz
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.

------
EvanDotPro
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.

------
code_duck
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.

------
BCharlie
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.

------
gee_totes
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)

~~~
mod
> 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.

------
lostinpoetics
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...](http://code.tutsplus.com/tutorials/singing-with-sinatra--net-18965) (express, later, was inspired by sinatra which is a quick library to learn)

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

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

* meteor: [https://www.meteor.com/install](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

------
runjake
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.

------
wasd
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.

------
marcofiset
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.

------
metaphorm
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.

------
Pr0ducer
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.

------
mod
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.

------
larrykubin
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.

------
kyllo
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.

------
avalaunch
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.

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

------
120photo
node.js

~~~
borat4prez
Why?

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

