Mikołaj Koziarkiewicz

Previously

In the starting article, I’ve provided a quick overview of what Spaced Repetition means, and talked about the tools that can facilitate it. Now, let’s see how we can put these tools to good use.

The Scheme

Based on using Anki for knowledge retention, I’ve developed a learning scheme to keep myself from forgetting the stuff I’d rather remember. Given a new source material (e.g. a book, an online course), here’s how it looks like.

Step 0: Choose what to learn

Probably the most important step - you need to consciously, and responsibly, ask yourself the question: "what knowledge do I need to retain effectively"? This is something that you optimally should work out for yourself.

However, I can provide three pointers:

  • The best fit should align with one of the two categories I’ve described in the introductory sections.

  • You already need to understand whatever you’re trying to recall - the scheme I’m describing want help you with that.

  • Don’t start with adding "feel-good stuff" - knowledge that you always wanted to recall off the top of your head in order to impress yourself. You’ll most likely, eventually get frustrated and see the exercise as a waste of time. Do begin with applying this learning method to things you actually need.

Step 1: Highlight Key Passages (Optional)

This is of course only relevant for textual sources. I still recommend it whenever you’re learning from those, because it helps you stay in the flow.

Step 2: Create Mind-map-like notes

Regularly, for each piece of content (video for online courses, chapter for a book, etc.), add notes to a mind map describing the thing you’re currently learning about [1].

This may seem like a superfluous step, but it helps in three things:

  • it actually helps with knowledge retention by preliminarily organizing it,

  • it makes the next step go faster, since you don’t have to re-read/-watch the entire content,

  • most importantly, it helps to verify whether you’ve understood what you’re learning about. You will very likely to see that you’re e.g. writing nonsense at this point, and it’s less frustrating to identify it and fix it than in the next step.

I say "mind-map-like" because someone might argue that the notes might not necessarily look like a "proper" mind map, i.e. there are no colors, graphics, etc. Nevertheless, I think the form of a tree, which mindmaps take, is the most conducive to general, rapid note-taking.

For the actual mind mapping I prefer to use Freemind. It’s open source, free, multiplatform, and offers a set of convenient keyboard shortcuts for quick note-taking.

freemind example
A mind-map example - an (outdated) mind map of Akka documentation.

Step 3: Extract flashcards from the mind map in Anki Desktop

Now that you have rapid-access notes, it’s time to go through them and create the flashcards. We’ll mostly be dealing with "classic cards", i.e. with two faces - an entry, and whatever you should recall according regarding the entry. However, there are also other types: reversed (where the "entry"-"recall" relation is bilateral, effectively doubling the given card), and cloze completion, where you "fill" in text (useful for e.g. learning phrases in foreign languages).

Also, you can insert almost everything into a card, including:

  • plain and formatted texts,

  • pictures,

  • sounds,

  • LaTeX, including complex formulas in math mode,

  • source code, with the correct plugin [2].

See the figure in the introductory section for some examples.

Step 4: Learn from flashcards in the Anki Mobile Client(s)

anki learning example
Reviewing a card in Anki.

Whereas the Desktop client is more conducive to creating (and reviewing) cards, I find it much better to actually learn by using the Anki software on mobile devices (iOS/Android [3]).

Principally, this is because, with the mobile client, you have less distractions. And trust me, during the beginnings, once the initial enthusiasm wears out but before you see tangible benefits, you will need all the focus you can get.

Another, equally important thing is that you will have access to the cards wherever you go. This makes it an easier to form the habit of reviewing the cards daily, especially in the case of the Android client, where you can also add a widget to your home screen.

Step 5: Review, Heal, and Grow your flashcard "Deck"

Your cards, once created, should not be treated as if set in stone. Splitting a card, improving it, suspending it, or removing it altogether should all be options you need to consider.

Coming Up

In the next installment, we’ll go from theory to practice and see how it pans out.


1. I usually keep a map e.g. per book.
2. Did I mention Anki has a large plugin directory?
3. While the Android version is completely Open Source, the iOS version is paid-for, and, in fact, the latter is currently the main source of monetary support from the project.
Mikołaj Koziarkiewicz

Intro

