by JS

A Beginner’s JavaScript Study Plan

So you want to learn JavaScript? Congratulations! In 2017, there are more resources available than ever before, in a wide variety of formats for you to get started.

While there has truly never been a better time in history to learn a new skill, It’s also never been more confusing if you’re trying to figure out the best way to do so, given the huge amount of available options and the wild variations in quality between these materials. If you’ve ever been recommended Eloquent JavaScript during the early stages of your coding journey, you know what I’m talking about.

I hope to illuminate a path in this article for a beginner to follow that will start them on the road toward JavaScript competency. It’s a path that I’ve been personally following and have found success with, having recently completed freeCodeCamp’s front-end certificate.

Be sure to drop me a line in 3 months when you’ve sorted everything out and decided on the best course of action (or moved on to something more fruitful).

Step 1: freeCodeCamp’s JavaScript section

freeCodeCamp is an incredible resource for learning the basics (and beyond) of web development.

From this point on, I will assume familiarity with HTML and CSS, but if you’re totally new to programming, freeCodeCamp has you covered there, too.

Using a friendly, in-browser text-editor, freeCodeCamp will first give you a small taste of the popular JavaScript library, jQuery, and then dive right in to pure JavaScript syntax, and how to perform various tasks such as boolean operations, string and array manipulation, loops, and more.

Step 1.5: Reinforcement with Codecademy’s JavaScript track.

If you’re anything like me, you’ll need some reinforcement. Not everything is going to sink in on the first go-around.

One option is to just re-do the freeCodeCamp exercises, but I prefer using multiple resources to keep things fresh and interesting. It can also be valuable to get someone else’s perspective on the same topic. Codecademy is great for this. You’ll experience many of the same areas and issues from a slightly different angle.

Step 2: Tony Alicea’s JavaScript: Understanding The Weird Parts

Once you’ve completed everything up through through freeCodeCamp’s Object Oriented and Functional Programming modules, and the Codecademy JavaScript track, you’ll hopefully be ready for something a little more in-depth.

JavaScript: Understanding the Weird Parts is an excellent premium video series that goes deep into the workings of the language in a very accessible and understandable way. The 11.5-hour series is jam-packed with practical information that you’ll be able to put to use in your programs.

You’ll learn about scope, closures, prototypal inheritance, first-class functions, and more in this comprehensive series. It’s well-worth the $20.

As with any book or video course, be sure to code along and take your own notes for later reference.

As you work through this series, continue to plug away at freeCodeCamp’s challenges and start their intermediate front-end projects. These projects are unguided, which may sound scary, but I guarantee you will learn a ton by doing them. They will force you to confront the gaps in your knowledge and will rapidly increase your Googling skills for when you get stuck and don’t know how to implement a certain feature.

Step 3: Kyle Simpson’s You Don’t Know JS

I’m not sure what I can say about this series that hasn’t been said elsewhere at this point, but it’s incredible. Once you finish Tony Alicea’s course, start reading You Don’t Know JS while you continue to work on the freeCodeCamp curriculum and projects. Simpson is more than deserving of your money, but if you can’t afford to pay, the books are all freely available on his GitHub.

You should at least read the Scope & Closures and This & Object Prototypes volumes. These books will reinforce what you learned from Tony Alicea and also contradict and challenge that material at times. This is good! Kyle Simpson is an opinionated guy, and it’s super valuable to get his expert perspective on things, like the usefulness of the object oriented programming paradigm in a language like JavaScript. Even if some of the issues feel beyond your grasp, there’s value in simply being aware of them.

This series will make you a better developer while also inform your perspective on the various ideological conflicts currently happening in the JavaScript community.

Some notes about struggling, not knowing the answers, and perseverance.

There will be many times when you hit a wall — when you don’t know the answer to some problem and feel like you’ll never figure it out. I’d like to share just a few techniques for when this happens.

1. Walk away

Take a break. Step away from the computer. Get some tea or coffee. Think about something else for a little while. It can be valuable to just clear your head for a little while. You’ll be surprised how many times you’ll be able to quickly solve the problem when you return.

2. Ask for help

Don’t be embarrassed or ashamed to ask for help. Sometimes a nudge in the right direction is all you need to get back on track. In my experience, people love helping out others, and are more than happy to spend a few minutes on your problem. The freeCodeCamp community on Gitter and the CodeNewbie Slack channel are great for this.

3. Move on to something else

If you really can’t get it, there’s no harm in moving on to another topic. It’s nice to have a couple projects that you can bounce between when you are feeling stuck on one or the other.

This is just a guide

Learning is highly personal. All the resources I mentioned above have been extremely helpful to me on my journey to become a self-sufficient JavaScript developer.

I wrote this out of the frustration I experienced when trying to choose between the million-and a half educational resources out there. It was nice to find a plan that finally worked for me after receiving some well-meaning, but misguided advice (“Eloquent JavaScript is a great book for beginners!”), and tons of starts and stops.

While I’m nowhere near a JavaScript expert, I hope to provide perspective from someone who still remembers what it’s like to be a total beginner. So much instructional material is (rightfully) written by masters of their craft. But many of those masters have forgotten the experience of being a lowly beginner, and expect newcomers to make preposterous connections and leaps in logic. This is why so much instructional material can be wholly unhelpful.

If this plan helps you, inspires you to get started, or even has you fuming in disagreement, I’d love to hear from you on Twitter.