After manning the meebo widget for a few months, I've been asked many times about the best way for someone to enter the realm of game development. Granted, Wolfire is a very young company, and out of all the guys on our team I'm probably the least experienced when it comes to game development. However after consulting the other guys, I think I've assembled a decent list of helpful suggestions.
As you may have seen in our team introductions or read in our interviews, a lot of the guys on team Wolfire began programming very early. In case you don't recognize him, this is our fearless leader David Rosen, already getting started at age 3.
Developing games is very much like playing an instrument or learning a language. You need to get a certain amount of experience under your belt before you can become proficient, so the sooner you start, the better.
Take classes in your discipline
Some people out there might take issue with this claim and I'm sure there are plenty of people out there that are very successful programmers who didn't major in computer science, or artists who didn't take formal classes. However, the cold hard truth is that without classes, you will only fully explore the 'fun' parts of your discipline, and miss important fundamentals that can only be learned through structured study and practice.
Everything Applies to Game Design
Creating a game is not only the process of writing code. Acting, history, and psychology classes, and even walks outside can in many ways be just as useful for learning the art of game design as learning to code or texture. While it's essential to learn your specialized discipline in depth, it's just as important to learn about how everything fits together.
Control Your Scope
Don't try to make Crysis as your first game project when you still don't know how to output "Hello World" on a command prompt. Even David started with Pong as his first major game (though he was quick to add his own signature weapons like fireballs and razor blades to spice things up). If you set the bar too high, too early, you're setting yourself up for unnecessary amounts of frustration.
Do Competitive Analysis (but not too much)
When you're in an industry traveling at the speed of Moore's Law, if you don't pick your head up once in awhile to look at what the other guys are doing, you might get left behind. Who would have thought that playing games could be considered work? Just make sure you don't do too much research on the competition. Reaching level 80 in WOW for example is probably overkill.
Don't Give Up
If you're not struggling at all, you're not learning anything. It's when things are most difficult that one has the greatest opportunity to learn something new and get that warm fuzzy sense of achievement that all programmers have when they solve a problem. There were a few times when I was learning Scheme in college where I almost defenestrated my computer instead of finishing my problem sets but I'm very glad I didn't.
As always feel free to follow up with questions or observations. Do you have any questions that I did not address, or lessons you've learned developing your own games?