Jan 14, 2021

For a long time now, I've been trying to optimize how I learn. I often find myself needing to learn something that's very deep in a short period of time (on the scale of days or weeks instead of months or years). In trying to find something that works, I've stumbled upon two concepts that make learning much simpler 1 and faster: spaced-repetition and what I call jumpstarts.


You can think of a jumpstart the same way you might think of jumpstarting a car. When a car's battery dies, you can't just give it little periodic bites of energy and expect it to run again. No, you must pass a lot of juice through that battery so that you wake up all those drained cells. After the car is running again, you then give the battery bits of energy here and there to keep it going.

Jumpstarting learning is similar in that the common approach to learning is to learn things a little at a time and hope it all makes sense at the end. But that's like trying to solve a puzzle by exposing yourself to one or two puzzle pieces a day. You're not taking advantage of the powerful pattern matcher that is your brain; you're actually limiting it. You can't really give yourself little nibbles of facts here and there and expect to learn a subject in a timely manner. Most things are circular and one fact depends on another. Things won't make sense until you learn all the core facts.

Imagine learning how to read a different language but you only learn five or so words per day. It'll be a while before any sentences of note make any sense. What you want to do, instead, is to learn the most common 1000 words in that new language within the first few days and then use the rest of the time to test yourself and practice using those 1000 words. With 1000 words as your base, you'll be able to grasp more of what you read and won't feel lost most of the time. This will make your practice sessions more effective, since you are mostly just reinforcing what you already know. You have already learned most of what you need to know, now it's just about retaining that information.

Retaining information, or more accurately, the fear of not retaining things previously learned, is why most people ration their learning in the first place. What's the point of learning 1000 words if all you'll remember is about 20 of them? Wouldn't it just make more sense to learn 20 words at a time and be sure that you'll remember those? It's a valid concern, but you can retain all 1000 words or whatever other information you just learned. There's no cap on how much your brain can learn in a given time period. You're capped more by your energy levels and how much you can download into your brain (e.g., your reading rate). Retention is separate from learning in that we are trying to remember things we already know. The goal here is to not forget and that can be accomplished through spaced repetition.

Spaced Repetition

I like to think of spaced repetition as an optimized maintenance schedule. You create some flash cards and you study them only when you are about to forget them or when they are most difficult. This reinforces that particular memory pathway and extends its life even further. You keep extending those pathways until you are certain to remember the information for however long makes sense (years/months). The program that I use for this is Anki. It's free on desktop and Android, but paid on iOS (completely worth it as it supports the developers).

Whenever I learn something new, I try to get a text version of the topic. Videos and audiobooks are nice, but they aren't easy to transform into flash cards form so I tend to first use text and only use video or audio as supplements. I take notes of the important facts as I go, usually just copying them verbatim or paraphrasing longwided sentences. When I reach a stopping point, I transform those notes into flashcards using questions or cloze format depending on context and feel.

Some examples are probably warranted. I'll use some from a recent session where I was learning how freezing objects works in JavaScript. The notes that I took while reading were as follows:

Object.freeze() - JavaScript | MDN - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

A frozen object can no longer be changed; freezing an object prevents new properties from being added to it, existing properties from being removed, prevents changing the enumerability, configurability, or writability of existing properties, and prevents the values of existing properties from being changed.

The result of calling Object.freeze(object) only applies to the immediate properties of object itself and will prevent future property addition, removal or value re-assignment operations only on object.

Object.seal() - JavaScript | - MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal

The Object.seal() method seals an object, preventing new properties from being added to it and marking all existing properties as non-configurable.

Comparizon to Object.freeze():

Existing properties in objects frozen with Object.freeze() are made immutable. Objects sealed with Object.seal() can have their existing properties changed.

I would transform the above notes into the following cards:


In JavaScript, _________ prevents properties from being added or removed and prevents the values of existing properties from being changed.

Here, all I expect of myself is to guess either "freezing an object" or "Object.freeze()" for the blank spot.

For Object.seal(), I don't care too much about it's specific definition; I mostly care about how it's different from Object.freeze(). So I chose to use a front-back card instead of a cloze:


What's the difference between Object.freeze() and Object.seal()?


Both prevent properties from being added or removed, but Object.seal() allows you to change the value of existing properties whereas Object.freeze() does not.

