Learning to Code is like Playing Cards
I was reading through the MDN docs on the WebAudio API this weekend for a personal project, and I came across this bit of gold:
Learning coding is like playing cards — you learn the rules, then you play, then you go back and learn the rules again, then you play again.
I LOVE this quote. Software development is hard. Even the so-called basics are abstractions over very complex subjects. Don't expect to grasp everything the first time you're exposed to something new. That said, as soon as you get a foothold in it, put your fingers to the keyboard and try it out. Bump up against the limits of what you know and see how this connects some dots for you, or helps you articulate new questions. Now take those connections and questions and go back to the docs or the tutorial or whatever guide you're working from and see how things make a little more sense.
This is one of the reasons that I enjoy teaching. When I'm teaching, "It just works when you do this" is never an acceptable lesson. I have to be able to articulate to someone why something works if I'm going to include it in a lesson. That pushes me to articulate my own questions and dig deeper into a topic that I may already be proficient in. Teaching makes me a better practitioner.
Try it out sometime. Whatever topic you're teaching yourself, try to explain it to someone else. If you don't have someone to listen to you, you can just talk to an imaginary friend. When you come across a point that you can't articulate well, turn that into a question an go research it. Rinse and repeat. I think you'll be pleasantly surprised at how this practice can turn a big, amorphous topic into discrete, manageable chunks.