I believe one of the most difficult things in programming, generally, is actually learning how to do stuff. Computational logic is the hardest thing to learn, because most people are used to doing stuff in natural language: Humans can use context, the tone of the voice and other variables to detect what the other person is trying to say. Computers can't do that, so you will need to get used to the concept that computers will not do anything unless you tell them to do it.
Of course, there are tons of classes online that try to teach you those things. But all of them fucking suck and can actually set you back if you are not careful. But how? And why?
Of course, I am very aware that there are people that learn differently: Some learn listening, others writing, others watching. But again, these can all set you back in programming especially.
The thing about code is that it is a very, very personal thing - No matter how hard you try not to do it, most code will have a subtle trace of you, the one who wrote it. This can be the way that you set your variables, the structure of your for loops, anything can tell other people, upon close inspection, that you in fact wrote that code. Of course, people try to fight back these mannerisms with "Good practices on code" guidelines, but to be honest, it's a lost battle: you can't remove the human element out of the code, even if you try it.
Now, these mannerisms are usually a result of your experience as a developer. If you regularly find yourself declaring variables at the top of your code, this might be a result of you trying to copy other code from the internet, or from books. Online courses destroy this. If you publish a "Python tutorial for beginners" while writing dogshit code, you can be sure everyone who watches it and genuinely thinks you are a great teacher will write that dogshit code unless someone points out to them that they are in fact, writing pure slop. Of course, there are few that would do that.
Another thing that online courses fucking suck at (And any school really) is letting the student think by himself to solve problems.
Back when I was writing my first program (A really funny package manager written in bash), I was, of course, very clueless. I didn't know shit about what I needed to do to make things work: I tried to go the conventional route (Bash tutorials, bash basics on YouTube) but they are all very boring, especially when you take 10 minutes to make a "First Number Second Number" Calculator. Thinking back then, my impatience might have saved me from being another slop-driven programmer. So what did I do? I googled it.
Mind you, I didn't google "How to make a package manager in bash". This would probably just give me a working code: great, it works, but what I did? I still don't know anything. Instead, I searched "How to download files in bash", "How to decompress archives in bash" and so on. This gave me the necessary insight of how my code worked, how it integrates upon itself and what I should avoid next time I need to write something.
What online courses do is give you a simple task (Usually write a Calculator in X lang). Now, most beginners will find problems, but will the person actually search on the internet on how to solve the problem? No. They will press the "Show Answer" button on the website, copy and paste the code and go on with the course. Did they learn anything? Nope. Not a thing. What will happen, is that when they are confident that they are master programmers and actually challenge themselves to do something bigger, they will soon realize that the real world doesn't have a "Show answer" button. What a shame. They will be slop programmers for life.
This is the way to every developer: do not focus on writing slop like YouTube or Twitter clones in React (that no one will give importance to and no one will ever use). Instead, focus on things you think are useful to you. Make some basic programs to automate something you do, then base yourself on what you learned from the experience. That way, you will be a useful developer, and I assure you, you will leave people who buy programming courses in the dust.