I've been programming in one form or another for as long as I can remember. Since my family got it's first computer when I was five I couldn't have programmed much before that. However I knew DOS well enough to help teachers with their computers in first and second grade so I was probably already doing some programming by then. It wasn't sophisticated by any means, just simple code like:
10 print "Hoopla!" 20 goto 10
I'd type in code from books, like Superworld which was geared towards kids. I remember reading various computer magazines my school subscribed to (Byte comes to mind). In school we had a class where we could play with Logo.
There was an older kid on my bus who had a TI-81 and I was always amazed by it. He would write games for it and I thought that was neat. Needless to say when I entered 6th grade and had my first math class that required a calculator I convinced my parents that the TI-81 was the appropriate calculator (requirement was a scientific calculator). I learned how to program that pretty quickly, it was similar to basic which I had some experience with. The TI-81 didn't have a graph link so I'd print out programs from the internet and type them in. I remember printing out some Star Trek game that took me over a week to type in.
When I got to high school I needed a more powerful graphing calculator. I got the TI-85 which was a major improvement from the TI-81. Not only was the TI-Basic on it more sophisticated but I now had a link port so I could download programs from the internet and copy them straight to my calculator without having to type anything. This gave me many more options. I could also trade games with other students at school. One of the early ones I remember was a breakout game. It wasn't long before I learned how to add new levels and started hacking it to do different things.
Then I discovered ZShell. This was a hack for the TI-85 that would allow people to run programs written in assembly. So I jumped on that and started teaching myself assembly for the Z80 processor. By this time I had my own laptop so when I had a gap in the offered computer science classes at school I convinced the computer science teacher to approve an independent study class for me to learn assembly. The teacher wasn't any help but I still figured it out pretty quick.
The following year (Senior year) I took AP Computer Science which taught C++. I picked it up very quickly and the teacher was smart enough to let me go at my own pace. I finished the coursework for the three term class (24 weeks) in about 8 weeks. The remainder of the time I started learning more things, like graphics programming. By the end of the class I had written a Mandelbrot set generator. I was pretty happy with myself.
After graduation I attended UW Whitewater for a bit. There I studying Java. Then I transfered to Herzing College where I learned VB .Net, as well as covering Java and C++ again.
At Herzing I started teaching myself PHP so I could do better things with my website. My first programming job at Applied Tech started out as an ASP job but very quickly transformed into a PHP job. There I developed my skills in PHP. I've been programming in PHP since then and have since stared the Madison PHP Meetup group.
I've played around with some other programming languages since then, but haven't gotten in too deep. I've played with Ruby, Python and C#.