I'm a heavy user of spaced repetition for language learning (I've been learning portuguese over the past two years and now I've switched to russian) and there's a lot of good advice in here.
What I don't get is using spaced repetition for all kinds of trivia and stack overflow answers like the author seems to do. I've never felt the need to do that and I don't get what it gets you. I read the linked article "How Anki Saved My Programming Career" and I still don't get it.
IMO learning stuff by heart makes sense for languages (natural languages have a significant amount of irregularities and you have to learn tenths of thousands of words to be fluent, plus the grammar on top of that). You need to be able to recall all of that stuff at a blink of an eye if you want to participate in a conversation. It also makes sense for other disciplines like medicine where you need to have encyclopedic knowledge about certain subjects without having to look up in a dozen different books.
But "Who is the teacher behind FastAI"? Is that really something worth memorizing by heart? Do you often end up in a situation like "oh my god the production server is broken and the only way to fix it is to figure out who's the teacher behind FastAI and I have no internet connection to look it up!"?
The other article has examples like "how do I get the subset of an array in JS". In my experience if I encounter this type of question it either means that I end up having to hack a JS program but it's a one-off I don't intend to actually learn the language (in which case I don't really need to bother to learn the language) or I'm actually learning the language but then I will probably encounter this situation enough times that I'll have it memorized soon enough. Programming languages are generally fairly regular and the amount of grammar and syntax to memorize is ridiculously tiny compared to human languages.
This also goes for learning things like "what is comonotonic?". Either you really encounter this word often in your work and you'll have learned it soon enough, or you see it once every other year and then is it really that big of a deal to have a quick google to refresh your memory if you've forgotten what it means?
Maybe it's just that I don't like trivia and I don't care if I can't remember some technical term while "talking to Ryan at Starbucks" to take an other example from TFA.
It's good to ask "What is SRS good for? What is it valuable to use it for?".
I haven't used it for just-outside-my-reach facts in programming. But this seems an okay use for it.
Consider http://fuckingblocksyntax.com/ -- I'd bet most Objective-C devs still need to look it up.
Maybe SRS is useful for things which are just infrequent enough to not be "memorised soon enough"?
Speed in auxiliary tasks is also good. It's possible to program while being slow at typing, but it's much easier if you can touch-type. It'd be nice if SRS provided the same speed-up from not having to look up idiosyncrasies.
“Who is the teacher behind FastAI”— This sort of thing is useful so that you can remember a search term to find other things that he’s done, or if you’re regularly writing things where the convention is to site by author’s name, instead of a title.
“How do I get a subset of an array in JS”— This is more of a long-term play; you may know it really well right now, but if you switch to ObjC development for a few years, having this sort of reminder in Anki will ease the pain of switching back to JS later.
I’m not a huge fan of two-way cards, though. It’s really important to be able to come up with the keyword for a given idea so that you can look it up when you need it. The reverse is what reference materials are for.
Agree completely with this comment. I think this kind of trivia learning could've been useful a couple of decades ago, nowadays if your phone can get you the answer in less than 1 minute, why bother? (I'm not talking about languages or such domains). Your brain "power/capacity" is limited, spend your dedicated learning time in concepts not facts/trivia.
I'd like to clarify that retrieval practice has not only been proven to boost retention but of meaningful learning [0] as well.
Thus, casting Anki as a mere tool of memorization is simply misleading.
"Educators rely heavily on learning activities that encourage elaborative studying, whereas activities that require students to practice retrieving and reconstructing knowledge are used less frequently. Here, we show that practicing retrieval produces greater gains in meaningful learning than elaborative studying with concept mapping. The advantage of retrieval practice generalized across texts identical to those commonly found in science education. The advantage of retrieval practice was observed with test questions that assessed comprehension and required students to make inferences. The advantage of retrieval practice occurred even when the criterial test involved creating concept maps. Our findings support the theory that retrieval practice enhances learning by retrieval-specific mechanisms rather than by elaborative study processes. Retrieval practice is an effective tool to promote conceptual learning about science."
I don't understand how you could not see the value in having concepts like comonotonic stored in your brain instead of in Google.
I don't get how this perspective is always the top comment in every Anki thread: memorizing foreign language words is incredible and this tool is phenomenal, but why would you ever want to memorize any other information?
Exactly. Derek Sivers gives some good examples for programming in this essay[1], e.g. overcoming a common mistake, cool trick or suprising feature of a language. These are obviously useful things to have immediately when you need them. I think the article lists some bad examples (not worth committing to memory) for programming to be honest.
> The other article has examples like "how do I get the subset of an array in JS". In my experience if I encounter this type of question it either means that I end up having to hack a JS program but it's a one-off I don't intend to actually learn the language (in which case I don't really need to bother to learn the language) or I'm actually learning the language but then I will probably encounter this situation enough times that I'll have it memorized soon enough.
> Either you really encounter this word often in your work and you'll have learned it soon enough, or you see it once every other year and then is it really that big of a deal to have a quick google to refresh your memory if you've forgotten what it means?
You've identified a key problem with today's (admittedly justified) cult-like worship of spaced repetition systems: most people don't take the natural spacing they'll encounter into account.
A while back, I tried learning languages by curating and dumping 1000s of sentences with relatively common words into Anki. It was more effective than paper flashcards, but I realized that I was wasting a lot of time and boring myself by continuing to keep words I'd encounter while reading native material in my SRS. I eventually reached the conclusion that it makes the most sense to fill the SRS only with the long tail of words where the natural spacing you'd encounter isn't sufficient to create the natural SRS effect (i.e. words less frequent than, say, the 10,000th or 15,000th most common word).
Totally agree. I also think Anki is great, but as a tool to improve the speed and quality of my software development? pretty useless I'd say.
That's like trying to write better novels by focusing on improving your typing speed. Sure it might help a little, but it's kind of missing the point.
I consider myself a maybe 5x android developer, and that has nothing at all to do with memorizing APIs or definitions of terms, or who invented what, (that's what the IDE and Google / Stackoverflow is for). I think I'm a better programmer _because_ I don't rely on memory. I rely on things like architectures, conventions, tools and tests (and also sometimes informed hunches), I don't work when I'm tired, if I get stuck I know when to take a break, I take care when naming things, I take a sceptical approach to anything that is recommended by Google (I know that sounds weird but the engineers at Google Android are occasionally brilliant but inexperienced and are learning on the job), I don't take stupid short cuts that come back to bite the team, etc.
Now, for convincing a client you know what you're talking about, or convincing a recruiter that you're a "rock star", or winning a "who's smarter" competition with an auditor? Sure. Remembering facts might work.
I share your sentiment. An encyclopedic knowledge of interview problems and related algorithms can be a boon for a career. It reflects how broken they are, IMHO, but there’s that.
To be fair it is possible to use Anki without trying to memorize the answer. Imagine you have a deck filled with algorithm questions for some interview. All you really need to do is to write something to do. Like "Write a binary search algorithm", "Write bubble sort". Then you just follow what is written on the card and decide for yourself if your answer is correct.
There is a subset of shell commands that I run infrequently enough to forget them but frequently enough for the searching time to accumulate. I did use Anki for those until I switched to infinite bash history.
So I guess that there is a sweet spot between one-offs and frequent things where SRS can help (but there are other solutions too).
If a lot of the knowledge is specialized in one area, the "trivia" (I feel this is such a negative connotation lol) has come in handy. YMMV.
- To your point, Jeremy Howard has never saved my production server (yet), but knowing how to scp, grep, cat around a list of files out has though :)
- Looking at my deck, most of the one-off questions have long half-lives. Most of these are answered as easy and are about 3-5 years before it's asked again ... personally, that's a fair tradeoff.
- Knowing certain "trivia" facts have been a hack to demonstrate expertise. It can also be used to relate to someone's experience. I interviewed a candidate once who had worked at DuckDuckGo. Having a conversation with him about experiences with "Gabe" (Who is the CEO of DuckDuckGo?) and some of his Mental Model essays immediately cut the tension.
- The opposite has also happened. Knowing about a very specific term in Django got me an offer. This has actually happened twice.
- EDIT (next this + next two points): I was thinking about this and realized I had other times when knowing trivia is a lazy heuristic for expertise. (I'm not saying this is right, just saying it happens). Knowing the hourly cost of AutoML immediately convinced someone that our team had the expertise and tentatively agreed to a MM deal. I had never used AutoML.
- Rattling off an answer to an esoteric question in due diligence changed the tone from us convincing we were technical to the person convincing him he was technical enough to do due diligence on us.
- Simpsons Paradox: Whenever I'm answering these trivia questions, I'm saying it quite confidently, which conflates the results.
- The knowledge stacks up in really interesting ways. I think of more things similar to connected graph trees.
If most of my decks were about random Jeopardy facts, then I'd certainly agree that it's not the best use of my time though ...
Anki or at least the concept of assisted spaced repitition is one of those things I wished I had come across much, much earlier in my life. Like thirty or even fourty years ago. I am pushing fifty now and, ah, the things I have known and forgotten! Now I wonder what’s the use of cramming my head with stuff. No teachers or mates or bosses left to impress. The main reason would be to have something to play with when I am (really) old and my senses have largely abandoned me.
As strange as it may sound, this is why I enjoy mysteries-- unexplained things-- very much. I should note that my definition of "mystery" is very broad. Many in my collection are rather mundane examples of unusual problems or unexplained data in different disciplines, many of which themselves are likely to have mundane (but currently unknown) explanations. The flyby anomaly, for instance.
The neat thing about mysteries is that because there is no resolution, you can rearrange the pieces many times when thinking about it. These "pieces" naturally lend themselves to the flash card metaphor. Using Anki for them means eventually some clue that you haven't included in your current pet theory pops up again to make you rearrange the pieces.
I've also used Anki for workouts: cards per exercise, spaced repetition is normal for training. It's also useful for reinforcing habits.
You can also use it to teach yourself positive thinking or other mental exercises. Use the cards to record general "truths" or positive general statements about you, life, your circumstances, etc.
One unique nicety of this is that it gives a fortune cookie feeling when you draw a card that is especially relevant to your current mindset, and feels more external than inventing a statement knowingly while in a poor state, which makes it feel more impactful.
Really, there are so many things other than rote learning for which Anki is a neat tool!
The older you become, the more you've forgotten. It is only natural to forget things, especially as they tend to be less or not relevant anymore.
I also sometimes feel old, but I can ensure both of us: we're only old when we stop learning.
Anki on a mobile phone (with only that as application) is one of the applications I envy current youth about. I really wish I had this back when I went to school, during the commute and breaks. That being said, we did use spaced repetition to learn words.
I constantly tell everyone I know in college than if I had Anki in undergrad, I would have studied 1/4 as much and had a GPA probably close to 3.8 instead of 3.2 (EE/Math major). If I had kids, I would be trying to get them to use spaced repition as soon as it made sense
I used Anki for quite a few years now and accumulated a bunch of cards. What I found:
- Anki is helpful in helping me to remember language facts (which is relatively simple in structure and not complicated)
- Anki doesn't replace the work to accomplish deep understanding.
- Converting others quotes/articles/stackoverflow answers into cards without processing in the brain doesn't help. it could be even worse because I got drowned in details and got confused when I didn't form my own system of understanding of the thing I want to learn. You see trees without seeing forest, that kind of thing.
- The process of forcing myself to simplify ideas into Q&A cards is one important help towards learning from Anki (or flashcards in general). The second important help is the Q&A is relatively easy to pick up the memory.
Based on this type of thinking, a better tool may be a way of jotting down the notes, automatically sync them with Anki database. It has to be a two way sync though because both directions have input. That way, we save the huge effort of converting ideas into flashcards.
One issue I have with Anki is that for every new format of cards I try, it takes about a year to know whether it works better or not.
For instance, I have taken a different approach to vocabulary since I found that single words (e.g. in French) were sometimes hard to recall after a very long time. I now almost always use a cloze sentence, and ideally the sentence I encountered the word in, so that I combine active recall with remembering the context, which usually settles the issue of multiple possibilities. However there is no way of knowing how this will work out in the long run. Does anyone have telltale signs that indicate if a card, although you may do well for months, will not do well past the, say, 1yr threshold?
You need to rehearse content or it will fade. However, if you know the answer 2 days later still, then it is in your long term memory (I saw a graph yesterday -probably from HN- where the recall percentage plummeted throughout the day but then stayed relatively stable). Anki has support for precisely this feature. When you start the card, you get to see dots in a color for a short while. This tells you how you perform on the card.
That being said, your question is specific to language (French in your example, but could just as well be code). Due to the complexity and possibilities you may not be able to recognize/cope with different combinations or situations.
I’ve wondered about a similar approach myself, since singular words are often hard to recall when needed, and don’t convey the subtle difference in usage between synonyms.
I also find repeatedly alternating between the foreign language word and native meanings to be jarring.
How do you choose your sentences? I mean, you mention using the sentence in which you encountered the word. But what is your source, eg. newspapers or adult-level novels?
My source is any novel/non-fiction or newspaper article I would be reading when encountering the word. I usually copy the sentence, maybe trim it a bit, and cloze on the word. The hint I give depends on the word, sometimes an English translation, sometimes a definition in the language itself, or sometimes a cognate word in a different language I know.
An additional benefit is that I remember the content of books more easily, since I am passively reminded of passages through Anki. This means I can put aside a book for months and get back into it without problems.
A problem, though, is that because I only use active recall of the word, I sometimes can't remember the meaning of the word when I encounter it, especially when the context is different. This can be quite subtle. E.g. I might put in "aborder" (to approach) in the context of "how would you _approach_ this question", but then when I read somewhere "the man was approaching" I would recognize the word, but be unable to make sense of it.
I have been trying to remedy this by sometimes choosing a more typical example sentence (from a dictionary or something) rather than the encountered one, which could be too poetic. But as I remarked, with all these changes it is hard to measure the effect in the long term.
For my language cards, I don’t have any English on them at all. They’re all Cloze deletions from either books or a dictionary, or sometimes declension tables.
I tried using Anki for learning Ancient Greek words. Didn't work for me. I need the context and then deciphering the meaning becomes a challenge, which will be rewarding. Going through piles of word-for-word cards is dull.
I guess the best way is to read as much as one can, which is obvious in hindsight. Easier said than done, though.
I posted this in the other recent spaces repetition thread, sharing here as well:
If anyone's studying Japanese, I made two iOS apps for spaced repetition systems specializing in the unique needs of learning Japanese.
The first is a flashcard application called Manabi. It uses a similar algorithm as Anki with a priority on UX.
The other is Manabi Reader, which complements the flashcard app. It curates feeds of interesting short-form content, has one-tap dictionary lookups, optional furigana injection and JLPT level tagging, and it lets you create flashcards from the words you're learning as you read.
Glad to hear any feedback. I'm currently working on word tracking functionality for Manabi Reader, to track your reading progress and let you see which and how many words in an article you should know already vs. words new to you. It’s been getting great feedback and growing usage so I’m interested in pushing it further.
(Sorry, no Android port coming. They’re native iOS apps and would have to be rewritten from scratch.)
Is there a good repository or aggregation for tech-related anki decks? I was thinking about creating new decks for books I'm reading to keep the contents in my memory but for some common topics someone might have already done the work of creating a deck.
Stuff like:
* what are the four golden signals for monitoring services
If you do come across pre-created flashcard decks on various topics, consider adding a link to them in this repo? We've just added FlashCards as a separate section for each topic: https://github.com/learn-awesome/learn-awesome
SRS folks recommend creating your own decks. The effort to figure out what should go in the card, how you should phrase it, etc is likely an important aid in learning.
You've inspired me to kick back into high gear with Anki, but this time focus it on my software career. I was a hardcore Anki freak back from 2008 to 2011 when I used it to master Japanese.
I found hacking on a lot of systems that my software career was going well enough, but lately after just having switched stack and feeling very behind where I ought to be my thoughts have been turning to Anki again.
I've made a decision this year to stop building random projects and to start building my fundamental knowledge down to a scary deep level. So far I've gotten kind of distracted and started building a random project again (the perils of being a low-c individual), but this time I'm approaching the learning side of things different.
Currently I'm using Workflowy to learn particular technologies. Outlining each technology starting with a particular template that breaks things into executive summary, concepts, components, installation, configuration, operation, debugging, questions, links. I'm finding this to be a fantastic way to over time flesh out a solid mental model and from there I want to Anki the shit out of the entire mental model.
I'm definitely finding Workflowy to be a secret weapon for learning. At a glance I can see which branches of the tree are lacking detail, so that informs me how deep my mental model on a particular aspect of something goes and where I need to work on it.
Anki is just ridiculous when you're committed. You feel truly unbeatable. It'll kick your ass but in the end you systematically claw your way to the top of the mountain.
This may be getting tangential, but I'm curious: what's the big sell for you with Workflowy vs. other similar outlining tools? I've personally shifted my outlining over into org-mode and it feels like I'm just a bare intermediate user there; wondering if there's functional advantages that Workflowy retains.
For one thing, it was the first tool I discovered that just goes infinitely deep and I can zoom in an out. I was sold instantly. I haven't tried org-mode, but certainly in the year or so I've been using workflowy I've found the mobile app (I use Android) to be an excellent compliment to the web app and I've found the sharing features really handy too when I have a great node in the document I want to share in either a read-only or collaborative way. I've always got very easy access to it and the speed of navigation is fast.
I recently took the time to learn the keyboard shortcuts. That was surprisingly quick, but I'm faster in it already. The search feature just works amazing I reckon. Especially in combination with using tags. Recently I've also taken to putting things in any node where they are relevant and not just in a single place, but the information will be housed in one node as a source of truth and the other nodes just link to that node as each node has a link that you can copy for internal linking within the document.
I just love it. The whole thing just works for me. The only thing I really want as a built in feature is the ability to display images. I read on their blog you can do it by essentially using markdown image tags and a browser extension which parses them and inserts an <img> tag. I think that could be pretty sweet.
I think the problem with spaced repetitions for most people is the difficulty of creating questions for every little bit you want to remember yourself. It would be nice to use card stacks created by others. But if you try to use someone else's cards you just lack the context.
On the other hand, articles and courses you can find online are perfect for learning something for the first time. But they don't have repetitions.
A better implementation would be online courses and articles with question cards placed right into them. That way you can learn from scratch and also have the benefits of spaced repetitions.
And the same applies to study notes. It's probably better to make study notes and question cards in the same place.
OK, here's a shameless plug - we've made it at https://learnitfast.io
If you're interested you can try it out. And we would be very thankful if you give us any feedback.
I am not a hardcore anki user but in my experience the trick is to avoid converting learning materials to anki, convert learned materials into cards.
first learn what you want to learn inside out, make some examples for yourself then try to convert your knowledge into a card. In this way you will know exactly what you should write down on the card.
> Could any hardcore Anki users here share their strategies for converting learning material into cards?
Anki uses a Sqlite database. If you have practice exams, you can scrape these (for example with Python + beautifulsoup) and put the results in a Sqlite database which you can then load (and export if you wish). The legality of this practice is your own responsibility.
> Whenever I try to use Anki, I find it hard to convert knowledge into discrete cards, especially around code.
With regards to code I suppose on-hands practice is the best way to learn that. The difficulty of making your own flashcards is well known, and the article addresses it. I'd like to add that the time you spend on making good flashcards isn't time wasted. You're learning the material while you make your own deck! You also ensure you understand the material. That being said, I do share my decks.
1. Read the paragraph and find the relevant idea. This should be one basic fact you'd like to remember.
2. Make answers that use as few words as possible. If possible, the answer should be one word or phrase. Sometimes I make lists/tables as well, but the majority of cards are single word/phrase answers. A huge part of any discipline is simply understanding the terminology.
3. If the term is really important, make two cards that ask the same question both ways. In other words, "Q: What is hacker news? A: Social media site started by Y-Combinator." "Q: What is a social media site started by Y-Combinator? A: Hacker news."
4. If there are multiple closely-related items, make a card where the answer is a table. Also make cards of individual items in that table.
What's a good strategy if you're not always disciplined at doing daily reviews (besides "be more disciplined," of course)?
When I use Anki, if I miss a week of reviews, then it feels impossible to restart again. That first review will have a mountain of cards that I've forgotten, and since it's hard to relearn that many things at once, the next review will be even worse, and so on.
Is there any way to tell Anki to put some cards on hold in order to limit the number of tenuously-known cards? That would be a killer feature for the less disciplined.
The basic idea is that Anki lets you create decks using search terms, so you create a deck of cards that came due in the past few days and study those. You can then go through the backlog at your own pace.
For listening exercises I use subs2srs which takes an arbitrary video file with subtitles and turns it into a CSV file that can be imported into Anki and it also generates audio snippets and snapshots. The tool assumes that you have two subtitle tracks but in my experience the subtitles don't line up perfectly so I only listen to the audio and then try to translate it into English which I then compare with the answer.
I've been aware of Anki for a long time, but since I wasn't studying foreign languages, it really wasn't on my radar. Several months ago I saw an article about using it for more academic purposes, and I've taken it up.
Lots of good advice, but my one additional tip: new cards I make are cloze by default. It's basically just Front + Back on steroids.
The Anki card viewer is very customisable, because it's actually a web browser (on Mac it's an old Safari). Most pre-modern CSS and JavaScript work. Data can be stored in card fields, and inserted into JavaScript tag like old-school template-based web development.
Anki is super hacky for this purpose so we’ve actually developed into software purpose built for applying Active Recall and spaced repetition to what you read. (Readwise)
I'm just keeping lists of the books I've read, games I've played, and movies/series I've seen. The list is accessible from the CLI so I can perform voodoo on it. I've been doing this since early '00s. I don't see the point in remembering this data. There's a whole lot of other things I'd love to remember though, programming related for example...
I’ve found maintaining a Leitner box with physical cards much more engaging than any of the software, probably because our brains intuitively understand physical things better.
You have compartments that get bigger as you go farther back in the box. New cards and incorrectly answered cards go in the front of the box; every day, go through those and move the correct ones to the next compartment. If there’s not enough room, take out enough to make the new cards fit and review them, putting the correct ones in the next compartment down the line, and the incorrect ones in the front of the box. Repeat until everything has a place.
Then, as part of normal studying, Mae cards for the new material you’re learning and put them in the front of the box.
Thanks! Warms my heart that someone is willing to subscribe :)
I've been meaning to add it. I'm currently switching out some of the tech infrastructure to improve readability and improve search and then will get to this, promise!
What I don't get is using spaced repetition for all kinds of trivia and stack overflow answers like the author seems to do. I've never felt the need to do that and I don't get what it gets you. I read the linked article "How Anki Saved My Programming Career" and I still don't get it.
IMO learning stuff by heart makes sense for languages (natural languages have a significant amount of irregularities and you have to learn tenths of thousands of words to be fluent, plus the grammar on top of that). You need to be able to recall all of that stuff at a blink of an eye if you want to participate in a conversation. It also makes sense for other disciplines like medicine where you need to have encyclopedic knowledge about certain subjects without having to look up in a dozen different books.
But "Who is the teacher behind FastAI"? Is that really something worth memorizing by heart? Do you often end up in a situation like "oh my god the production server is broken and the only way to fix it is to figure out who's the teacher behind FastAI and I have no internet connection to look it up!"?
The other article has examples like "how do I get the subset of an array in JS". In my experience if I encounter this type of question it either means that I end up having to hack a JS program but it's a one-off I don't intend to actually learn the language (in which case I don't really need to bother to learn the language) or I'm actually learning the language but then I will probably encounter this situation enough times that I'll have it memorized soon enough. Programming languages are generally fairly regular and the amount of grammar and syntax to memorize is ridiculously tiny compared to human languages.
This also goes for learning things like "what is comonotonic?". Either you really encounter this word often in your work and you'll have learned it soon enough, or you see it once every other year and then is it really that big of a deal to have a quick google to refresh your memory if you've forgotten what it means?
Maybe it's just that I don't like trivia and I don't care if I can't remember some technical term while "talking to Ryan at Starbucks" to take an other example from TFA.