3 ms·
Memorizing a programming language using spaced repetition software (2013)
- thundergolfer 5y agoI finally picked up this habit 3 months ago, and I can be yet another person with testimony that the hype is real. I have created around 350 cards in the past three months, with topics such as Python, Java, system design, statistics, napkin math. I’ve significantly benefitted from the at hand memorized info in interviews and in day to day work. I suspect that over time doing my job without Anki will be almost as objectionable as doing it without source control.
- rg111 5y agoI have done this with vim commands. It worked much better than "look up command when needed" approach. My vim-productivity has skyrocketed. I also use spaced repeatation to remember even the most basic concepts of some of the topics I am learning. This helps one immensely when one is learning in isolation. When you are in college, bootcamp, or office, you hear terms, their definition, uses so regularly you fail to appreciate how much this helps you "get used to" something new to you. Spaced Repeatation is good even when you are trying to get an idea about the lay of the land. Andy Hunt called this "training in R-mode" in the book Pragmatic Thinking and Learning (PragProg). Before I listened to podcasts, watched talks, read Preface of books to get an overall idea. Now I do that plus I use Anki. This approach is much better. Anki should be a regular habitz though. Now, I am planning a simpler SR implementation for longer notes. Where you can't really use Anki. I am thinking of creating an Airtable formula that will email me stuff to review that day in the morning based on a document's date of creation. Or I might go with a Flutter app (would be a good excuse to learn it.) I will most likely use 1 day-1 week-1 month-each month, or 5 days-2 weeks-1 month-2 months approach. Spaced Repeatation works better than one might think. While reviewing simple fact-containing flash card on Anki, I have created deeper connections, had new insights, and got new ideas. I did not really expect these. So, I will highly recommend SR. Preferably with Anki.
- noneeeed 5y agoCould you point me to the vim deck you used? I've generally taken the "learn as I go" approach but I'm sure I'm missing loads of good stuff that I don't know I'm missing.
- karmakaze 5y agoIsn't looking it up when you need it and sometimes remembering without looking it up already spaced repetitio? That's how I learned every language from machine and assembly to F#. Only C I learned by reading K&R cover to cover. And maybe Go with the online tour. Learning a language is like learning the rules of Go (board game). It's nearly trivial. Applying it is a lifetime.
- thundergolfer 5y ago> Isn't looking it up when you need it and sometimes remembering without looking it up already spaced repetitio? No. Spaced repetition takes a structured approach to tackling the 'forgetting curve'. Relying on chance (ie. 'when you need it' accessing) to refresh info is not nearly as reliable.
- karmakaze 5y agoYes, true. This is why I can never remember when '!' after a ruby method name does the thing I think it should, or the opposite. I haven't considered this to be worth taking time to commit to memory. Sure it would be faster, but each time I do the 5 second search. I've gone through so many languages in so many jobs/years that it's a very substitutable part of my thought processes. It would be like knowing assembly language when thinking in C. Knowing Ruby when I'm thinking in my imagined language constructs actually used to solve problems. Another data point was that when I switched keyboard layouts, the amount that I typed on a typical day was not nearly enough to learn the layout. What that showed me was that typing (e.g. writing syntax) was a very small part my job. Edit: just thought of a good way to illustrate an example. Instead of remembering what `after_commit` does, it is better to know that if I want something to happen when data is durably saved that there's a 'callback thing' in Rails that lets me do that. The important thing is the direction of the association. Any time I read 'after_commit' and don't know it, I can look it up. But if I needed two things to happen together without a concrete concept, I'm not likely to remember 'after_commit' unless I've already solved the problem a number of times. The idea is that the 'concept' should be the memory key rather than the syntax.
- eternityforest 5y agoI'm a big fan of Zeal docs, and I wish everything used a standardized offline documentation format Being able to look things up offline almost instantly really changes the role of memorization.