Warning: This may be a controversial one.
As an engineer and software developer I think JavaScript is okay. It definitely has its flaws. As a web application architect I have to take into account not just the technology but also how it will be maintained, who will maintain it, and how you staff that team that will maintain it.
When you take those things into consideration I love having JavaScript as a primary language in my stack. Now I am not always saying JS is the right tool for the job. For example Python has really taken the lead with AI right now.
What I am saying is if possible KISS or “Keep It SImple Schematical” (See what I did there...). If you are building a web app you pretty much have to support JavaScript in the browser. Flash and applets are long dead. So one way or another, until a better tech comes around you are stuck with JavaScript for now. So that is one language you are kind of forced to support.
Now you could pick a different backend language but unless you had a damn good reason why would you? If you happened to have a large supply of expert Python devs banging on your door asking for jobs then sure, I could get behind that. But that is rarely the case. Especially if you live in North Wisconsin cow country. We are known for our cheese, brats, and beer, but not our vibrant tech scene. Though I have seen more than a few great software engineers come out of Wisconsin you still are not tripping over them in the street quite yet.
So let’s say you pick NodeJS as your backend language and then down the line you find yourself with a large supply of PHP developers applying to be on your team. Well chances are even if they were pretty much a backend person they had to learn some frontend JavaScript to do their job. Retooling a developer from mainly PHP and a little JS to full JS is way easier than training someone no training on your backend language of choice.
Basically JavaScript is one of the easiest languages to hire for. Not everyone you hire will have a PHD and be a 31337 H4X0R(elite hacker) with it, but you only need one or two of those and a bunch of others at varying skill sets to support them.
Now this will probably all change with AI, and soon OpenAI will release a programming language that no human will understand or be able to read and we should just blindly trust that it is not up to nefarious intent. But before I bust out my tin foil hat I will just wrap this up.
The Bottom Line: When designing a system be sure to factor in all the costs, not just the ones and zeros but the cost to hire and retain a workforce of people that can build and maintain that system.
Signup for the mailing list