I agree with the OP. Learning anything new is best done by noting down even small taken-for-granted things, things that you wouldn't care much about once you have mastered that thing.
I have been using this technique to learn the Nim programming language.
I write notes (semi-tutorial) about this language as I learn more about it. I explicitly mark things as "need to understand" or "todo" so that anyone browsing these notes knows that it's not written by a Nim expert but a Nim learner. And also the notes as strictly labelled "Notes" to make that explicit.
I like to break down need of understanding into a few categories:
- no need to memorize or understand (some domain specific and infrequently-used portion of the API)
- memorize and understand later (it's better to just continue and get a holistic picture than to get off into the weeds analyzing how some framework magic works)
- you should comprehend this fully before continuing (general and recurring patterns for structuring your code)
I have been using this technique to learn the Nim programming language.
I write notes (semi-tutorial) about this language as I learn more about it. I explicitly mark things as "need to understand" or "todo" so that anyone browsing these notes knows that it's not written by a Nim expert but a Nim learner. And also the notes as strictly labelled "Notes" to make that explicit.
The notes: https://scripter.co/notes/nim/ (continuously work in progress)
This is the best experience I've had of learning so many other programming languages in the past.