Dave's Notebook

7 Reasons Every Programmer Needs to Learn JavaScript

In my recent discussions with hiring managers about how hard it is to find good developers, the realization has slowly dawned on me that the programming language to learn today is JavaScript.  This is particularly true if you are a web developer, but I would be inclined to just make a blanket statement.  If you are a programmer, you should learn JavaScript.

image

Demand

The main reason that I say this, is that as JavaScript matures and things like Node.js become increasingly viable options, the demand for JavaScript programmers will continue to increase.  JavaScript already surpasses C# as rated by demand, and is surpassed only by Java.  And if you were to take a look at projects available to GitHub, you would find that JavaScript has a growing representation that surpasses previous kingpins including Java and C#.  And finally, looking at the representation on StackOverflow, we can see that JavaScript is in the top tier there as well.

Better Pay

According to SitePoint, JavaScript pays better than C#.  Again, Java pays a bit better right now.  But as demand for JavaScript grows, you can expect the pay to increase as well. On Gooroo, the pay vs demand shows a little different picture

While the demand for JavaScript is evident, it is obvious that several languages that have a smaller demand actually pay better.  I suspect this is because many organizations still think of JavaScript as the language that anyone can use.  It will be a very painful lesson when they find out that “Anyone can program in JavaScript” really means, “Anyone can write crappy code in JavaScript”.  Which is where you and I step in to clean up the mess that was left behind.

Over on StackOverflow, we see a very detailed breakdown of developers for the last three years.  When you finally get down to the “Technologies Used” section what we find is that if you just call yourself a JavaScript programmer (I’m assuming client side here) you get paid better than Java and less than C# but if you say you are a Node.js programmer (which is all JavaScript) you are the second highest paid skill.  The only thing that pays better is Objective-C (and I’m assuming soon, Swift).

JavaScript is Maturing

With the recent commitment of the standards committee to release a new JavaScript standard every year, it is clear that the amount of Syntactic Sugar that will be added on to JavaScript is going to be increasing every year for a while now.  One of the features I’m looking forward to is the ability to use the async and await keywords in my JavaScript code to eliminate callback hell.

But, the reason this matters to you is that the sooner you start learning JavaScript, the easier it will be to learn.  All of the changes that happen after you learn it will all be incremental.  The browsers are also continually improving how they handle JavaScript code.  I can see a time in the future when browsers not only cache the JavaScript files, but cache the compiled version of the JavaScript files.  Bringing us closer to near binary speed.

It is interesting to me that several years ago, people were debating the future of JavaScript and now, there is active work being done to make JavaScript a first class language.

Some JavaScript Programmers Are More Equal Than Others

I was talking with an old friend about a year ago.  He mentioned that he was the only one in his group of about 20 programmers who wrote JavaScript in such a way as to eliminate polluting the global scope with variables.  That is just the most simple of examples.  Many people who call themselves JavaScript programmers, don’t know the basics.  And that is today.  Imagine what this is going to look like three to five years from now.

And don’t forget that a lot of the tooling to support profiling and memory leaks is just at its infancy.  If you have those skills today, and you have marketed yourself well, you are already realizing that a lot of what I’m saying here is true.

If you are interested in this kind of stuff, there are some courses over on PluralSight.  Just search for “JavaScript profiling”

Frameworks Are Maturing

With the new version of Angular in the works, Aurelia in the works as an alternative.  Commercial products such as Scencha’s EXTjs.  Node.js for server side programing.  And others…  No one can say that it is too hard to develop real applications using JavaScript.  I’m pretty sure, if I wanted to, I could write a desktop application that ran using nothing but JavaScript.  Oh.  Wait.  That’s already been done.  (Visual Studio Code for those of you who were asleep for that announcement.) Actually, since I’ve written that last paragraph I’ve started writing a desktop application that uses HTML with Bootstrap and Angular for the presentation layer and C# for mostly data access.  Yes, I know I could do the whole thing in JavaScript if I wanted to, but I’m going with what is most familiar right now.  Apologies to XAML fans.

JavaScript Runs Everywhere

JavaScript runs on every major browser on every major platform.  It runs on the server side on every major operating system.  Anyone writing a web site today of any major functionality is going to need someone who knows JavaScript to write the front end.  It doesn’t matter what the back end code was written in be it Java, PHP, .NET, Node.js or something else, the client side is going to need a JavaScript developer.  In fact, I still run into pockets of developers who just don’t know how powerful JavaScript is.  What this means for you is this.  If you become an awesome JavaScript programmer, you will have jobs available to you across all the various server side platforms.  It will help if you learn a little bit about those platforms.  But I’m talking about niching down in JavaScript so that you become THE go to person.

JavaScript is a Compiled Language

It may shock you to know that, technically, JavaScript is a compiled language.  This has two implications.  First, once the code is compiled, it is possible for it to run as fast as any other executable.  Second, it is technically possible to write tooling for JavaScript that would create a binary file that does not need to be recompiled every time the code is loaded into memory.

What Do You Think?

Of course this is all totally opinion.  What do you think?  Leave me a comment.