How to learn anything
This is an old essay I wrote in 2019 on how to learn anything. It's based on some solid psychological references that at some point I should add. You can read my entries on teaching/learning in the mean time.
Graphs, pyramids and trees
Knowledge is a graph. Each node represents an entry on your brain. The more nodes you add to your brain the richer you become. For the purpose of visualization is also useful to think in a pyramid or a tree. You build your ideas from fundamentals and build in top of them. A learning framework would be an ordered methodology to build this pyramid.
Two frameworks exists: Bottom-up, from fundamentals to applications. Top-down, from application to fundamentals. Let's see some examples.
You read theory in a C book and you make a little program to test your knowledge. For example the topic could be manual memory management, allocation. Classical bottom up learning. From reading to writing. From theory to practice.
You follow one of my tutorials on how to write a rate limiting algorithm. It turns out you have a lot of theory holes in your knowledge tree so you get confused and have to re-read the steps all the time. You google what you don't understand as you go. Top down learning. From a real world application such as a rate limiting algorithm to the networking and data structures fundamentals. From practice to theory.
What should I do?
Both are valid paths and it's actually beneficial to alternate both of them as you learn a topic. The key is to follow your instinct. If you feel like doing a small app then do it. It does not matter if you lose interest on the topic. It's not a final result what you are looking for. You are after knowledge. Do you know why sometimes we stop working on side projects? It's not that we lose interest in the topic, but, most of the times we stop working on something when we have already fulfilled our curiosity.
If knowledge is a graph. Traverse it. BFS first. Then DFS as you find interesting subtopics that you consider worth of your time. It does not matter how you actually learn, exploration and then mastering. A, B, C.
Sometimes it does not work
It does. The effects are not immediate so you haven't appreciated the learning yet. For beginners for example, it is better to have visual and functional things fast, to achieve engagement. Following tutorials at those levels is already a challenge.
In fact, I would recommend doing multiple tutorials on the same topic by different authors. Try to compare them, compose them. Look at modern and old material.
A broad topic of research is knowledge temporality. This matters and is crucial in this field. Knowledge can be temporal or timeless.
Frameworks, libraries and languages are temporary i.e. They have an expiration date. They are just implementations. They evolve and change according to the context and are opinionated.
Fundamentals will last you a lifetime. Temporary knowledge is built atop of timeless knowledge.