Thanks for all the responses guys. A lot of interesting results. A good amount of you started out programming at an early age. Which leads me to believe most of the people were in an environment that heavily influenced your direction of learning at such a young age. Even some of you made comments hinting at adults that were around to give aide and direction.
For me it was completely different. Not many people even knew how to turn on a computer much less even cared to know how. At around nine years old there was a guy that my mom asked to come repair the computer. I watched him do this and the amount of repairing that was needed took hours. For some reason I would just watch him do this. Mesmerized at all this magical stuff he was doing with the computer. Every time he would come by to do upgrades or maintenance. Just watch. Then started asking how he did this and that. I started to try and do it my self. Taking the computer apart and putting it back together over and over just to try and understand how it worked. By the time I was 11 and had picked up a lot he had left to work for the military overseas. So the only person I knew that had any knowledge what so ever was gone. But that didn't stop me I had learned enough to peak my interest. Long story short. I was the kid in town at the age of 13 going around fixing every one's computer. At the same time I was addicted to a game called Diablo. And I wanted to know how it worked. So using my Computer Technician skills I ruffled through all the files the game had.
Sadly most of it was gibberish. When I was 15 I still wasn't able to translate the gibberish but I found out that I could create my own gibberish. I found tutorials on C++ that wasn't enough. So I tried to go to my local bookstore. They didn't have a whole lot and wasn't really sure what I was looking for. I asked the store owner do you have any books about C++ had no clue what I was talking about but neither did I. So I turned back to the internet and asked "google" how to make games. I finally found something and it was gameinstitute.com. Where I purchased C++ Module I & II. Surprising I was able to somewhat understand the text. It was really just obstacle after obstacle I would sit for days trying to understand a concept to finally understand it somewhat. In C++ module 2 though there was a few chapters on Win32 graphics programming. By this time I was so bored of the console text output and my real goal was to see how games were made. Probably the last three chapters of module 1 and the first 3 module 2 I just completely skipped to get to the graphics programming. Those chapters were probably the most important they didn't look important the only thing that looked important was the chapters about Win32 API. At first I was saying this is easy. Then with a flip of a page it went over my head. About buffer's and double buffers. Pointers I realized I didn't really understand from the previous module. On top of that the math started to creep in. Trignometry, Algebra, etc. The terminology it was using alone left me unable to continue. Let's just say I was really terrible at math. At that time I didn't even know order of operations.
At that point I was sixteen I had dropped out of high school and got my GED. Decided I would take some community college classes on math. Where I excelled. Even though I didn't even know order of operations and just basic arithmetic. I ended up taking 6 math classes in two years. Long story short I ended up attending Full Sail University. Left due to several reasons. Didn't program for two years after that. This year I started to get back into it. This time I had learned a lot of lessons though. I didn't care how to program certain things. I wanted to know why certain things worked. Generally this falls under some Computer Science classes. I didn't pick back up C++ instead I went for picking up C. I discovered this tutorial series at this website: http://www.computerscienceforeveryone.com/Course_1/Unit_1/Lesson_1/
That is where I truly started to learn about pointers, how the computer works, sadly the the author stopped making them. In those two weeks I watched those videos I learned more about programming then all my time spent before learning programming before. Now I've been reading a book called "Write Great Code: Volume I: Understanding the Machine". A lot of it teaches in the same way. I'm only on Chapter 3 now. But it's continuing to help me understand the code that I'm writing.
While doing this I've been referring people new to programming to this material. On forums, IRC channels, etc. Every time I do though I get pro programmers telling me I'm an idiot. That you don't need to learn what the machine does to program or they will take the title of that book literally and say you don't need to learn how the machine works to write good code.
But hot damn if you understand how the machine works is it not truly refreshing? Every line of code you write you have some true understanding of it?
I think that very line of questioning offends people. I'm not really sure why? Maybe I am missing something that the pros / gurus / experts know that I don't.