RoR, Django or both?
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.
23 comments
[ 1.8 ms ] story [ 69.1 ms ] threadPlay with them all and decide which one you enjoy the most.
Instead of choosing between RoR or Django, just find a startup whose product you love and apply to work there.
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
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)
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.
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.
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.
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 :)
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.
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.
> 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 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 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.