Do you think Node.js is overrated?

Poll Options

339 votes

Closed · Final Results

Answers (16)

Write answer

This answer has received 1 appreciation.

Yes and No - let me explain

No, use the right tool for the job at hand. NodeJS is certainly better at quickly getting stuff out and just about anyone can write JavaScript, so your development cost will be lower in the short term. To be a Java developer, you need many years of experience, experience which is getting more and more difficult to get unless you spend a lot of time on your own studying Java and getting the certifications - I don't know any companies hiring junior Java developers, so on the job experience is almost becoming non existent.

For long-term maintainability, portability, Java / .NET is certainly a better option.

Will NodeJS code you've just written or libraries you've just imported still run in 5 years time if you update your Node version in 5 years? Probably not. Java? It's been doing that forever keeping older versions forward compatible for 15 years+;

Do you care about whether your code will still run in 5 years time when you just have enough money left for 6 months to get a product out? Probably not. If you are a large enterprise company who've just spent 20 million dollars getting a piece of software developed, do you care if the software still runs in 5 years and can still be worked on in 5 years? I bet you they do.

It's also easier writing bad code in JavaScript than it is to write bad code in Java. The compiler in Java almost babysits you through the process making sure that you don't do stupid things. If I write a line of code like this while(1 == 1){ dosomething(); }, the compiler will tell me that the code below the while statement is unreachable and that the while will never terminate. If I write Integer a = null;, then do System.out.println(a.toString());, the compiler will warn me that a is null and will throw a null pointer exception. If I'm using anonymous functions in Java8, the IDE will tell me I can write the code better using Lambda expressions.

Yes, there's a lot of marketing hype around NodeJS, but that's not NodeJS' fault. That's more the media that's to blame. I've seen this kind of hype for just about every new language that becomes usable, from Microsoft C++ to Borland C++ to Borland Delphi to C#.NET to Java when it initially went big to CSS when it first came to the browser (articles like To CSS or Not To CSS is the Question were common and everywhere) to Dart (massive media campaigns claiming Dart will replace JavaScript) to Ruby and even Python when it replaced perl as the goto language ... you name it, the media needs something to write about, so they'll usually hype whatever new language / technology is available so they can stay relevant.

Is it overrated? No, as I said, use the right tool for the job. Does the media make a lot of noise about it, Yes, they do.

That's certainly a great move on Node's part!

Write a reply...

Instead of talking theory, I'll just give my story.

I originally built Sleeperbot.com in 2009, a realtime fantasy football forum in node.js and it was great for the first few thousand users, about ~100-300 concurrent at anytime.

However a lot of things bothered me, like error handling, lack of solid libraries (major bugs in socket.io and zmq), which made me switch to Python for productivity & stability reasons.

The app scaled really well in Python for a bit, I was able to address most bugs in Python pretty easily compared to node.js. However the users grew to 20x, and I experienced scaling issues with many thousands of connected clients all trying to get in with 10 seconds of each other when we send a global Push Notifications. Both Node.js and Python would have this same problem, being as they are single threaded, so you'd have to write your own distributed fault-tolerant system which is not exactly simple.

This ultimately led me to Erlang. The syntax for Erlang was ugly, but I didn't care. I just cared that my product was stable in production and can handle 20,000 concurrent users all connecting to a machine within a 10 second window and passing messages back and forth in real-time. I needed something that could work just as well for 100,000 users which I expect next year. I also cared that it doesn't crash and that it's self-healing.

The thing I learned is this. If you care about productivity, sure, by all means, node.js. If you care about production and stability, go with something proven, like Erlang.

I've settled on Elixir over Erlang because it has better syntax and compiles to bytecode that runs on the Erlang VM. It also has more momentum than Erlang right now. The cons are that you will experience productivity loss when you switch from OO to Functional style of programming in the very beginning. Elixir / Erlang being less used languages are also missing some libraries that Python and Ruby have that make things dead simple, so I have to be a bit of a polyglot in the meantime.

I still use node.js for mostly brunch.io tasks, but that's about it.

Write a reply...

npm, npm, npm. npm is unrivalled as a package manager.

I like npm, but I also like NuGet as well. INtegration into VS with NuGet is invaluable.

Write a reply...

Absolutely not. It's a joy to rely on a single language for the whole stack.

Write a reply...

Yes, the hype machine got into full gear a few years ago and tried to say Node was the answer to everything. But that happens with every technology that gets big. Node does solve a certain class of problems, namely streaming blocking IO, very very well. Things that would have taken hundreds of lines of C code can be turned into 10 lines of Node. For a certain class of problems is really is a silver bullet. Just don't try to shoot things that aren't blocking io werewolves.

Write a reply...

I don't think Node.js is overrated (where are the ratings, BTW?). I completely agree with @Jan. Use the right tool for the job at hand. But I also have a small story of my own.

When Java was in its infancy (how many of you know that Java 1.0 existed?), we built a "cross-platform" UI intensive tool, and piloted it a large firm. We used AWT for the UI. On our Windows desktops during dev and testing, the thing loaded up in seconds. But at the customer's place, where they used HP Unix workstations, it took minutes.

Of course, they threw us out after the pilot and continued with their antiquated console based tool. The sales guy remonstrated, "We built something that is at the forefront of technology, is it our fault that Java is not what it claims to be?" Those were the times when the phrase "Write once, debug everywhere" became popular, as a parody to "Write once, run anywhere," the byline for Java.

I think Node.js is at a similar stage as Java 1.0 or 1.1. It has promise (I realized the pun later, honestly, unintended), but it also has its place.

