This title speaks to my life for the past four months. For years, I’ve known that JavaScript is the language of the present and future on the web and for years, I’ve avoided learning it. It’s easy to chalk this up to a myriad of reasons, but ultimately, the two largest factors were intimidation and motivation.
Intimidation because my entire programming experience is on the server-side using languages that support classical object oriented programing practices. JavaScript is the antithesis of both those paradigms. A language that is compiled in a completely different fashion and relies nearly entirely on the client to interpret and run the code, while also seeming to generally laugh in the face of OOP and passes around functions like it was going out of style.
Ultimately, I had to admit that I didn’t know JS.
So, in December of 2015, I dove in. While writing a quick jQuery snippet or sniffing out some client information via JS was always in my bag of tricks, truly understanding the language and it’s breadth of functions was far from my grasp, so my journey began with following Remkus de Vries’s trimmed down step-by-step plan to learn JS “deeply” taken from JavaScript is Sexy. I paired that with reading. A lot. Eloquent JavaScript, JavaScript & jQuery, and every tutorial I could get my hands on.
Honestly, the process is far from over, even four months in. My day job keeps me plenty busy, and when you’re writing production code in WordPress and managing a small product team, there’s not a lot of room for flights of fancy. Even then, however, my weekends have been filled with trying to build WordPress themes in AngularJS or playing around with a Node server to get a small application running.
The biggest challenge for me, and largest departure from my traditional experience is the sheer volume of frameworks and libraries to learn. Unlike PHP, Java, or Python – server-side languages that taught me the art of programming – JavaScript is almost wholly reliant on frameworks to deal with a variety of cross-browser bugs and inconsistencies. In many ways, this is fantastic! There are frameworks like Laravel for PHP that I’ve always wanted to tap into, but never had the time or inclination, and now I feel the need to go back and explore given the positive experience I’ve had with JavaScript frameworks so far. That said, each framework is a language unto itself, making the learning curve for JavaScript as a whole _very _steep.
Ultimately, the path to where I am now has been exhilarating, and each step along the way has opened up brand new worlds. From closures, to task runners, to package managers – JavaScript is a dense and ever-changing topic; just the sort of place for me.