5 years ago I used to think I had the coding thing down pretty pat -- now I'm much better than I was then, and I have a lower opinion of my knowledge as well :)
I'm not nearly as arrogant as to think that I know everything in my particular domain(s) of interest. I can look at whatever language(s) I consider myself proficient in and name half a dozen things in half as many seconds that I know nothing about.
I simply disagree with the "You have to have coded for years before going to college for coding to be a good coder" line of thought. You have to have the time, yes. But, imho, it doesn't have to come from college and it doesn't matter when you start.
FWIW, I'll be done with undergrad work at college at 21 (assuming I graduate on time next year). Could have finished by this summer (ie: before I turned 21), but, I do enough classwork during the semester, I wanted my summers "off" (read; working/internships instead of classes).
FWIW, I don't recommend this, but (and I've faced this with my own kids now) there's really not much choice. I was already bored in school; if I'd been back another year, it would've been even worse.
But, you know what? That doesn't mean that I'm any worse off in terms of ability (to code, design, learn or understand concepts) than you. And I'm not sorry for not spending my teen years implementing Ukkonen's algorithm or whatever else would count for you. I can read the paper on how it works if I ever need to implement it.
I object to claim that in order to code, you have to have some sort of monkish training. That if you're "like this," then programming is the only path or that you have to be "like this," in order to be a programmer. Your point of view seems like a horribly elitist, closed-minded view to have.