Memorizing a programming language using spaced repetition software (2013)
sive.rs
sive.rs
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.
As of resources, I watched the vim course by ThePrimeagen at Frontend Masters.
There are also vim books from PragProg Bookshelf. Pretty short ones, too.
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.
Being able to look things up offline almost instantly really changes the role of memorization.
Learning a language is like learning the rules of Go (board game). It's nearly trivial. Applying it is a lifetime.
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.
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.