So You Want To Be A Programmer
Friday, October 18th, 2002, 4:46 PM
The following text was written by Michael Evans, a programmer on the Halo team.
Getting work in the game industry can be quite a challenge. There are more people who want to make games than there are jobs. This is especially true at the larger or more famous companies. But you know that programming games is what you want to do with your life. You are undaunted by the knowledge that other programming jobs would be easier to get and keep. The one thing you don't know is where to start. It's not easy, but if you are smart and persistent you should be able to make it. This article should give you a push in the right direction.
High School or Earlier
Having a strong foundation in mathematics is increasingly important to computer programming. Although all your courses in high school are important, math and computer science are especially valuable if you plan on becoming a programmer. The mathematics you learn in high school lays a foundation for the mathematics you need in order to program in a 3D world. 3D games (more so than 2D) are increasingly heavy in math. But even 2D games benefit from an understanding of algebra and trigonometry.
Many high schools offer computer science classes; if yours does, you should strongly consider taking it. If you have access to a computer but no formal instruction, you should try to learn some basic programming. A trip to the nearest bookstore or library should net you some solid intro-to-programming tomes; read them and apply what you learn. There is real value in making those first steps into the world of game programming, even if your games are very simple compared to modern games. Start with tic-tac-toe and work up to checkers. Start with two human players and then try writing an AI. Perhaps even write a clone of Space Invaders or other classic 2D games.
Play games. Talk to your friends about games. Think about what you would do to make existing games better. It’s not as important to be the best at playing a game, but being able to describe in technology, game play and 'feel' why it is better or worse than similar games is an important skill. Find out if your area has clubs for gaming industry people; many larger cities do. Try making maps for multiplayer games. Even though you are primarily interested in programming, learning what you can about the whole picture is going to be valuable. You may have to code an editor of your own someday.
Read everything you can about game development. Of the magazines that actually cover the nuts and bolts of game creation, Game Developer is the best. They have some source code online as well. Some websites, such as Gamespy, have online developer diaries which can be a good source for info about working in the games industry. Even general gaming news websites like Blue's News can have interesting articles. Of course all the traditional gaming magazines and fan sites can be great as well, although they tend to talk more about playing games than making them.
Some colleges offer specific course tracks in computer games, sometimes described as "interactive entertainment" or "new media." I am highly skeptical about those. I would recommend going to the best traditional school you can get into and afford.
If you want to be a game programmer you should major in computer science. Having a solid math background is quite valuable as well, especially some linear algebra (which might well be required for a graphics course anyway). On the computer science side I would recommend a traditional mix - certainly including algorithms and computer graphics. Even if you are not interested in that kind of programming work, a basic understanding of computer graphics will prove valuable. If you like it, I encourage you to take as much as you can.
Late College / After College
It's going to be pretty hard to get a job programming in the game industry without any experience. You need to get some experience as soon as possible, perhaps even as soon as your sophomore summer - your Junior summer at the latest. If you are skipping college, or have already finished, start as soon as possible.
What should you do for experience? Internships are a good avenue if you can get them, but not all game companies offer internships. You may have better luck with an indirect approach, such as the DirectX group at Microsoft, graphics card companies, and graphics or game-related research groups (perhaps at a processor company). Try smaller companies as well as the larger ones.
Another good way of getting experience is working on demos. Chris Butcher (our programmer from New Zealand) did a number of demos related to Myth (a RTS that was Bungie's newest game at the time) including one that allowed the user to fly around the terrain in real time while performing a dynamic level-of-detail reduction on the terrain. We have talked to college students who have written lots of interesting things on their own, including some small games. Again, it's important to demonstrate not just an understanding of the work but enthusiastic dedication to it.
You'll also want to get some experience working in a team environment. Game companies value developers who know how to work with the rest of the team. Anything that shows you can work well in groups - a class project, a job working on some piece of software for your school, or even a large effort with a bunch of friends or people you met on the internet - gives you an edge over the majority of people who apply right out of college.
You should also start trying to interact with the industry. Conventions are can be a good way to meet people if you are pretty outgoing. The Electronic Entertainment Expo and the Game Developers Conference are the two largest ones, and both of them have some talks that are worth checking out. If there are any gaming professional groups in your area, sign up. There's a pretty good one in Seattle called Sputnik and I am sure there are others in other metropolitan areas.
Ready for a Job
The best thing to do when looking for jobs is to check the websites of the companies you are most interested in. We advertise almost every open position right on the front page of our website. However if you want to get a more general survey of jobs out there, both Gamasutra and GameJobs are good resources as well.
You've found a job you want and you're ready to apply - what should you send in? A single page resume is required, of course. In addition to all the traditional education and experience, make sure to mention the game-related demos or group projects you've done. I think it's worth having a goal on your resume that matches the job for which you are applying. It's much more interesting to see someone looking for a job doing animation programming then someone who is just looking for an intro level programming job.
A cover letter can also really help. If you have the time, doing enough research about the company to make your knowledge and interest comes across is a big win too. Don't forget to check your cover letter and resume for grammar and spelling errors; it demonstrates your ability to communicate, a prized skill in a profession where precision is valued.
Game developers look for many things in prospective employees, but passion and persistence are two of the big ones. The best way to demonstrate these attributes is to have some kind of portfolio – examples of game-related work you have completed. We will hire people without game industry experience if they can demonstrate talent, excitement and commitment. Perhaps all you did was write some really small game. Perhaps you got an internship at a game company and did something really cool. Perhaps you built a cool mod. Perhaps you wrote a brilliant thesis about games. You certainly should have something like this – preferably several things like this – to show employers when you apply for a game industry job.
My final advice is to keep at it. A job in the game industry probably won't drop into your lap overnight, and it might not even be the first programming job you get, but if you really want it you'll eventually find a way to make it happen.