[Opinion] Why is JavaScript so unpopular?

Hey developers 👋

I recently met a 90's developer and we were having a casual conversation about tech. On him asking, what stack do we use in our company, I answered "the JavaScript Stack".

He was shocked and replied: "JavaScript is not scalable and you should consider rewriting the app to Python."

Well, I told him all the popular apps which are built on JavaScript and he was like they all have some or other system which handles traffic separately and it's not JavaScript which is handling the traffic.

I had to quit the conversation as it was a birthday ceremony and I didn't want any fight. :)

Why do you think people think bad about JavaScript?

Comments (9)

Marco Alka's photo

JavaScript is not scalable

Thank you for inviting me. Imho, it does not matter if the person is a 90's dev. They clearly missed the past few years of development in the JS ecosystem. It is true that many years ago JS was ugly and not scalable, however it grew. A lot. We have so many new ways to scale JS, so many ideas to workaround JS weaknesses and so many strong new features. It is best to tell people who probably don't know better to first go and research the topic. If they don't, try to keep away, because such people tend to be toxic.

Why do you think people think bad about JavaScript?

JS has a stigma, and especially the devs who don't work a lot with JS might have missed all the cool new stuff.

Henrique Barcelos's photo

I think the main issue is that people don't know JavaScript very well.

JavaScript itself is sort of a Frankenstein. Non-technical people tend to think it is somewhat similar to Java, which couldn't be far from true. What Brendan Eich wanted to do back in the time while he was designing the the first version of JS was something like Scheme in the browser. He was "forced" by non-tech stakeholders at Netscape to make it look and feel like Java, because of its popularity back in the day.

So JavaScript has an identity problem. While at the surface it resembles Java, on the one hand because of the name and the other because some constructing blocks and its syntax, it is very (very!) different from it.

For starters, JavaScript is not a traditional OOP language. Despite the last years effort of making it more familiar to OOP developers with the introduction of keywords like class and all that comes with it, under the hood it is still 100% prototype chaining. And that's what almost everyone that writes JavaScript doesn't understand. I've been JavaScript'ing for about 10 years now and I can count in my hands the number of people I've crossed paths with which truly understood the nature of JavaScript prototype model.

I believe the recent wave of Functional JavaScript probably made Brendan Eich happy, because it is much closer to what he envisioned there than the persisting OOP-dominant view we had so far. While not a full-fledged functional programming like Haskell, OCaml, F# and others, FP just seems way more natural to JavaScript constructs than OOP. In fact, most of the clumsy stuff in JS is related to how it treats objects. It took me years to understand this properly and if I'm not paying attention, I can do something wrong with it even nowadays.

Another reason why I love JS (well, most of the time at least) and probably why many people hate it is the degree of freedom it offers. I think the only other language I know that won't get in your way even if you are doing stupid things is PHP. JavaScript lets you free to do whatever you want, but freedom always come with responsibility. It can be burdening having to think about every detail on how to architecture your app, what should be the folder structure, which framework to use. People tend to suffer from analysis paralysis. I myself suffered from this. But then I learnt to embrace this freedom. Every time I start a new project, I get to experiment new patterns, new structures, take some concept borrowed from a language I'm just learning. Sometimes very good things are born from that. Sometimes I fail spectacularly. And that's ok!

People who tell that JS doesn't scale probably forgot to tell that to Paypal, Netflix and many other big companies out there. Here ns Brazil there is big bank whose API layer is (or was about 3 years ago) entirely written in Node.js. Even Microsoft has embraced it.

"Oh, but without type safety, if you change X in Y place, you can break something somewhere in Z". Sure. This also happen in more strict languages, you just discover that earlier. Usually this is a symptom of a much deeper problem: you are not setting the boundaries correctly in your application. There is too much coupling. And if you really really need that compiler telling you you are a moron, that's what TypeScript is for. And guess what, TypeScript is just JavaScript with some sugar on top of it. The programming model is still the same, the constructs are mostly the same, the syntax is very similar as well.

In the end, it all comes around to that old saying:

There are only 2 types of programming languages: the ones people complain about and the ones nobody uses.

Jacob Bogers's photo

Well, JS is extremely popular (>80% coders use JS) because it makes a dev fungible, I think this "negging" is more counterculture thing, JS is very established so its "cool/hipster/rebellious" to kick against establishment.

