I have backend experience in Python (Django / Flask) and willing to try a new language and framework for my next project. I know its a stupid question to ask between 2 completely different language but I am lost.<p>It seems like the more I google there are more people who supports Go more than Node for mainly these reasons: simplicity and no callback mess.<p>Just to let you know I read these links:
http://www.quora.com/Node-js/Why-did-Koding-switch-from-Node-js-to-Go
http://jordanorelli.com/post/31533769172/why-i-went-from-python-to-go-and-not-node-js<p>I understand that every language have their own usage so here are my condition.
1) I'm willing to use async to solve the callback nightmare in node.
2) Frontend is iOS so no advantage of having a same language in JS.<p>What's your 2 cents?
If you have experience with python, Go or Haskell will be a much better "new tool to learn". Of the two, Go will be a more comfortable jump, but either tool will help you engineer in fun new ways that have no callbacks :)<p>Both have great optimizing compilers, vibrant friendly communities, and can build static linked binaries that are easy to deploy in whatever your target environment is.<p>If you want something you can get comfy hacking in next week, I'd say go with Go, but if you are looking for "what can I build amazing things with a year from now after getting comfy with", I'd push for Haskell.<p>NB: I'm a very active member of the Haskell community at this point, so I'm a bit biased. I will be the first to say Haskell and its tools aren't perfect, but I and others work hard every week to make them ever more awesomer. (I also spend a lot of time helping get people started contributing to core haskell tools). Also I've a wee business i'm building using Haskell as my stack :)
The Go language certainly is, but with Node I can do things like "npm install passport-google" and have OAuth in 5 minutes. The Node ecosystem is full of incredibly useful components for getting up and running quickly.<p>Unfortunately computer language quality seems slightly inversely correlated with the vitality of its ecosystem.
I have learned Node.js from scratch over the last 6 months or so (I was introduced to it by the Startup Engineering MOOC on coursera). Before that my experience was with backend languages - C++, C#, python.<p>Initially it was a steep learning curve and coming from a "synchronous" way of writing code, I managed to get myself in all sorts of mess. But with time as I have become more comfortable, discovered new patterns (async, promises) I can say I am liking node.js more and more.<p>Also, the ability to code in a single language for your entire stack (Angular, node, mongo) is not to be overlooked for productivity gains.<p>So far I haven't really gotten the change to try Go but if your fears are just regarding the async patterns in node.js, I can assure that its NOT that bad and in return it makes you a better programmer.
With Python experience, you might find Go a bit closer to what you are used to. However, if you do any appreciable amount of browser-side JS, then Node.js might also be comfortable.<p>Personally, I would evaluate what frameworks, etc you need for a new project and then choose the language that better supports the project. Keeping in mind, that Google don't use Go for all their systems, only where it provides advantages over the alternatives.