Why JavaScript?

“Any application that can be written in JavaScript, will eventually be written in JavaScript.” — Jeff Atwood
Disclaimer:
This post is highly opinionated and subjective because JavaScript rocks my world and I want everyone to know it and agree with me.

So, you’re thinking about JavaScript and why should you learn it, why JavaScript when there are so many other languages out there, some have been around for a while, they’re more mature, stable with settled and established ecosystems of libraries, tools and other helpers and utilities. Other, newer languages lure you in with fresh new ideas! So, why ’settle’ for what seems to be (according to this misleading intro text) an ‘average’ programming language with a chaotic ecosystem of libraries, frameworks, ideas and tools that change every half hour? Well, as it turns out there are A LOT of exciting reasons to learn JavaScript!

To explain to someone why they should learn JavaScript we first need to go over a few key points:

  • How ‘free’ and available is JavaScript?
  • What’s it like to write code in JavaScript?
  • Just how useful JavaScript actually is?
  • How good are the tools that are used by JavaScript developers?
  • What’s the JavaScript community like?
  • Does JavaScript have a future?

Let’s start from the top

How ‘free’ and available is JavaScript?

JavaScript is one of the most open programming languages out there! JavaScript has a standard that is closely followed by many implementers ( specification: ECMA-262 is an ISO standard )

