| I'm a big fan of the idea of using Spaced Repetition for this. The idea is that it allows you to both: - be able to keep your knowledge / understanding of an area around for the long term; but also - be able to gradually build up your understanding by first committing the fundamentals to memory, and then using that to build up your level of abstraction and get to the more complex ideas and principles. Michael Nielsen has written fairly extensive explanations of two slightly different approaches in: - Using spaced repetition systems to see through a piece of mathematics [1] - Augmenting Long-term Memory [2] I've only used this particular approach for a handful of subjects so far - indeed, it seems to just take time to build a high-quality, long-term understanding of a thing. However, I've been pretty happy with the process so far. [1] http://cognitivemedium.com/srs-mathematics
[2] http://augmentingcognition.com/ltm.html |
IMHO it is a wonderful solution to a wrong problem (i.e. memorizing random things). Sure, there are use cases: learning words in a language one is not exposed to on a daily basis or cramming for a medical school exam.
When one actively uses something, there is a natural spaced repetition of the things that matter. With the frequencies as these things are used in practice. Everything else can be looked up later.
For programming, maths, physics, etc - "I forgot" means more or less "it is more time-efficient to google it once a few years than put effort in storing in in my memory". In programming, it is even more the case: libraries, their APIs, and good practices keep changing. Rote memorization may be highly counterproductive in this case.