I would tell anyone getting into web development right now that if you want to be in high demand, become a JS wizard. And of course, the front-end is part of the package unless you box yourself into Node. To get to the level the author is talking about is quite daunting. I feel that JS is sort of a second class citizen to most back-end developers. Web projects which are touched by an HTML / CSS developer, a designer…
I'm not what one might consider a back-end developer (or a web developer at all, for that matter), but the overgrowth of web tools in the web 2.0 aftermath has made web tools somewhat hard to ignore as of late, so I had to sporadically develop what can be considered back-end code. Even front-end, which I have done grudgingly.
To me, JS -- and in fact the whole web environment -- is a second-class citizen. I come from a vastly different background (embedded and systems programming), and the fact that people manage to write anything useful with today's web technologies is astounding. I honestly admire the craftiness of web developers, although I have very few good words to say about pretty much anything else that comes out of their hands.
I cannot help seeing them as second-class citizens because:
1. They are simply tools made for different purpose. HTML is there to annotate the structure of some content, CSS is to annotate its appearance, JS is for some limited interaction. What people managed to build with these limited tools, compared to the crap we were writing the last time when I seriously touched web programming (let's just say that PHP wasn't yet popular when that happened), is astounding, but I cannot help wondering if the web wouldn't be a lot better if people had actually stopped to think about better tools for a moment. Every time I see yet another awesome demonstration of a JS game, my initial enthusiasm is chased away by the realization that thirty years later, people are still enthusiastic about stuff you could make on an Amiga, were it not for the gazillion cycles wasted between the hundreds of abstraction layers involved in painting a pixel and for the latency involved with pretty much every I/O operation.
2. It's shaggy. Dear God, it's shaggy, full of barely-documented hacks. If you want your webpage to have a drop-down menu, there's a thousand something.js packages that help you do that, but all of them have their own quirks, their own issues with styling, their own little manner of use and so on. It reminds me of writing X11 applications using nothing but Xlib, when everyone was using their own menu widget that worked in a slightly different manner from every other application. The Unix desktop was not too fun to use back then, and the fact that people not only consider that kind of behaviour to be OK now, but actually want it, is beyond comprehension to me. It doesn't help that a large portion of the community seems to struggle with even the most basic programming concepts, which makes reading source code or documentation a very unpleasant experience.
3. The tooling is terrible (but this one is becomming less and less of a grievance).