DEV Community

Cover image for How to self-teach JavaScript
Carl Anderson
Carl Anderson

Posted on • Originally published at carlanderson.xyz on

How to self-teach JavaScript

There's no denying that self-teaching JavaScript is difficult - although you have the benefit of always working on areas that interest you, it can be difficult to find direction in your learning.

You're continually asking yourself: are you're doing the right thing? Is there something important you're missing? What are you meant to do next?

Not all learning methods are equal: the time you spend glancing over yet-another explanation of prototypal inheritance (that you still don't understand) isn't as beneficial as when you're 20 chrome tabs into solving an inheritance problem.

If you're looking to make the most of your time, there's a simple cycle that you should be underpinning your learning:

Write, Research, Repeat

The key takeaway here is that your entire learning path should be driven by writing code. It's a skill you have to develop, so there's no substitute for practice. The trick is finding a constant stream of ideas.

The ultimate process is straightforward, however. Write code until you get stuck, and then research your problem until you get unstuck. Over time, you'll need to research less and less.


Of course, if you can't write any code, then this advice isn't useful to you, so I've divided up this strategy into various learning stages to give you a more granular approach.

You have three phases of learning, where the strategy differs slightly:

  1. Introduction Phase
  2. Growth Phase
  3. Honing Phase

Introduction Phase

This phase is the simplest to grasp - you don't know anything. The best thing to do is to take a course that introduces you to the basics of JavaScript. Most people do an entire, in-depth course during this phase – after all, more is better right?

No, not at this stage.

The challenge most people have with the introduction phase is that they try to learn far too much before attempting to apply their knowledge. They try to run before they can walk.

Courses will teach you a language, but they won't teach you how to build software – that's something that you can only learn from practising. You want to keep the period where you are only working from a course as short as possible.

In short, you want to learn absolute basics. I recommend completing the Basic JavaScript section of FreeCodeCamp. It covers all the core building blocks you'll need to work on your own, then you can come back.

Growth Phase

This phase is the point where you have enough knowledge to write code, but everything's clunky, and you're still missing significant amounts of knowledge.

Initially, I recommend you completely stop your course for a while, and spend some time creating several practice projects to solidify what you learned during the introduction phase.

When you're more confident in the basics, you should re-incorporate your course back into your learning. Doing a section in between projects is a good approach.

When you've finished your course, it's a good chance to stretch yourself and try new things. Experiment, and work on the areas that interest you: Frameworks, CSS drawings, WebGL, Node. Have fun with it. It's all valuable.

Honing Phase

This phase isn't clear-cut like the other two. The honing phase is an extension of the growth phase, but we start working on more ambitious projects. Chances are you are still missing significant amounts of knowledge, but coding is comfortable now.

You're ready to start the honing phase when you aren't lost when working on code. You're able to imagine your own solutions to problems (even if you have to google the specifics). This article might help you.

This is the time to practice softer aspects of programming, like the code quality and structure. Start learning best-practices, like testing, commenting your code, and (if necessary) writing docs.

You can now also assemble and refine your portfolio, and use it to apply for Junior roles. It can take a long time, though, so I wouldn't make it a priority. You can also start on interview prep through sites like HackerRank.


Although it sounds cheesy, the most critical part of this entire process is to make sure you're having fun. Learning to code is a slow process, and it's going to be much easier to keep your motivation if you're enjoying yourself.

I've linked this article multiple times already, but I strongly recommend you check out this guide on choosing ideas for practice projects. Get out there and write. some. damn. code.


Are you stuck on JavaScript Tutorials? Sign up to my newsletter for more helpful articles to get you moving again

Top comments (11)

Collapse
 
adnanbabakan profile image
Adnan Babakan (he/him) • Edited

Great article!
But I found JavaScript the easiest one to learn by my self anyways. LOL
And maybe that is because I knew PHP and some C++ already.

Collapse
 
astrit profile image
Astrit

When you know just one language no matter which one I believe is much easier to learn the syntax for the others since you can find similarities in logic.

Collapse
 
wamokapaul profile image
Paul Wamoka

Very True. I leant PHP with lots of ease. Thanks to theI have attached basic knowledge I had while learning C

Collapse
 
eljayadobe profile image
Eljay-Adobe

I started with Eloquent JavaScript by Marijn Haverbeke, which is available for free, and has since been updated for modern JavaScript. Two thumbs up!

And with JavaScript: the Good Parts by Douglas Crockford. Alas has not been updated to modern JavaScript. At that time, two thumbs up... but now I'd say wait for an updated edition. (His new How JavaScript Works is not that update.)

Everything I learned with TypeScript was ad hoc, because there were no books for it at that time.

I expect that there are tons of other good JavaScript books available.

Collapse
 
rnrnshn profile image
Olimpio

This a gem. Thanks for the article... 🐐🐐🐐

Collapse
 
mohammedasker profile image
Mohammed Asker

Where have you been, Carl?

If only you've written this post sooner than later, I won't have wasted my time learning too many things at once and not doing enough practices.

Keep up writing good stuffs 👍

Collapse
 
peterwitham profile image
Peter Witham

You are so right that the key to a learning path is to write code, all the reading in the World is only as helpful as putting it into some kind of practice.

Collapse
 
calebpitan profile image
Caleb Adepitan

This is beautiful and everything here is so true, because I went through that road. I wish I could fav this more than once like Medium's claps.

Collapse
 
brycebba profile image
brycebba

Awesome article

Collapse
 
enriqueedelberto profile image
Edelberto Enrique Reyes

Thanks for the article. It's really interesting

Collapse
 
pabloocodes profile image
Pablo Villarreal

This was awesome!

I can honestly say this is the best way to learn Javascript.