Using Spaced Repetition to Learn Programming Languages
I have already written on tips for creating spaced repetition cards, but here I hope to summarise a few of Jack Kinsella’s tips specific to memorising programming languages (and here also).
Use Screenshots
Rather than typing out code manually onto your cards, screenshots should be used. Aside from the obvious and significant time saving, screenshots provide you with syntax highlighting with no additional effort, creating a richer image for the brain to process and remember, with the salient parts already highlighted. Kinsella also claims - perhaps rightly so - that taking screenshots of the original source may draw upon situational memory to help aid in recollection.
Focus on What’s Available - Not How to Use It
When you are committing functions and methods to memory, focus on what they are called and what they do rather than concerning yourself with details of parameter order and return types. When you come to committing a second or third language to memory, this information will likely become conflicting content and cause you endless problems as you recall information for the wrong language.
When you sit down to program, what is of greatest use is what functions or methods are available in the language. This is to avoid naively reimplementing functionality already on offer, or recreating an existing and well-known solution. Once you know what functions you wish to use, a decent IDE will help you out with the rest.
Make Clear What is Language Agnostic
Often there are functions and methods with the same or similar names and functionality offered by different languages and libraries. Make sure to encode what these functions are, and any differences they may have between languages. It is often helpful to define other language’s implementations relative to one you are already very familiar with.
Create Cards From Good Code
When you encounter a good piece of code - perhaps from a well-maintained open source repository or a well-reviewed tutorial - create cards from it and quiz yourself on its merits, or even pitfalls if you are able to find them. This will help with you ability to read and analyse code and will impart good practices with concrete examples.
Process Information Can Be Difficult to Encode
Processes and ordered information is difficult to store and remember in Anki because it suffers from the same problems as sets and enumerations. The process should be encoded as closed deletions, or care should be taken to encoding a clear link between each step in the process.