So you want to program?
I cannot stress how important it is to know why. You have to know it. Programming is hard. You need to have motivation. You will need to do a lot of research and spend a lot of time to develop a project to completion.
The way I see it there are 3 kinds of people who program.
- The people who learned for a project.
- The people who learned how out of necessity.
- The people who learned cause they have an unhealthy relationship with computers.
The people who learned for a project
I suspect this is what the majority of the audience reading this thread is here for. You want to make a website, or a game, or a script to help with some task. This is an excellent starting point since it gives you something to learn but it is also a dangerous one for a true beginner.
Many projects are fine but have a sense of scope and scale. You aren't going to make the next mass effect in a year (or twenty). If you start running into conflicting opinions on how to do things online it can get frustrating. When you realize the amount of time and learning that it will take to complete your project it can be demotivating. There is a reason why so many programmers joke about programming being sadistic. Bugs aren't fun and they can really be nerve racking.
That said if you understand scope and scale and are happy to compromise, with time and effort, you will have that project by the time you are done. You will have learned a ton and be able to start bigger projects and finish them faster. If I want to learn a new language or technology this is often the route I take. So, if you need a reason to start, think of something you want to make. Ultimately it is that desire to create that drives a lot of people.
The people who learned out of necessity
Story time: I was on a plane traveling home from visiting some family. The person who sat to my left had his laptop open and I noticed he was programming using vim. I struck up the conversation and found out he was a doctorate student in physics working on a group code base that simulates the creation of the universe (I know right?). He didn't have a Computer Science degree and yet was doing something that I doubt many Computer Science students could do (Currently debugging something to do with 1 & 0 dimensional universes).
He learned because he had to. This ties in with the previous point except that it wasn't out of curiosity that he started. He was required to by his career. I expect as we modernize even more this will become much more common.
The people who learned cause they have an unhealthy relationship with computers
I expect many people want to fall into this category. That's fine, I won't judge. I am probably one of them. These are the people who read documentation for fun on code bases that they will likely never use. Subscribe to rss feeds of code releases for popular frameworks etc. etc.
I doubt these people need to be reading my threads as they probably know just as much as I do or more.
These kinds of people learned to program because they love the work. They may have started out as the first group of people I mentioned but it doesn't matter now since they are stuck. They like the tools, they like the tech, the math, the logic. They are likely going to pursue a computer science or computer engineering degree and will work at some large company making a lot of money, or a small one making what they love. I don't have anything to say about these people regarding to this topic except that they are awesome. Yes I am bias.
The point is if you want to learn to program you need to find a reason, motivation, and work hard at it. Just like anything else, if you want to do it, you have to start right now and keep doing it. By the time you realized how far you've come you'll already have marketable skills and knowledge. Whether its as a hobby, a job, or a labor of love, just do it. If you enjoy it you'll keep doing it. Don't lose motivation and have fun. That's all.