Newbie Advice - The power of solving real problems
I want to stress a specific point very strongly if you are a new programmer or you are trying to take your dev skills to the next level. This actually applies to other software related positions as well, such as penetration testing, QA, etc...
Don't get too hung up on the broad stuff (reading forever, watching a billion videos, thinking about what you can create) and instead, find a problem to solve and try to solve it right now. This will force you to run into many other subproblems which you will have to learn to solve. This process of learning is key to pushing yourself ahead _fast. _One of the reasons is because it will give you new questions to ask and search the Internet for answers to that are worded in ways that you would have never thought before, but which will give you the information that you need.
For example, let's say you are finding yourself not understanding your dry algorithms and data structures book, getting lost, etc... You could decide to write a basic language compiler or interpreter which will end up forcing you to implement the very data structures that are confusing you, applying context to them. This is of course why so many Computer Science programs task their students with writing a small operating system, malloc, spell check program, etc... You will then run into smaller subproblems which are bite-sized in scope that you can go and search the Internet (or ask here) for answers to. Now, you've gone from being completely unclear on a subject to actually having real-world experience with it.
One last bit of info I want to drop is that - niching down is good here. Even "masters" of Computer Science who hold advanced degrees generally have published work in a very narrow area of computer science. In fact, you will often be surprised to hear people who have been in the industry professionally or academically for a decade ask questions that you may know the answer to after a few months of coding. The reason why is because the knowledgebase for the general CS and software engineering stuff is so large that everyone comes from a slightly different frame of reference and background. The point being, don't get nervous about picking a real-world problem and just going for solving the problem in any way that you can. You should never aim to write crappy code but when you're new, writing code and working through problems is very valuable... It's called software for a reason and you can always refactor; just do it.
The trick is, after and perhaps while you are solving the problem: expose your code to more experienced programmers for critique and this will also help you learn to write higher and higher quality code. Don't take the negative feedback personally, even if it is sometimes presented to you in a rude or condescending way. Throw the ego out and just take the advice.