This is an in-progress and incomplete collection of my notes. Previously my note taking was more haphazard, and this is an attempt to organise my knowledge more systematically.
Broadly, this is my current workflow for learning new stuff:
- Collect questions related to a particular subject over a period of weeks/months.
- Everytime I'm confused about something, I try to note what exactly it is that I don't know. Turning diffuse "confusion" into a concrete question is a useful practice.
- I'll often make a new file for a subject (e.g. "SQL query plans") which at first consists only of related questions.
- Do a deep dive into answering questions around a particular subject, while making notes.
- I prioritise areas that come up all the time.
- This process often takes several hours, and I try to follow relevant rabbit-holes if they lead to greater big-picture understanding.
- For example: "a JOINS connects two or more SQL tables. Hang on, what exactly is the definition of a table? Do I understand that properly?".
- This kind of deep dive is one of my favourite things about being a software developer - understanding a system better, and noticing connections between previously disparate phenomena, is very satisfying.
- Commit important things to memory using spaced repetition software
- If I'm confident that the notes are important and likely to be relevant to me for a long time, I'll memorise them using Anki.
This Semicolon & Sons video inspired me to arrange my notes more systematically.