Learning Web Development : Django vs Node vs Rails vs Others


Question

I know Java and Python(with some Django) and little bit of Ruby(no Rails) and no Node.js and probably there are more that I am not aware of.

I am planing to start learning web development and its complete stack, but when I see around I see loads of options and this confuses me. I need suggestions based on the following params

  1. ease to learn
  2. ease to build and iterate
  3. ease to deploy (like free and cheap hosting solutions)
  4. popular

Please throw some advice

Thank you

1
80
8/18/2011 7:13:44 AM

Accepted Answer

Ruby on Rails:

Easy to learn? - Yes - excellent documentation at guides.rubyonrails.org and a great tutorial at railstutorial.org.

Easy to build and iterate? - for sure - rails lends itself to agile and iterative development very well.

Easy to deploy? - To deploy (at least for small apps and while learning), you can't really get easier than using heroku.com - git based push and it's free.

Popularity - very popular!

Django

Easy to learn? - like Rails, Django has excellent documentation at docs.djangoproject.com/en/1.3/. Maybe a slightly steeper learning curve (purely opinion here, but I find rails tends to be "ready to go" whereas django needs a little bit of config before you get into development).

Easy to build and iterate? - again, like Rails, once you are up and running with it, it is pretty easy to iterate.

Easy to deploy? - not as easy as Rails. There are heroku equivalents gondor.io, djangozoom.com, stable.io but they tend to be in private beta. That said, I had no trouble getting an invite to gondor.io.

Popularity - it's popular, but the user community is a little less....lively than the Rails crowd.

Node

Easy to learn? - um yes and no, easy to put a quick hello world server together, but more tricky if you want a full scale app. I would stay away from this in the first instance - it is new and rapidly evolving. Also, Node itself isn't comparable with Rails or Django because the latter two are frameworks whereas Node is more of a barebones set of apis that you could use to develop something. You could opt for a framework like expressjs.com which is more in line with Rails and Django. I've not used it so I can't really give you an opinion.

Easy to build and iterate? - easy to build - yes, easy to iterate - yes.

Easy to deploy? - you can head over to no.de and apply to get a smartmachine - it is free at the moment and easy to deploy - git based.

Popularity - it's gaining.

81
3/15/2013 12:09:25 AM

A few notes from a Django dev who's spent a bit of time exploring Node.js:

  • The asynchronous programming approach in Node.js is conceptually more difficult. While you can take a similar approach in Django or Rails, it's not common to do so.

  • Node.js is really, really fast out of the box. But part of the reason for that is that it doesn't include very much OOB.

  • The Node world is very fragmented right now, with dozens of Node libraries, solutions, and frameworks all competing for attention. Express seems to be the most popular framework for Node right now, but we're kind of in a waiting game to see what shakes out. Django and Rails already have all the bits you need to create advanced applications without having to glue everything together yourself.

  • The most popular framework for Node.js right now is Express, but Express doesn't even include a way to connect to a database. You have to add that on. Nor does it include an ORM - you need to add that on. I looked into some Node ORMs, but they didn't seem nearly as complete or sophisticated as Django's.

  • Django is a complete, cohesive, end-to-end solution, where all the parts fit together seamlessly ("the Mac way"). Node.js is a baseline on top of which you pick your own framework, your own ORM, your own db driver, your own URL routing system, etc. etc. ("the Unix way").

  • There are advantages to the Unix way, but IMO systems like that are more difficult to get off the ground and more difficult to maintain. The parts don't necessarily talk to each other like you'd expect, and the whole project doesn't get upgraded at once. End-to-end systems like the Mac software/hardware continuum and Django/Rails are huge wins for productivity. For comparison, note the relative obscurity of Python's TurboGears (a bunch of disconnected parts) compared to Django. Django ate TurboGears' lunch because it's cohesive and consistent. If productivity is important to you, you're going to be more productive working in a more mature framework. A Node.js framework that fulfills this vision will arrive someday, but it isn't there yet.

  • Express doesn't provide the range of helpful command line tools, data API, etc. that Django or Rails provide.

  • Node.js frameworks certainly don't include anything like the Django admin, which is a massive productivity win for Django devs.

  • Purely my opinion, but Python just feels more elegant than Javascript. Code is more compact and more readable. Not a big hurdle though, just a preference.

Overall, Django feels like a "batteries included" platform while Node feels more like a rummage sale.

Node/Express are really young. Exciting in ways, and showing huge promise, but how long will it take for Node.js frameworks to feel competitive with mature frameworks? I don't know.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon