xyz True, and also the other ugly truth that no one wants to hear is: You need a lot of time to get decent.
I started learning programming in the 80s and early 90s with C64 BASIC, Amiga BASIC and then QBASIC on MS DOS. As you can imagine that was over the span of years. And only then on MS DOS was I old enough to actually wonder and ask myself why my programs run so slow in comparison to real games. Which let me to realize that BASIC is terribly slow and I started learning Pascal, Assembly and later on C. And this was all still on MS DOS but it took years.
Now of course the resources we had back then were limited and going into a big shop and looking at the books was pretty much the only option we had.
But this did teach us three very important things: a) how to find information on our own, b) how to make use of what we had and c) fundamentals. If you were stuck you had to figure it out with what you had. After all there was no internet to ask.
As I said, this took years but that didn't really matter because I was a kid/teen.
My point is: Learning how to program and write decent code takes a long time and the only way to get good at it is to invest a lot of time, start small and learn the fundamentals, get your hands dirty and make a bloody lot of mistakes and learn from them. But no beginner wants to hear that. (And to be honest I cannot blame them.)