“Most people generally suck at notetaking”, I pondered, throwing out another, particularly useless pile of machine learning minutiae I had accumulated over the past months. For people to suck at something, some measure of goodness better be established quickly.
A note is as good as the time it takes to reach the same mindset held when writing it.
Such “good” notes, add value on top of the resources they were derived from - Either by speeding up recall at a later time or by pointing out weaknesses in one’s mental model. A great note captures your very own way of thinking about something.
Bad notes instead attempt to capture techniques and facts, thereby mostly replicating the source material. Consider your typical lecture notes and “summaries”, some of which, though set in 6pt ink-saving type on paper devoid of all whitespace, actually fill more pages than the very lecture script they were based on. Most were never to be looked at again, and in the rare cases that they were, they provided no enlightenment whatsoever.
Why do we even take notes? Nobody ever required a note while writing it. In the moment of taking a note, we are actively thinking about the subject, processing the very fact we are writing down. Unfortunately, nobody can focus on a single line of thought forever. Other problems demand attention, a life outside of intellectual endeavours exist.
A note then should help us regain the state of understanding, reach an immersion in the subject as though we had never paused thinking about it. It should kickstart us from the dreaded state of not really knowing what to do next, right into merrily working away at the next insight. This is why we keep checklists, document our software and summarize material we are studying. We wish to get back up to speed quickly, after coming back from doing something else, sometimes months later.
The operating systems on our computers have this figured out. They are terrific multi taskers. Their way of “thinking about something” is fully formalized and can be snapshotted into a persistent file at any time. Whenever a suspended line of thought (a process, to continue the analogy) is resumed, all computations can immediately take off where they were before the context switch. This adds tremendous value on top of the original source (the processes program text) as resuming a process would otherwise require re-computing it with exactly the same starting conditions, for exactly the same amount of time as before.
Ignition (and how to reach it)
Though I possess near zero knowledge of the inner workings of a modern combustion engine, “ignition” seemed like a fitting characterization of the desired effect of a good note. In order to write documents better capable of such ignition, I compiled two simple guidelines, though I suspect there are more.
Document the thought, not the conclusion. An explanation of why your code was structured the way it is, complete with the trade-offs you took and previous approaches that had to be revised, is worth gold. Especially in a few years. This also holds for your insight about how to best prove properties of a random search tree, showcasing the specific problem that made you rethink your assumptions, instead of simply copying some lemmas from the lecture.
Augmentation beats reproduction. If a fact was ever written down somewhere, we are probably wasting our time writing it down again. Our notes should only contain the facts that refined our mental model of the subject. Crucially, the note should reflect the perspective we personally have on these facts, what they mean and how they can be applied. So annotate what is known, with how you know it and how it fits into your understanding.
Ideally, reading our ignition document from start to finish, will induce the same moments of insight that we accumulated over the duration of working on the subject, but in a vastly shorter timespan.
Some material that influenced my thinking.