Todd's photo

I would take that "advice" with a grain of salt. Think about this for a second:

You met a stranger and told him you use JS, and he told you to use Python instead.

Did he know the nature of the app? No.

Did he know the reasons you guys chose JS? No.

Did he know the platforms the app needed to run on? No.

Did he have specific, concrete examples of why Python is more scalable than JS? Doesn't sound like it.

Did he provide examples of a time when he tried to use JS for a specific app and then had to switch to Python due to problems with JS? Doesn't sound like it.

Yet he told you to change technologies... Do you see how silly this looks? Whether or not I'm pro or against JS, just based off of this alone, I wouldn't listen to this person unless they were able to articulate all of those things. These types of people exist in every environment. I don't think "JS has a bad reputation" as much as there are just people out there who find it fun to try and convince others of why they are right and the other person should be doing what they are.

I can think of 10,000 reasons to yell at him about why he should be writing his code in Rust instead of Python... But would I do that without understanding the problem domain, reasonings, history, culture, requirements, and provide specific examples? Absolutely not.

Gergely Polonkai's photo

What he said is generally true. But the same goes for most, if not all, languages.

I was around when JavaScript started to hit the first browsers. I saw it emerge there, then in Node and Electron. I personally find it horrible.

If it werenʼt for all the quirks that must be in the language for backwards compatibility (which doesnʼt always work, actually), it could be great. On top of this, all engines are hastily written and are awful resource hogs. Most developers argue that itʼs reasonable to have a developer machine with 8+ CPU cores and 16+GB of memory, but while i can write the same desktop application in C on a much weaker machine, I disagree. It will even be more portable than Electron apps.

I can probably go on for hours, let this be enough. JS was not written for what it is (ab)used for today. Reimplement it from scratch, and you have a powerful tool. Until then, itʼs just an extension to Netscape Navigator.

Tapas Adhikary's photo

I thought it is popular already!

But the 90's developer must be seeing JavaScript since the ugly stone ages of it so, that reaction seems to be acceptable to me.

JavaScript(Ecosystem) vs Python? Highly debatable.

maxdevjs's photo

Envy...?

Moralist Festus's photo

Good. Javascript has been used for numbers of years when it comes to real functional web development. The fact that you heard Javascript is unpopular doesn't limit what Javascript can do. Javascript is gradually growing and has been used in various tech life. Even most companies now employ Devs with a good Javascript knowledge and some of its frameworks like Vue Js, Angular JS, React, etc. Javascript now serve for various developmental role such as web, native app dev, web games, iOS dev and even native game development. Javascript is Popular and mind you it is one of the most demanding language in larger companies.

Ben Buchanan (200ok)'s photo

JS has long been a target of tech contempt culture. In the early days it was considered a bit of a toy, beneath the dignity of mighty gods of computer science (you know, people who learned Java at university ;))... and it never really recovered from that stigma, regardless of its evolution. Plus it was popularised during the early days of the web when things were relatively "wild west" - if it worked it shipped, and automated testing wasn't a thing yet - so JS was a bit of a shorthand for traditional programmers wanting to have a bit of a swipe at the web.

JS had two big things in its favour though - 1) it was the only scripting language supported natively in the browser; so people working on the web didn't spend a ton of time hand-wringing about whether their literal only choice was the right one. 2) it has an incredibly low barrier to entry. Much like PHP - you renamed .html to .php and just like that you had a new language to use! So heaps of people get into it because it's so damn easy to start. The quality of the language is only one aspect of its success. A low barrier to entry will make even quirky options like JS and PHP popular!

Some criticisms have evolved a bit eg. dynamic vs static types is a reasonable talking point; even if it's easily solved by using Typescript. But other people still act like we're talking about ES3, rather than ES6. Still others would say "X is terrible, use (my pet language)" no matter what X was.

But there's really no excuse for anyone acting like shipping JS prevents you from following good engineering practices. Also there is a mind-bendingly large list of languages that compile to JS as well, so absolutely nobody is "forced" to use it any more. So a lot of arguments just aren't relevant any more.

Is JS perfect? Oh hell no. Have heaps of businesses done really well with it? Yes. Is JS right for every app? Definitely not. Is Python right for every app? Definitely not. Is JS right for your app? I don't know and neither did the guy at the birthday party. I'm going to assume your team knows what it's doing better than anyone else!