I thought I was awesome when I was in high school (I was about 16) but a few more years of experience made me realize how wrong I was.
I'm 25 now and I think I have a good grip on the generalities of programming, but I still have a long way to go in really understanding the underlying fundamentals of various languages and some of the over-arching principles that govern language design and function. (It's worth noting that I've been a professional developer in various languages for about 4 years, and I've been programming for fun for 11 years.)
Personally I think programming is like most other things. It's relatively easy to be minimally capable, but extremely hard to be really, really capable.
Sorry for the long-winded answer :-p
The best part is that you can sell your advice even before you can sell your code. That way you'll learn more about what the real world needs out of a programmer. And they'll pay you to learn!