Don't tell people your age, they won't take you seriously despite any evidence.
Working on a corporate team is nothing like contributing to OSS on your own, you will have to relearn a lot of stuff. It's fine, just don't get frustrated when it happens. In fact a lot of programming I felt like I "learned again" as I grew older, e.g. having used a functional language and coming back to Python I found myself writing it very differently from how I had before.
Learn a variety of weird languages. There's not much to be gained from knowing both Ruby and Python (except maybe when you're looking for a job), but if you've used Haskell and Smalltalk and Erlang and TCL you'll learn things from each that make you a much better programmer.
Never stop learning. Pay attention to that little voice in your head that says "there must be an easier way to do this" - it's usually right.
I did that as well. Find what makes you code. For me it was coding games and websites. I could show them to my friends and that was pretty cool :) motivated me a great deal.
Do what you love. Right now you're a kid: your room and board are taken care of; you have the freedom to try a million different things and see if you like them (heck, you might discover that you don't want to code for the rest of your life: that's alright too).
Read lots of code, and write lots of code, and have fun. If you're suited for it, you'll know.
I started coding when I was 13 (over half a lifetime ago!). I do have some advice, but it's a bit long for a HN comment made at work - hit me up on email if you like.
Log out of this website, turn away, and never come back. Assuming you want to keep your coding as natural, fun, and creative as possible. You likely don't have the awareness and wisdom yet to remain untarnished by the many garbage influences you'll find on a site like this.
Keep doing your own thing and building confidence in exploring your own paths, because there's a whole world out there that's going to tell you how things should be done and what defines success (to them). They're even going to sound really smart and appear to be doing things right based on some metric for "success", but only you personally can figure that out for yourself. It'll be harder to wrestle with figuring out your values, but will be far more worth it in the end, always stay true to what you want to do.
Once you build some confidence and consistent integrity in your values and your own life approach, then come back.
@caffinatedmonk I can't tell you what to do, but I can tell you what I regret. I regret not learning the boring structure of programming. The general terms and ideas about programming languages, computer science terminology, low-level stuff like kernel and operating system design (and thus hardware design), even some of the math to understand and talk about algorithm efficiency. All of that is necessary once you get a little older and want a really cool, creative job. Most of us put off learning the boring stuff because it never seems as important as the fun stuff you can do now, and then we have to deal with those consequences later in life.
Also, i'd suggest you keep working in open source. There's a lot of professionals and good best practices to be found in open source software. Important stuff that seems to be missing in the code released on HN (another reason to get out now!). Follow the good open source examples, make some cool things or contribute to others' projects, and start building a mini resume out of code you've done.
As more practical advice: you can learn programming languages like .NET, Java, C++, PHP and Python if you want to get crummy corporate jobs that are a dime a dozen. More fun stuff will probably be in some obscure language. Figure out what kind of programming excites you, then look into what kind of projects there are like that out there and what languages and tools they use.
Oh, and for god's sake have some fun. Computers aren't everything. Go outside, climb a tree, read a book, hang out with people. Computers will last forever; youth won't. (Sorry, I know that's off-topic)
Thanks! I have been trying to stay away from structural information but recently I have wanted the contribute to the uofw/uofw project. This project aims to completely reverse Sony's PSP firmware. This requires me to learn MIPS ASM which requires me to learn the structure, general terms and ideas of computer science.
Your last point, about having fun, is a good one. Lately, I have been very busy with school and programming. Between my school work and my programming, almost all of my day is consumed. You have a good point.
I agree with you with that one need some good judgement to avoid being contaminated with bad influences and attitudes that you can find here, but... at the same time I can understand his need of looking for a guide or a mentor.
Probably he is in the right track though. A lot of people find good mentors just by contributing to an open source project.