I roughly browsed most of the comments and noticed that most people who taught themselves programming started earlier than their 20s, which, frankly speaking, surprised me a lot.
I started learning programming when I was in college, which wasn't some serious learning but merely required courses of my major. After I got my bachelor in engineering. I continued to study in a research institute and got a master degree in geosciences. Later on, I started to teach English the moment I graduated.
Right in the beginning of this year, I realized that teaching bored me to death. I still wanted to do something technical. So, I began teaching myself coding in Objective-C. Three month later, I became an iOS programmer.
I don't think I am particularly smart or anything. But, when I worked with people who had one or two more years of programming experience than me (I only I had six month or so doing real programming), their code was just fucking too messy: no comments, using pinyin to spell variables, having no idea what MVC is ...
All I thought was guys you should really take this seriously. Or, you'd better consider doing something that's your strong suit.