Hopefully you can see through the details of the examples to the method behind them. The key is to identify the things that you care about and only you can know what matters to you. To a JavaScript expert who uses Object.freeze() on a regular basis, it might not even occur to them that this is something worth taking notes on. Whereas for someone just learning JavaScript, they might skip Object.freeze() altogether because it seems like some arcane part of the language they would never use. But to me the details are important because I tend to use multiple programming languages and I often forget how certain features work across languages. So make sure you create cards that focus on the things that you care about remembering as those will be more effective.

Tips for effective spaced repetition practice

The following are best practices on using spaced repetition that I've gathered from experience and from scouring the Internet. You're mileage may vary, but I've found these practices to be very effective.

  • Use a single deck. Though Anki allows you to create multiple decks, I find separating things to be useless. The real world doesn't have nice little categories. You just need to remember things as they come up. One deck simulates this aspect of the world. And a single deck is also easier to manage -- all cards go in the same deck. Nothing to think about.
  • Create cards right away. Don't let things sit in your notes (or worse yet, your brain). Notes are useless if they aren't turned into cards because you likely won't go back and read them. And the whole jumpstart process will be wasted if you don't start practicing what you learned within a few days. The ideal time to create the cards is right after a learning session has ended.
  • Practice daily. Maintaining what you've learned is the easiest part of the process and takes no more than 10-15 minutes a day. It's also the key to making the whole thing work, so don't skip days.

One thing to note is that the process of creating cards can take some time. Not too long in the grand scheme of things. But if you take notes on a whole book, it might mean 100-200 new cards that you are creating. That can seem like a lot and it is tempting to procrastinate on this part. Don't. Momentum is everything. Become an unfeeling robot and mechanically work your way through it if you have to. Copy-paste your notes into cards if you have to. But the practice matters. You just took in a lot of information and your brain is now primed to remember that information. If you don't stamp in that information with practice, then your brain won't consider that information important enough to remember. If you wait too long, you'll likely have to start the whole process over -- this time with a little voice in your head whining that you should already know this information. Bite the bullet and do it the first time. Think of it as a way of capping off your learning and passing it off to your memory.

Sleep, Motivation, and Caveats

The Magic Of Sleep

Perhaps the main benefit of frontloading all your learning to a few days is that it makes sleeping more effective. When you are learning, that effort primes neurons in your brain to recall that information later. During sleep, those neurons rewire so that the information is best synthesized in a way that you can recall it. Your brain reorganizes all the information it already knew to take into account the new inputs you just gave it. That's why it's important to study all the material upfront and also to take notes on what you consider important -- you're giving your brain all the puzzle pieces so that it can rearrange them to make sense while you're knocked out. This powerful aspect of sleep is why I believe in condensing the learning phase to just a few days whenever possible.

Finding Time

One obstacle that's likely to pop up is scheduling conflicts. Most people find it hard to find an hour let alone a full day to learn something new. There are so many commitments pulling at us that even a couple hours reprieve is hard to get. But try to clear at least one day a week for this kind of thing. If not one day a week, then maybe one or two consecutive days each month. Just keep in mind that these are not chill days by any means, so you might not want to pick a day you typically rest unless that's your only choice.

The Work is Unavoidable

While it may sound impressive to learn a concept that would take 3 months in just 3 days, those 3 days consist of a lot of work. Reading hundreds of pages when you are only used to reading 20-30 pages at a sitting takes a lot of discpline in order not to quit part way through. The days after that initial learning period are also crucial. You need to make sure that you are actually putting in the time to reinforce what you learned. Most of the time this just takes a few minutes, but sometimes it can be longer depending on the nature of the skill that you're learning.

It's not all about discipline and willpower, fortunately. One nice benefit of frontloading your learning is that it often matches your motivation levels. When we set out to learn something new, even something we aren't necessarily passionate about, our motivation is high. But as the days pass, our enthusiasm for learning diminishes. By doing most of the work upfront, we make sure we don't waste any of the inherent motivation that novelty brings with it.

Lastly, when you first try this method, make sure to pick something that really piques your interest. Maybe a passion that you've been putting off or a something you're just dying to try. The higher your internal motivation, the better. Because it will be difficult. But what's worth doing that isn't difficult?

1 Simple =/= easy.