Liam Kaufman

Software Developer and Entrepreneur

What Is the Best Way of Mastering JavaScript?

I want to master JavaScript. Before humbly doing so, I think it’s important to define what I think mastering JS consists of. In my opinion there are two parts to mastering a programming language. The first is mastering the language itself: syntax, important functions, classes, idioms, etc. The second part is mastering the programming paradigm, or paradigms, that the language falls in. This second part is difficult with JS, as it is object oriented, functional and imperative . Thus, to master JS I must master both parts: 1) the language and 2) the paradigms.

Before explaining how I’m going to accomplish this goal, it’s worth while for me to briefly explain why I want to. I have been programming for 4 years and I just recently finished a computer science degree. In school I completed assignments where I learned elements from the 3 major programming paradigms that JS falls into. Likewise, I spent the last year using JS, but I have not delved deeper into it. Since I have scratched the surface I have realized that I enjoy creating web applications, but I eagerly want to be better at it.

Becoming a master will no doubt take years of effort, and countless hours, however I think the first four months will be critical - they will provide the foundation to build my knowledge upon. In the next four months I hope to accomplish the following (roughly in order):

  1. Read JavaScript: The Good Parts, by Douglas Crockford. (I’ve started this part)
  2. Examine jQuery’s source code.
  3. Contribute to jQuery, most likely a bug fix.
  4. Read JavaScript Web Applications, by Alex MacCaw.
  5. Examine Backbone.js’s source code .
  6. Contribute to Backbone.js

While completing those six goals I plan on weaving what I’ve learning into projects that I’ll be undertaking in the next four months. My hope is that by reading books, and other people’s code, I’ll learn how to write better code and engineer larger JS applications. Furthermore, by actually working on projects I’ll reinforce what I’ve learned and I’ll have something tangible to show.

Is this the best way of accomplishing my goal of mastering JS? Discuss on Hacker News.