Why I’m writing this post
I decided to revive this blog in 2024. What better way to start than correcting my own post from 2021?
Anki in academia
I was an Anki power user in my college years. I wrote an emacs package to quickly create cards, and a blog post about the best Anki resources. One day I read a blog post called Janki Method and decided to start every programming journey by Ankifying the textbook.
Anki really shines in language classes. It’s also popular with med students who have to memorize anatomy. But these are artificial situations where you know the exact nature and scope of the facts to memorize ahead of time. Real life is nothing like that. And, in practice, Ankifying textbooks was a terrible way to teach myself programming.
Don’t get me wrong, if you must memorize a known set of atomic facts, I still think SRS is one of the best tools. Michael Nielsen cites it being more efficient than conventional flash cards by a factor of 20. He and Gwern remark on the long term decay of daily review time: you can maintain a deck of tens of thousands of cards in less than 20 minutes each day. Anki is efficient, there’s no denying that.
But efficient at what? Anki’s efficiency is so alluring that it blinded me to the real problem: selecting what to learn. The truth is that you don’t need to memorize every piece of syntax, construct, or keyword in a language, and in my experience, trying to do so is counterproductive.
I am proficient in a few programming languages and comfortable in a long list of other technologies. In my experience, even the best language tutorials and textbooks are stuffed to the brim with context that is basically irrelevant. They should be referred to as a reference when needed, not learned from systematically.
Need based learning: the obvious method
I’ve been told countless times to “Just build something”. But I’m still writing about it here because ignoring that advice came at great opportunity cost to me: I’ve failed at learning multiple programming languages by ignoring this advice.
Lead with need
The best way to learn is by working towards a goal and learning the bare minimum necessary to achieve that goal.
This is the most efficient way to learn because you only learn what you need to. By definition.
Furthermore, ‘Perfectly-Spaced-Repetition’ is built into this strategy: If you need to refer to a fact more than two or three times, you will start to memorize it.
Need based learning is not only more efficient, it drives better learning outcomes because your real-world goal is a better motivator. I try to build something that solves a tangible problem.
Learn the bare minimum?!
Aren’t there major drawbacks to this method? Not really in practice. Yes, in theory I could be missing some important context. I could also be skipping some ‘required’ drilling and rote memorization. I sometimes worry about failing to develop the muscle memory necessary for some skills.
But I don’t think these fears are borne out in the real world.
Lead with need, supplement with curiosity
I still learn stuff that’s not related to a specific goal, but this reading is interest-based. As my knowledge in an area grows, context becomes more interesting. I start to see how I can apply and combine it with the existing knowledge I have.
Being efficient with my most precious resource
I no longer practice ‘systematic learning’. I don’t read manuals cover-to-cover. I don’t Ankify things and I don’t drill. But I’m still learning all the time. Don’t misunderstand what I mean by bare minimum. This isn’t about being lazy, or learning less. It’s about efficiently allocating my limited time to learning that matters. This leads to better learning outcomes, better retention, and better connectedness in my knowledge.
Man’s Search for Meaning
In Viktor Frankl’s classic 1946 book, he describes how human vitality, energy, and happiness are intrinsically linked to directional movement towards some goal. He argues against incomplete visions of motivation where humans propel themselves based on things like will, discipline, and drive.
Imagine floating alone on the deep blue ocean with a pair of flippers; your legs are your willpower. Set goals, and suddenly you are waterskiing at 80 knots behind harnessed dolphins with jet engines.
The same is true for learning. Brute force can get you part of the way there - such as reading the Rust book cover-to-cover (which I tried in 2020). But a goal will pull you smoothly and quickly through the things you actually need to learn.