… until I failed a technical interview I thought I aced!
The first time I got in touch with JavaScript was when it was still cool to use ViewSource to learn how a website was built. It was also the time when JavaScript was mostly used for DOM operations. Therefore, in a burst of wisdom, I decided that it was an ugly language and that it wasn’t worth learning it (I already had some good knowledge of PHP). A few years later came my first internship where I was developing hybrid mobile apps … in JavaScript! During that internship I learnt that JavaScript was a lot more than just the DOM API, and I loved it! As Eric Elliott would say, there is this sense of freedom in JavaScript that makes it a fantastic language.
Even though I studied computer science, JavaScript was never really taught in class (even during the web development class) and so, at first my style was such that it could have only been described as “StackOverflow copy-paste”. I quickly learnt there was a ton of frameworks out there to help you code in JavaScript, and so I jump into them, heavily using the likes of jQuery, Backbone, Underscore and Require even for the most trivial piece of code. And because I was able to build all those awesome apps without any previous knowledge of the language I thought I was great … until I failed a technical interview for a junior web developer position, their reason being that they “didn’t like my style of programming”.
So, if you are at the point where you have been using JavaScript for a year or two without having really taken the time to learn it and you finally found the need or the will to do so, here is my little piece of advice:
- Get back to the basics of the language
If you have learnt JavaScript the way I did, you probably have a very vague idea of the basics of the language. You know how to do things because you’ve seen it in the code you have been maintaining or because you copy-pasted it a dozen times from StackOverflow. Therefore, the typical tutorials for beginners might be a bit too easy for you. Nevertheless you would need a quick and in-depth overview of the language! Worry not, here is something for you by Dr. Axel Rauschmayer: Speaking JS.
- … and then go beyond!
Once you have reviewed the basics of JavaScript, going beyond is not always easy either. There aren’t that many advanced material available that don’t just go into the tiny tedious little details of the language.
A good transition would be to read and listen to what Doug Crockford has to say about JavaScript and then to look into the very insightful You Don’t Know JavaScript series.
Also, an incredibly valuable source of information is the Mozilla Developer Network, which is my go-to anytime I need to check what methods or properties a native object has, or what is the difference between call() and apply()!
And if you think you’ve mastered it all, try this: http://ejohn.org/apps/learn/!
- Keep yourself informed about what’s going on in the community
Finally, try to stay in touch with the evolution of the language. I personally highly appreciate the JavaScript Weekly newsletter, which digests most of what has been going on in the community in a simple email with links to dozens of blog articles.
Of course, don’t forget to experiment a lot as well, because I believe there is no better way to learn than by doing!