A few years ago, a friend explained me how he learned technical concepts, and that has completely changed how I learn things. I wish this learning approach is more commonly used in classes.
When we're taught new things, it's very easy to be taught the solutions directly. For example, we might jump straight to learning how to use git or Kafka or neural network without understanding what problems git or Kafka or neural network solve in the first place.
I found myself learn things much faster through problem solving, which involves the following steps:
Understand the problem: when it arises, why it's important, who this problem affects. For example, if I want to learn git, I would start with understanding the challenges of version control, such as how to revert back to a previous version and how I can compare two different versions to see how they differ.
Attempt to come up with a solution myself. For example, to be able to revert back to any older version of my code, I'll likely have to make copies of my code at different points in time. How do I organize the different copies? How do I keep a log of changes? How do I let users compare the two different versions? What if two people work on the same codebase and create conflicting changes?
Implementing this simple solution, even if it's just a simple solution that doesn't scale. This will likely lead me to realize so many other challenges.
Compare it with the solution I want to learn, which will give me so much more appreciation of this technology.
Just a random thought for Monday. I'd love to hear if you have any recommendation for a good way to learn technical concepts!