I started off on C64s and Apple ][s in middle school, which upgraded to Mac LCs around 8th grade. Started off in BASIC, fiddled with stuff like Hypercard under the Mac.
That summer as I was going into high school my parents got me a Tandy PC1000. Family friends helped me with upgrades, software, etc. I eventually got my hands on a full copy of QuickBASIC, Turbo Pascal, and Turbo C. I wrote my own database app, even wrote my own mouse drivers in assembler, linked them in through C and QB, started expanding my own library of that sort of code.
My first 'paid' gig was for a friend of my father who owned a TV repair business. I wrote a program that monitored a modem to pick up caller ID info and store it in a database; searchable, printed reports, etc. Networked it to pass the caller ID info to PCs in other buildings on his property. My 'payment' was in hardware, software, and 100 packs of 3.5" floppies, which I was more than happy with at the time.
I went to college for CS, but learned more in my job at a research institute on campus than I did in the classes. I actually had a couple professors who, after the first semester with them, just came to me later with "You know this already, don't you? Here's the test schedule, just show up for the exams if you want." I dropped out after a couple years and managed to get a decent job before the first major dot bomb bust.
I did some coding for a year or two after that, but mostly moved up the food chain. Most of my coding these days consists of shell scripts, awk, some PHP, but little 'new development.' Today I effectively operate as a liaison between support teams and development teams since I have the skillset to give a better technical analysis of an issue as well as the coding background to debug issues as well as know what is and is not possible on the dev side.