I was a journalist, and unhappy. Took a break, went back to school (to study music), met a girl, and we decided to get married. By that time she was in grad school a few hours away. When we married, I moved there and had to find a new job.
I knew HTML and got a job doing tech support for cell phones. My employer had no internal web site and I saw that they needed a page to share links to reference sites, so I made a simple HTML page, just dropped onto a shared file server, not even a web server. Then I started adding pages of training material, etc.
I had just heard (this was 2007) that CSS could be used for layout - gasp! - so I bought Eric Meyer's CSS: The Definitive Guide and studied during lunch breaks and evenings. I spiffed up the site. Next I got Head First Javascript to add some animated menus. Soon after, somebody told me about jQuery, and eventually I caught onto that.
As I added more pages, it sucked to have to copy and paste my common menu, so a friend recommended PHP. I had to set up Apache for that, though, so I used XAMPP. Now I could do includes! But wouldn't it be nice to have some database interaction? I read a PHP book and added that too. Eventually the system was pretty complex, with object-oriented database interactions, permissions controls, AJAX widgets, etc.
All this time I was getting advice from my best friend (we were roommates in college), who is a truly awesome coder with famous companies on his resume. And I was discovering that I really enjoyed this stuff and had a knack for it. Also, all this time, I was still doing tech support: I could be knee-deep in a coding problem and get a phone call, and I had to pick it up, and it might take 2 hours.
But by the time I left, I had a good enough resume to get a full-time programming job. And I continue to learn. I've made the jump to Ruby and Rails (Ruby is a lovely language), test-driven development, etc. I'll never be DHH or Linus Torvalds, but I hope to do solid work and keep having fun.