On top of that, the advancement and evolution of the language is handled by TC39 (https://www.ecma-international.org/memento/TC39.htm) (GitHub: https://github.com/tc39) a committee that includes several (in normal circumstances rival) companies and all major browser vendors working together to make JavaScript the best possible language it can be.
That makes JavaScript’s ‘free-ness’ very clear, it’s in no danger of being taken over by any single company or organization or whatever…

What’s it like to write code in JavaScript?

Answering this question is a bit tricky because of a number of factors. 
The first point of discussion ( and arguing between developers ) is the very nature of JavaScript, JavaScript is a very flexible language allowing developers to write the style of code they prefer but it doesn’t isolate them from other coding styles and their side effects.
This means that you can write JavaScript with OOP in mind ( I suggest you don’t but you’ll do whatever you want anyway so what’s the point… ) but you can also mix in other styles in there with ease ( sometimes unintentionally )
Some developers claim this is a weakness of the language, that it’s undefined and the language doesn’t know what it wants to be so everything is allowed and ultimately you can never write ‘pure’ code, on the other hand some developers claim this is a benefit and opportunity ( like I do ) because you can write code that BEST SUITS THE SITUATION!

Second ‘pain point’ for JavaScript developers is the JavaScript library ecosystem.
Most developers when they start using JavaScript will look at all the libraries and stacks and whatnots available and either think OH MY FREAKIN’ GOD! What am I supposed to do with all this? Where do I start? Who do I ask for help? What tech stack am I supposed to pick? Nothing here makes sense, this is chaos!“ or OH MY FREAKIN’ GOD! Look at all these opportunities! I can write using this stack or that stack or that one… SO AWESOME

One more thing I’d like to add here that isn’t talked about enough is the fact that the average JavaScript developer doesn’t understand the language in depth and will unintentionally write and teach subpar code and ineffective styles, on the bright side this appears to be changing with new JavaScript standards and as the language and community continue to mature we’re seeing more and more bad code and styles being replaced by better alternatives (yay for us!)

All in all writing in JavaScript probably isn’t perfect but it definitely isn’t the worst thing in the world and it’s getting better and better rapidly!

Just how useful JavaScript actually is?

This question is REALLY easy to answer!
JavaScript is EVERYWHERE and the awesome part is that it’s just getting warmed up!
JavaScript started off very weak and not exactly useful (when I started looking into the language JavaScript developers were called ‘script kiddies’ and not respected at all) and then JavaScript started to evolve, you were suddenly able to do things! 
Fresh new standards and ideas started to emerge, Angular (https://angularjs.org/) hit the scene and you were no longer building web sites that had a bit of JavaScript to spice things up, you were building web apps!
Also, (in my subjective opinion) the big one hit NodeJS (https://nodejs.org/) (built on Google’s awesome V8 engine (https://developers.google.com/v8/) and it’s package manager NPM (https://www.npmjs.com/) appeared and the whole programming scene changed, out of nowhere JavaScript developers could do it all!
JavaScript had a problem, a pretty big one, it was restricted to the browser but with Node in play that was no longer the case and JavaScript developers jumped on the opportunity to do everything with it.

Front-End frameworks to quickly and easily build UI?’ Yup, there are countless UI libraries out there but the 3 most popular right now are Angular 2 ( https://angular.io/ ), React (https://facebook.github.io/react/ ) and Vue (https://vuejs.org/)

‘Back-End?’ Sure! Node, npm and it’s libraries (such as express (https://expressjs.com/) will help you with that.

‘Desktop apps?’ No problem, download Electron (https://electron.atom.io/) and you’re all set!

“But I want to write smartphone apps!”, you say? Well then just go over to Nativescript (https://www.nativescript.org) or React Native (https://facebook.github.io/react-native) and start coding, they both compile down to native code!

So just how useful JavaScript actually is? Why don’t you ask Walmart and NASA (as in the guys that fly things to other planets!) (https://presencepress.presencepg.com/javascript-and-node-js-continue-to-eat-the-world-d41918a0615b#.6vczqxn9u )

How good are the tools that are used by JavaScript developers?

This one is really subjective and depending on who you ask, the JavaScript tools scene is either terrific or really catastrophic. 
Personally, I’m leaning towards the latter at the time of writing this post, because no matter what your JavaScript skill level is you will have to put in work just to sort out what tools you’re going to use. 
For beginners it ain’t easy because they’re going to be attacked by an endless stream of names: gulp, grunt, bower, browserify, webpack, rollup, coffeescript, typescript, VS Code, github Atom, webstorm and the list goes on and on and on… 
For veteran developers it’s an intense mental exercise to keep up with what’s current and useful and what new ideas / tools will be useful so they can focus on learning that new thing and ignore the ‘noise’.

That being said, it isn’t all doom and gloom. 
All of these tools and the fact that they’re being used just goes to show that the JavaScript dev community is experimenting with new ideas, concepts and problem solving approaches and succeeding! 
Things will eventually settle and we’ll be left with a handful of really useful tools that will be used on 95% of projects but until then we’ll be using what seems to be a bajillion tools just to get a ‘Hello World!’ web app up and running.

What’s the JavaScript community like?

This one is a mixed bag… the JavaScript community is strong in numbers, really strong (http://githut.info) buuuuuut unfortunately the average JavaScript developer doesn’t understand the language as much as they should.
This leads to new JavaScript developers looking at those developers and thinking that skill level is the goal (I’ve been on the JavaScript scene for 10+ years now and up until a few years ago no tutorial or blog post I came across explained JavaScript coercion correctly!).
The good news here is that this is changing, lots of quality JavaScript developers are emerging that took the time necessary to learn JavaScript in depth and are now sharing their knowledge freely and for the benefit of the JavaScript community (https://github.com/getify/You-Dont-Know-JS).
This will probably get even better with time.
The community and the language is maturing and more and more JavaScript veterans are taking on the responsibility of spreading quality knowledge, materials and weeding out the outdated and low quality learning resources.

Does JavaScript have a future?

Taking everything into account it’s safe to say JavaScript has a nice looking future in front of it. The ever evolving JavaScript standards have already turned what was once considered a kiddie programming language into a software development powerhouse.
JavaScript has the most active community out there, new things are constantly tested out and adopted in a flash, shifting the entire mindset of the community overnight, that level of flexibility in a dev community is unparalleled!
The Web, the platform in which JavaScript is a vital part is becoming increasingly important and with it JavaScript as well.
JavaScript is supported and important to a lot of very large tech and non-tech companies.

Conclusion

JavaScript is not perfect but at this point in time it’s hard to beat. 
JavaScript simply can do everything, choosing JavaScript as your primary programming language leaves you open to switch to whichever platform: web, desktop, smartphone, IoT, etc. you fancy.
You can’t exactly say the same for most other programming languages.

And after taking into account everything we talked about in this post we can see that JavaScript developers will continue to be in high demand.