Learning and Problem Solving
Become better at developing software.
In this article, I wanna share some of my notes that I had related to learning things, solving problems, and reaching a level of mastery.
Know why you are using something. Even if it is quite popular, study why it is popular and if the hype truly is real.
Start learning from the documentation and get the foundational mental model laid, each usually has a Getting Started part.
Build a few more minor stuff to get a better feel, and understanding, to strengthen the mental model, and this also helps ensure you finish a few projects.
Build larger projects.
Steps to solve a problem
Narrow down and truly understand what and where the problem is. Explain it to something or someone else. Write it down on Excalidraw, perhaps visualize the flow of data, and dig deep into the problem to truly understand where exactly you are stuck.
Step away. Stretch, get something to drink, and maybe lie in bed for a while.
With the hypothesis you now have, prove them, and try them out. For the ones that didn't work, write them down, just keep making sure you write things down on Excalidraw, it will help you think more thoroughly and slowly, and make sure you don't get lost.
If you haven't found an answer, Google is your friend. Try the documentation first, and then Google. Whatever you try, always write it down, and keep writing things down, both the things you try and your thoughts. Sometimes it gets too overwhelming thinking about a problem, so it is better to write it down, that helps items process better mentally.
If shit still doesn't work, before banging your head on the keyboard (be prepared to buy a new one), post a question in the relevant community or ask a co-worker.
When solving problems, don't make it a try-try-try process, rather be a detective (as in the movies). Things may have gone south, but step back, write down your thoughts, visualize what is happening, understand the problem deeply, and eventually, you will find a solution.
The better you understand what exactly and where went wrong, the better idea you will have of what the solution could be.
Excalidraw, Documentation and Google are your friends.
Tackle challenges you have never done before, and dig deep into the zone where it is uncomfortable.
Build the things you use from scratch, doesn't have to be the exact thing and is too comprehensive, just small minimal clones. For example, building an in-built function in a language from scratch. This helps you get a better intuition of how things work under the hood.
Teach. Help people out in communities. To teach is to learn twice. Challenge yourself to explain something so simple that even a child could understand it.