Fork me on GitHub

Ahad Bokhari

Spaced Repetition to Learn How to Program Effectively

Edit   ·   697 words

Do you have 10,000 hours on your hand to become a master at something? That’s how long it takes, roughly 3 hours a day for the next 10 years. With this simple technique you now can significantly cut out alot of that time and turn your impatient dream into a reality.

Code School, Khan Academy, Code Academy and countless other websites aim at helping you “learn by doing”. How often do you actually retain that information is what you should be asking yourself and most importantly how much have you learnt and then immediately forgotten as it’s not committed to memory. You’ll only remember it if it’s continuously brought to the forefront of your mind repeatedly.

If you’ve ever worked with programmers you’ll notice that they have alot of power at their fingertips and can recall huge amounts of information, commands or functions effortlessly. It makes you wonder why. Well i sat down with one of these programmers the other day and he actually spoke with me about one of the key factors of his success.

##The Janki Method With Spaced Repetition

It follows the principles of the Janki Method by Jack Kinsella and the underlying principles behind is spaced repetition learning. The one tool I’ve also been using and you should check out is called Anki and you should go ahead and download it.

The definition of spaced learning on the Wikipedia is as follows:

Spaced repetition is a learning technique that incorporates increasing intervals of time between subsequent review of previously learned material in order to exploit the psychological spacing effect. Alternative names include spaced rehearsal, expanding rehearsal, graduated intervals, repetition spacing, repetition scheduling, spaced retrieval and expanded retrieval.[1]

In a broader context most people use spaced repetition learning to quickly learn a second language. The fact that programming is exactly like learning a new language, this technique can be extremely effective. The most important thing to realize is that you need to get used to the syntax of any given programming language and that’s where Anki will help you a great deal.

##Anki

I’ll focus on Anki in this short post, but feel free to give Jack’s full blog post a whirl if you want more in depth information.

Before doing anything the first thing you have to do is start learning. Obviously you can’t use flash cards without having any information. So you’ll be making a bunch of flash cards with the question on the front and the answer on the back. Be careful to ensure that you extract the most important information and break them into small logical forms so that you have the key facts.

For example if you’re learning Javascript, and you want to make sure that you know the syntax to a function:

Your front of the flash card or quesition would be:

What is the syntax of a function expression?

The back of your flash card would therefore read:

JavaScript
1
2
3
4
5
6

var yourFunction = function () {
// do stuff
yourFunction = function() {return false;}
};

And so on and so forth. I would detail more flash cards but I really don’t have the time and am sure if you’ve gottent this far you can figure that part out yourself. For most efficient results you have to fire up your spaced repetition program daily and spend about 20 mins goign through the flash cards (even on weekends).

You can really remember thousands of facts, functions, methods techniques daily and in no time you’ll see how you everything stays fresh in your mind. Note that you can download other people’s flash cards as well so see if that helps. Personally that would save you alot of time, but it would take the raw fun away from learning yourself.

###References & Resources

Economics of Learning- Super Memo
Janki Method - Jack Kinsella
Want to Remember Everything You’ll Ever Learn? Surrender to This Algorithm - Wired
Spaced Repetition - Gwern