There are three reasons that an individual may wish to learn programming:
Those who wish to build something are probably not reading this, because they are off learning it themselves in whatever fashion allows them to start building as fast as possible.
For those who wish to use programming as a skill to make themselves money - power to you. I hope you find some benefit from these thoughts.
However, these thoughts are really for number three - those who think programming might be interesting. I don't plan on giving you a prescription of what it means to become a programmer, but instead hope to give some "starting points" so that you can find out for yourself whether it is interesting or not.
Sidenote: Of course it is likely that there will be a mix of the three, and one reason doesn't preclude you from another.
Well kind of. I think one mistake that a lot of new programmers make is by trying to take the easiest path.
In the case of bootcamps, you are shown how to to make an application from beginning to end, where the ending point is a url on the wider world web. This is awesome. It is so cool that you are able to do something that twenty years ago would have taken a team of experts - all within the space of 12 weeks.
I think this can give off the impression that programming is easy. We are standing on the backs of giants. But if the giants move in a way that we don't expect - we will fall off. Perhaps less metaphorically - it ignores the past 80 odd years of modern computing and the lessons learned along the way. Especially considering how many of those lessons are still relevant today.
The way I see it - learning to program should be done in two parts:
Here are some resources which I think cover some ground: