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!
Top comments (17)
When I'm learning and evaluating a new tool for possible usage, I try and keep my own needs in mind and frequently ask myself, "What use cases is this tool NOT suited for?"
By doing this, I avoid getting caught in the hype where the people describing the tool only talk about things it's good at. This is a simple technique, but it's amazingly effective and has saved me lots of time (and avoided lots of mistakes).
Once you understand the purpose , Few more things that can help (specially when it comes to learning new tech/platform):
With the overwhelming sources of information available , sometimes its better to start with resources like stack-overflow to get the precise questions answered quickly.
Getting familiar with the tech jargons used in documentation early-on helps to absorb the content faster.
Of course 👍
Space learning is key. First read about it, implement it in a project (focus mode) or do some related work, then rest for a few minutes (diffuse mode), and do this 3-5 times per day then do this consistently for many days (pomodoro technique). Try to recall what you have learned at the beginning of each session.
It's not directly related to software, but I recently discovered Elizabeth Filips on YT and she talks about the learning process for more chaotic people:
You’re Not Stupid: How to Easily Learn Difficult Things
Great video. Thank you for sharing !
Nice Content, thanks for sharing it!
Great suggestions for real-world problem-solving. Thanks Lazizbek!
I also realized the same thing, if you want to learn something, just do a real project on that technique, when you understand a bit of the basics, then go back to theory & learn more
I agree, sometimes it is hard to find the problem! But solutions are everywhere! I usually try using the tool to better understand what problem(s) it solves.
Sounds related to this great article
Learn git concepts, not commands
Nico Riedmann ・ Jun 2 '19 ・ 36 min read
Exactly !
Teaching/explaining a concept to another one is a great way to learn it. But, the other one must be eager to learn it and ask questions about it.
Agreed
Some comments have been hidden by the post's author - find out more