Learning is by no means a linear process, even in hard sciences like Math.
It is very common to see people asking in groups, Reddit, and other forum-like places "What path should I take to become a Software Developer".
Unfortunately, learning programming is not linear.
You will find many lists and articles giving you a path like: learn HTML, CSS, JavaScript…
They are not wrong in the sense that you should learn JavaScript before React, but they don’t warn you that you should not worry about mastering the previous topic before jumping to the next.
Those topics are all interconnected, which means they will "click" in your head only after you have some knowledge of each topic.
Learn some JavaScript and then some React.
If you decide to "master" Python before trying Django, good luck, you will never get to Django.
Python is a massive language, you can learn the basics very quickly, but mastering it is another matter.
That is what I had in mind when I wrote The Python Guide for Beginners.
You can learn the core of the language as fast as possible, and then move on to dive into Web Development, Data Science, or general use of Python as a programming language to automate your everyday tasks.
If you choose, say, Machine Learning, you will need to understand some details of the language specifically for some tasks, but you will have enough knowledge of the basics to google yourself out of any situation.
The "click" also happens as you expand your arsenal of tools.
Learn More Than One Programming Language and some concepts that you learned in language X will make much more sense after you learn language Y.
I’m challenging myself at the moment to dive more into web3, which is a new realm of software development and solutions revolving around blockchain and the crypto space.
Adaptation is The Top Skill for a Software Developer and you have to keep improving yourself as new opportunities arise.
This means I won’t waste hundreds of hours to learn Solidity or understand every single concept about Smart Contracts.
The Only Way To Learn Programming is to take action with what you know.
So I will learn some things, apply them to a project and then I will be able to adapt myself to any situation that comes to me.
If you wait until you are 100% prepared, you will be already too late to take the best opportunities.