When I got into woodworking, it was difficult to know where to start — even if I had a visual plan. Often I only had an idea (“build a set of shelves for the bathroom”), but no clear idea of the tools I’d need, how much wood and supplies, or even how long it would take
So, I approached learning different ways. Sometimes I’d attempt to draw a plan; other times I’d just estimate in my head and start cutting. Depending on the project, one (or both) worked.
Once started I fumbled my way through, trying to figure out the next step. With each step, I discovered all the skills and knowledge I didn’t have (how to cut a straight line, how to get things square, how to glue and clamp, how to sand properly — and in what order to do some of these).
In other words, for a long time I just started with a general idea and a hazy view of the process, and started building. I learned as I built — the keyword being built. I couldn’t figure it all out before beginning.
After a lot of woodworking projects, I got better. Faster. More efficient. I knew what worked and what didn’t, what general order to do things in, what tools work better and how to use them. How to organize myself at the beginning to simplify things later.
I also learned a lot by reading and watching other woodworkers do projects. The most important thing I learned? There is no one right way, but there are “best practices” that help you on most every project. And I watched those veterans make mistakes, start over, modify their plan, adjust — just like I did as a beginner.
Notice that I didn’t start learning by focusing on tools and materials; I learned by building, building, building, all while being intensely curious about how others did it. Eventually, I found what worked best for me. But like programming, I still learn everyday, and find something I though I knew was incorrect. I find new/better tools. I look to save time and materials. I’ve gotten to where I focus on quality more than all the other stuff, because the “other stuff” is becoming muscle memory.
This all took many years.
When I started programming — which I did in fits and starts over many years — I began to see the same patterns. As frustration set in, I realized that the lessons I’d learned in woodworking all applied, but I was ignoring them. I settled down, took a deep breath, and started again. And really started learning.
If you’re a beginner programmer, or somewhere near the beginning, here’s my advice: programming and programming languages are the tools and materials. Learn them, but always in the context of building something. Your problem is likely that you’re practicing carefully hammering nails to learn how to use the hammer, but you need to build a bookcase instead.
Good luck! Don’t give up! Everything you’re doing and feeling has been done and felt by others — yes, even the so-called “smart” ones. I had the same question as you once, and once I started building projects (no matter how small), that’s when my real learning began.