Have you ever:

  • regretted that you only remember some bare trivia from a course or a book that you studied several months ago? Or maybe even stuff from university/college that you wish you’d recall now?

  • constantly annoy yourself with looking up some implementation detail, API definition or another fact, that you need every couple of weeks, but juuuust manage to slip your mind the next time you require it?

  • feel like learning new stuff (perhaps to progress beyond your current job) is a Sisyphean task that doesn’t net you anything?

If so, than this series of articles is for you.

The Perils of Ad-Hoc Learning

The nice thing about living now is having slightly more free time for your basic non-survival needs. The absolutely scary thing, in turn, is that the amount of information you have access to, and can gain, is simply overwhelming. Understandably this becomes even worse for IT professionals, what with a new library/framework coming out every week [1].

Of course, a lot of this information is fire-and-forget. Another portion you use day to day and, by this virtue, remember without any problems.

What’s left can be divided into two broad categories.

One is knowledge that you use in irregular, but relatively frequent intervals. An example would be an API quirk that you keep re-reading about every couple of weeks. Irritating, isn’t it? Also wasteful.

The other contains "core" knowledge - stuff that you’re not necessarily using directly, but nevertheless benefit from recalling it readily. Forgetting this kind of information is much more insidious - you just end up doing stuff less effectively; or, perhaps one day you suddenly realize that you completely forgot all the things you wanted to learn from the course you did half a year ago.

But, but, the Internet!

A commonly raised counterargument against investing time in recall methods boils down to:

Why bother? Everything is on the Internet anyway, if I don’t remember something, I’ll just look it up!

And sure, you can do that. But how much does it cost you?

Here’s an example: remind yourself of the last small fact or info tidbit that you required and you needed to search for. Now, take your favorite stopwatch app [2], and try out finding the answer on the Internet.

I’d be willing to bet that for most of you, the total time between switching away from this article, and returning to it after searching will be slightly north of 10 seconds.

That’s not a lot, right? But those search bits add up during the day, and you need to factor in the context switch costs [3].

Now try to recall the answer again, from memory. You, quite likely, still can, and it probably took you less than a second to remember. That is an order of magnitude of a difference. Making a somewhat strained analogy, it’s quite similar to the difference between reading from disk and reading from RAM.

Of course, you’re still spending time by putting additional effort into knowledge retention - but that’s dedicated time, as opposed to hacking up your work routine into disjointed bits.

Spaced Repetition - a solution

Obviously no one is going to sit around every day working on remember their cumulatively growing knowledge by rote.

But there are shortcuts to do something very similar much more efficiently.

The concept of Spaced Repetition offers one such shortcut. There are many implementations exploiting the idea, but they all boil down to taking advantage of particularities of the human brain in order to achieve effective recall of various facts and concepts, with relatively minimal effort.

An SR-based approach

One such implementation is Anki. It’s flashcard-based spaced repetition software. Its documentation can be found here, and it’s available for download on:

The tl;dr version of the process of working with flashcards and SRS looks like this:

  • you create a flashcard. In the simplest version it’s a note with two faces: the prompt for what you want to learn, and the thing you want to learn. Here’s a couple of examples.

anki cards overview
A selection of Anki cards: normal text, source code, image, LaTeX formulas.
  • after several initial repetitions, Anki prompts you with the cards, in increasing time intervals: initially a couple of days, then a couple of weeks, months, and so on. At each repetition, when viewing the answer, you are prompted to choose one of the following options:

    • "Again" which means you forgot about the entry, and need to reset the learning process,

    • "Good" meaning you have good recollection, i.e. the vanilla option,

    • "Hard" implying thatas you’ve sorta learned, but aren’t quite confident, leading to a shorter time to repetition,

    • "Easy" that tells the system to extend the time interval to a greater extent than with "Good".

As you have probably figured it out, the biggest benefit from this system is that the time intervals are managed automatically, and you get automatic reminders to repeat your cards (which is especially useful if you install the mobile client).

Local Flavor

Anki’s repetition selection algorithm is a derivative of SM2, which was invented in Poland.

Coming Up

In the second episode of this series, we will talk about a learning scheme developed empirically by Yours Truly, that takes advantage of Anki when acquiring technical (and other) knowledge.


1. and a Javascript implementation following up in 5 days.
2. I expect very few people still have actual stopwatches, digital or analog.
3. Also, let’s not kid ourselves, you probably took this as a challenge and done the search than you would normally do under this kind of situation.