A 17 year old seems like he codes better than you...that means nothing. A programmer can always improve where they are bad
Programming ability is not scalar. Therefore the problem of being better/worse at it is ill-defined.
Some people are just good at finding answers to simple forum problems, just like there are people who like to solve puzzles. But that doesn't mean much.
And I've yet to find a 17-year old dominating in programming ability a skilled professional engineer. Sure, there are some smart (under)graduate students that might be smarter than average corporate web-app monkeys. However, usually when you're young, you simply don't know how many things you don't know. And most of those youngsters who think they are "better" in reality are only beginners.
Also, experience with small home-made tiny projects is not the same level of experience you get when you work on a team of 50 people working on a multimillion LOC, heterogenic codebase.
Terms aren't constant. Look at the history of what the word hacker has meant. In my opinion a good definition for a computer programmer is "someone who writes instructions for computers". Why would we refuse to call scripters programmers? Whether your code is compiled or interpreted, either way software is translating instructions for you. Reminds me of xkcd 378, "real programmers use...!".
I agree Austin J, but kind of pointless now since RTD has yet again deleted his account. I've lost track of how many times he has done this now. Oh well, your post is still very valid to the discussion. Thank you.
I think programmer has become common parlance under a more generalized (and very dumbed-down) vernacular. Software Engineer would be a more appropriate, and more accurate, term to describe "real" programers.
Also, I don't believe that writing small scripts qualifies you as a programmer. To be a programmer, you have to know a couple languages, or know one VERY well.