The Easy Way To Learn Hard Stuff

Three steps to gain a new superpower.

The last couple of years I’ve spent a lot of time teaching myself web development and machine learning.

While the subjects have differed a lot — from Javascript, Node and React to Python, Scikit Learn and neural networks — my approach to learning has stayed the same.

And even though it’s just a simple (almost banal) three step technique, it has been critical in helping me to go from amateur to professional web developer in 5 months.

So I’ve decided to write a little bit about it, in case other people will find it useful.

I’m writing this article as if I was able to send it to the 2012 version of myself, as I wish I had a clearer view of this as I started out.

Step 1: Use it before you know it

The first step you need to take in order to learn a new technology is to simply start using it before you understand it, which is a much better approach than trying to understand it first.

However, as you don’t know anything about the subject yet, you can’t do this on your own.

Justin Mitchel’s Django course is a perfect ‘do before you understand’ tutorial.

What you need is a video tutorial where someone leads you through building a small dummy product. Look for tutorials where the creator goes through every single line of code, including the setup, and watch it while coding along. Make sure you’re able to run the project as well, at every step on the way.

Expect around 10 minutes of video to take an hour to get through.

Also, a good amateur tutor at YouTube tend to work better than a MOOC, which might be too thorough at this point.

The opposite of this step would be to read theory about the subject. This has never worked for me, as I get too bored and find even beginners books to be too detailed. So I categorically stay away from books and documentation when starting out.

When going through your chosen video tutorial, you won’t always understand what you’re doing, which can be unpleasant. Try not to worry too much about this. If you don’t understand something, write it down and save it for step 2.

The whole point of this step is to follow through the tutorial regardless of your confusions and lack of understanding.

You see, the benefits of starting this way outstrip the downsides:

1. Building from day one

First of all, you actually create stuff from day one, which is more rewarding than reading theory. And the more you enjoy something, the easier it is to stick with it.

My first ever Node.js server, which I have referred back to countless times.

2. Gives you sample code

In addition, it gives you sample code to refer back to in the later stages of the learning process, which is highly useful.

I always go back to the sample code multiple time to refresh my memory; each time with improved insight into the subject.

3. Discover your unknown unknowns

I’ve also found that this is the quickest way to discover in which areas you’ll need to focus your efforts on.

You see, before you start, you don’t even know what you don’t know, so you have no way of knowing out which parts of the technology you’re going to struggle with and thus need extra attention. You want to uncover this info as soon as possible, as they are roadblocks you need to get out of the way.