A high-schooler emailed me asking about getting into programming. This is my response, slightly edited. I decided to post it here not because it's particularly good, but because I can't find enough material like it already online.
...Yes, you can teach yourself. Most programmers at least get their start learning on their own, and many don't have any formal education in it at all.
The most important thing is to be motivated. It's hard to become good at any skill, and programming can be particularly frustrating. But it can also be so rewarding when you make something that works.
I don't know if programming's right for you because I don't know you, but I can tell you what's good about programming, or at least what I like. If you're close to the edge, maybe that will be helpful. In no particular order:
1) You can do it on your own. I'm interested in genetics and neuroscience, but if I were in a researcher in those fields I'd be tied down to an institution, grant money, lab equipment, and all that stuff that gets in the way of discovery. As a programmer, you don't need anything more than a computer.
2) If you're any good, you're guaranteed to find a well-paying job. The demand for programming is only going to go up as the internet tears apart old businesses and creates new opportunities. The other professions where you're guaranteed to make good money require many years of school and probably debt (doctor, lawyer).
3) The internet is so, so important. It's hard for people to see that today because we're too close, but from the perspective of history it will be obvious. What story do you want to have been a part of?
4) It's really fun. You imagine something and you make it. The tools are getting more and more powerful. Code is like if math had opposable thumbs. Don't get me wrong, I'm mostly talking about coding on your own here. Many corporate programming jobs are boring. But when looking for a job, your skills are in demand, so you are in a good position to be able to find something that you enjoy.
Hope that helps...