> Node will not continue to be 'new technology' for long. This is a shoddy basis on which to select a tool.
Not to worry - there will be a new hot technology within a year or two, and a good percentage of the node.js people will scramble to rewrite in it to avoid looking old fashioned.
I couldn't disagree more with what I assume you are implying here - that node is just some trendy thing that people are only using to stay hip.
I have a fresh perspective since I have only been programming (mostly web dev) for a few years and I've been learning on my own with the goal of full-stack competence. I did not care about what was hip, I cared about what would work using my limited resources. With that goal in mind I have spent my time practicing, testing and analysing most of the popular languages and related frameworks from asp.net, php, python, ruby and so on, and from my beginners perspective (which is a important market to serve) node is on another level. I'm fairly confident it is one of those big leaps forward like rails was and will be around a very long time.
Why? In one word I'd say its speed. Its freaking fast and I'm not just talking about io performance, thats just the icing on the cake. Learning curve, development time, configuration, all extremely quick and easy.
One thing I think people forget or don't put enough emphasis on is that node is a networking library, its not just server side JS the way that asp.net is server side C#, its JavaScript from the bottom to the top. Web server, load balancing, pretty much anything you need can be written in just JS. That makes it extremely easy to set up your own stack that you actually have the potential to comprehend or even write yourself and launch something on the cheap. For 5 bucks on digital ocean you can set up a node app that will probably scale enough to survive a slashdot effect or launch a mvp.
Node and its related frameworks still have a ways to go but I think it is a mistake to dismiss it. And finally I'd like to mention that its first release was 2009 and people have been talking about it a lot ever since. I think its already passed the trendy technology phase and will continue to see widespread adoption.
I know what you mean but I really think it'll be hard to topple node. I started with express and tried a few other frameworks and finally decided on sailsjs. I haven't had this much fun or been this excited about web development since I started 10+ years ago. I really don't know what it is about node thats so appealing as Im no js guru but I think its going to be around for a very long time.
What makes you think that JavaScript will still be the flavor-of-the-day preferred by this crowd tomorrow, though?
They were pretty gung-ho about Ruby and Ruby on Rails between 2005 and 2010 or so. Then their hype moved to JavaScript and Node.js quite rapidly. It'll very likely move on to something else soon enough.
The difference between Ruby/Rails and Node.js is that javascript is literally used everywhere on the stack. Such a HUGE volume of open source code is written in JS. Ruby/python/Java/C# have not enjoyed that advantage.
But that doesn't give any meaningful advantage. Want to do your database queries to the client? Your business logic? No. Want to put frontend engineers to write your backend?
Lots of bad ideas. I mean, it is an ok feature, but by no means a killer-feature really. Ocsigen does the same thing: you can write your code in OCaml and the client-side part will by translated to JS automatically. Neat? Yes. Killer-feature? Probably not.
And JavaScript is really not that great to start with, so daveloping in something else server-side is not the worst idea.
The powerful use of JavaScript for me is that I can render the exact same templates on the server and the client. That's a lifesaver when you want a fast, client-based app that is also search engine indexable.
And JavaScript is really not that great to start with
It's fine. IMO, all languages have warts you have to work around, once you know them it becomes a non-issue. I can't think of the last time one of those "JavaScript WTF" moments actually tripped me up in real code.
I guess what I mean there is less let's have front end devs write our backend but that the ecosystem is so huge and that so many people know JS that it's a huge advantage. Nearly every single web developer that's been working over the last 20 years knows some level of javascript. No other language enjoys that advantage.
The Language, (in this case JavaScript) is probably the smallest part of domain knowledge needed to be a good front-end or back-end engineer. Front-end engineer, know JavaScript? OK, optimize these queries, do we need to cache, make temp tables, map/redux against the DW, etc? Hey backend developer, know JavaScript? Why won't this render the same in Chrome 33.1 as it does IE 10...etc...
JavaScript is a convenience language across the stack for when the team is small, or even a single person.
The problem with web dev (I've thought about this a lot) is really that the browser is kindof the hinge. So no matter what you do for unifying languages, even porting modules so they're same on node front to back-end... you still can't really ever get to a point where you're unit testing pretty reliably through the full-stack.
So might as well test parts in isolation & who cares if there is one language throughout the whole stack as long as your devs are good at the languages required.
One day I think the impedance between server & client will disappear, but only when the browser's role as a rendering engine diminishes or finds better integration/intimacy with the codebase.
(and incidentally, i stopped caring so much about this struggle once i learned how to develop pretty reliable SOA. Haven't totally given up trying to conceptualize the perfect stack tho)
JavaScript is like Gravity on the client side, and with ES6/7 it's about to become a much nicer language too. You could never run Ruby natively, in a widespread manner, on the browser. With one language you can now build a complete stack and target all devices. That's quite big.
Whenever a new technology/language/framework comes up I often hear the word "fun" all the time. My question is: does that fun translates into reliable infrastructure and decent optimized code?
Not to worry - there will be a new hot technology within a year or two, and a good percentage of the node.js people will scramble to rewrite in it to avoid looking old fashioned.