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.
You also can subscribe to my newsletter.
Top comments (5)
This is a great summary for beginners like me. I've always dabbled at the thought of learning a programming language, but remain daunted by the amount of stuff to learn. Recently I started Python, and I enjoy it very much. Very much like you've pointed out, there seems to be no end to Core Python concepts. I was worried that I would never get to Django or Data Science topics.
The important part is to keep moving forward.
Good luck đź‘Ť
I can only second that. I studied mathematics, and often it only "clicked" for a certain topic long after the exam, most of the time after the summer vacation, when your brain had some rest, and you come back to the topic, you suddenly have a much deeper understanding of it, and you wonder how you even passed the exam with so little understanding (compared to now).
Best advice from one of my math teachers: take some time to pull your head out, lean back, relax, then dive again.
PS.: Sorry for my german brain constructing endless sentences :D
Nice article. I strongly agree with this article. If you try to learn everything about a language it's going to take you forever before you can then learn a framework. As consequence it's also going to take long to get a job (in case that's the intention).
Definitely learn and understand the basic programming concepts. After that you can start learning a framework. Some concepts start "clicking" when you're building projects. ✔️
I like Peter Norvig's Teach Yourself Programming in Ten Years article.