AWT and Swing were pretty horrible to work with and still are.

Even if you used Netbeans' Swing / AWT builder to drag and drop components (similar to how Delphi used to do it), it was still yucky to work with - hence the reason I was building UIs in Delphi at the time and compiling to EXE files (only had to support Windows at the time, so Delphi was the right tool for the job at the time)

JavaFX is apparently much more pleasant to work with, but I haven't had the need to build desktop apps in ages, so have yet to delve into JavaFX to form my own opinion.

Write a reply...

Am I too late to the party?

On the point - is NodeJS overrated - no. Is NodeJS overhyped - yes!

NodeJS is just a tool (so original, right!) and used properly can make great things. More and more big companies are using it. Node's merge with io.js was the best thing that can happen to the project. Writing Javascript on the front-end and back-end looked strange at first, but with time, developers found it's quite powerful (and cool). I have some concerns though about matureness, compatibility and maintainability. Mainly, because of Javascript's current "changing" state.

NodeJS will continue to gain momentum and popularity. It's on the right track. It will just take some time to be mature enough to be more widely used.

Write a reply...

Yes.

But that isn't to say "Node is bad".

As someone much smarter than me said: "Pick the right tool for the job"

I think the reason I'm not using NodeJS is simply because of the JS part, but that's just me.

Write a reply...

I don't think node is over (or under) rated. It sits in a pretty comfortable spot in my mind. Quick to get up and running, performant for most tasks, a good standard library that covers most daily tasks, and a popular package manager for everything else.

I think the verdict is still out on how it will scale out to really large applications, but I think the passage of time will settle that, along with some help from TypeScript and friends.

Write a reply...

I think NodeJS is fitter as Java for the requirements of today. I think so, because the companies have not so much time for waiting a software solution as in the past. With a smaller, faster development cycle we can react for the failures and business changes.

Maintainability: Jan missed this point. What happens when we have J2SE (1.4) or older codebase and it can run fine on JDK8? I don't think so, for example JDK8 has a different Date API. Yes we can use this old apps with the older JDK, but we can use the older version of Node, when the business need.

Java also had critical bugs, how fast can the Oracle guys react for a new security vulnerability? It’s enough to see, the release cycle for Node and Java, Node has faster release cycle. We can say, it is not stable, the Node community - not long ago - said hello guys, for the stability we ship for you a LTS version for Node, which is “enterprise ready” and stable. When you would like to use the latest features you can use the normal release version.

Bad code in Javascript? Yes, it is possible to write bad implementation in JS and Java also, it doesn’t make sense for me. It depends from the developer and his vocation.

NullPointer, compiler, and “safety” ? Please see this example, how react the compiler for that?

public  Integer a() {
	//do business logic
	return null ;
}

int b = a().intValue() ;

Can the compiler catch this NullPointer? I don't think so. It is always the developers task to validate values and corner cases.

Node also has testing frameworks,static code analysers (eslint, jshint, jslint,etc..), code formatters, IDE support (netbeans, eclipse, atom, sublime text) tons of plugins and possibilities. We are able to write and use stable and maintainable apps.

Please show me, where I wrote about this type things? Thanks in advance..

Write a reply...

I agree it's over-hyped (over-rating it would be too much, after all). Only kids would write a serious backend using JavaScript. In fact, startups write in these languages as long as they're startups. If they go past this stage, they generally move to Java, at least for the backend. Node has its own merits, no doubt about it. But Java and JavaScript are not even comparable: the first is a serious programming language, object oriented, strongly typed, with a solid and top-of-the-line concurrency model, formalized by an open community (JCP) , baked by Oracle, implemented by software engineers for software engineers. The latter is a scripting language, weakly typed, badly interpreted, without a consistent implementation across all platforms, made by an ancient old-style committee (ECMA) for script kiddies who probably don't even know what a big-O notation is. Come on, stop comparing apples to oranges. Stop comparing scripting languages to real programming languages.

Write a reply...

I think there is a lot of hype around Node - just as there is about NoSQL, Big Data, and the latest trendy javascript framework/library. However the vision of a single language that can be used in the front-end and back-end for web applications is a pretty powerful and seductive one in my opinion. Node development is pretty much in its infancy and I hope it keeps growing and maturing.

In any case I very much agree that the right tool has to be chosen for the right job. And the right tool is a function of many things - both technical and non-technical - the most important of which is the (business) bottom line.

Write a reply...

Why do you compare only with Java/Scala/.NET? That is old style technologies. It will be more fair to compare with ruby, python, go

Write a reply...

No

Write a reply...

Node JS rocks when it comes to io. Club it with Nginx and you get scalable systems. IMHO NodeJS/Nginx lets you get most out of your hardware. My experience is limited to using it for io based operations and dude it rocks. The only glitch i see is that it is hard to write object oriented equivalent code. Just create an eco system of small serverices that is built on NodeJS

I have not used node JS for projects having high computing requirements (read processing requirements). There are now a lot of libraries and different ways of dealing with such things in Node, but i have not tried it myself. It would be interesting to see if any one used Node for projects having high computational requirements in production and how it scaled and what challenges they faced.

In this world, alas there is no single tool for all different problems and we need to acknowledge it

Write a reply...

We're all fanatics of some stripe. I just can't become a node fanatic. Async select-driven architectures are great in their own right. I implemented C++ servers this way back in the '90s and they worked great. So, in way, node is the second (third, fourth, fifth ?) coming. Yawn. Besides, as cool and as funky JS is, I definitely prefer statically-typed languages; I'm a scala fanatic now.

Write a reply...

loading ...