Meet a Computer Programmer
Nathan Mates is a computer programmer at Pandemic Studios in Santa Monica, California. Pandemic is a developer of computer games for PlayStation 2, Xbox, GameCube, and for personal computers (PCs). Mates has helped create many games, including Ten Pin Alley, Brunswick Circuit Pro Bowling, Battlezone II, Triple Play 2002, and Star Wars II: Attack of the Clones.
Mates got his start at an early age. When he was in the third grade, he took a weekend course sponsored by a local university, and he became interested in programming. Throughout his school years, he programmed in his spare time and then started doing it professionally after graduating from college. He says the reason he decided to become a programmer was because he has always enjoyed programming so much. “Much as some people enjoy puzzles or building things with Legos, I enjoy programming. You’re building something—going from a rough goal to a complete product. I’ve looked at other programs, said ‘Hey, I can do that!’ and written my own version of them for fun. In short, programming is building and creating things from scratch, producing something that others can use.”15
What His Job Is Like
Mates says that no two days are ever the same at his job. When he arrives at work, the first thing he does is check his e-mail. He gives priority to e-mails from his company’s software testers, who have reviewed his programs to look for bugs. If they find any, they let him know right away. He says that some bugs can take as long to fix as writing new software. “Depending on how serious the bugs are, they can take days to finally fix right—and sometimes it takes that long just to understand what’s causing them. Then there are times when one thing causes something else to break. A good rule is, for every two bugs that we fix, another is introduced.”
When Mates is not fixing problems in existing software, he is writing new programs. He says the process of creating games starts with an idea of what the final game should look like. The programmer figures out how the game should behave, and then begins to build it. He talks about the process: “Writing new code is like the old joke, how do you eat a whale? One bite at a time. Basically, a task may seem huge at first, but if you keep dividing it up into smaller and smaller chunks, eventually you’ll have a small enough piece of code you can do in a minute or a few. Then you keep putting small chunks together, and sooner or later it starts coming together.”
The time that Mates spends programming often varies based on how large and complicated the games are, as he explains:
Some new code can be written in a few minutes, if it’s just a small feature that needs to be added to a game. Other times, it may be a major task that takes days or weeks or months of programming before it’s done. Modern computer games and programs are getting to be huge. The largest I’ve worked on was half a million lines of code—to put that into perspective, it’s about two to three times the text content of the Bible.
The Best Times
Mates says the most exciting part of his job is watching a basic idea actually come to life in the form of a real game.
I remember the first time I saw one of my games running onscreen, and it was so cool. I had programmed for a while, and when I tried to run it, there it was on the screen and stuff was actually moving! It stopped with an error, but after a few quick fixes, I got rid of the bugs and it started moving again. It didn’t run that fast at first, and the graphics were kind of simple. But still, seeing things work like that was great. Now, when I can point to a game on a store’s shelf and know that I created it, that’s one of the best things about the job. Also, it’s cool to get e-mails from fans who tell me they like a game I’ve developed.
Mates says that another benefit to being a game programmer is that the pay he earns is good. He adds, however, that the money is not his primary motivation.
The Tough Times
Just as there is a downside to most any career, Mates says it is not always easy being a game programmer. He sometimes works very long hours, especially when he is nearing the deadline for a game that is about to be released. Mates explains:
When a due date is getting close, we all go into crunch mode. Working 60-hour weeks happens a lot during those times. However, it can be worse at other companies. Some hit 80- to 100-hour weeks, although I’ve never experienced that. Crunch mode is a necessary evil at times, as a lot of stuff needs to be done. But then there are those occasional projects where we have to work in crunch mode for weeks or months, and too much of that can ultimately burn people out.
Mates says that some of the most frustrating times are when a program is not working and there is no obvious reason why. “That’s when we shake our heads and say ‘This should WORK!’ but it just won’t. Yet, no matter how long it takes, or how frustrating it is, we have to keep trying to understand what’s going wrong. And we can’t quit looking for solutions to the problem until all the bugs are ironed out and the game is running right.”
The Programmer Mentality
Long hours and occasional frustration are just part of the job, and Mates says people who choose this career need to understand that. He also says there are personal qualities that game programmers need in order to be successful. “I would say that tenacity [persistence] is probably the most useful skill for a programmer. Typical game development schedules are a year or two years, and it may take months of work before one single thing is visible onscreen and playable. Spending hours or days on one problem doesn’t happen all the time, but when it does, programmers have to deal with it.” He adds that when programmers face what seems like never-ending bugs, they may feel like giving up and running in the other direction. “We can’t do that, though. Running away from the problem isn’t the answer. We have to stick with it until the problems are all solved.”
Mates stresses that game programmers also need the ability to work well with others.
People at game development studios work in teams pretty much all the time. If you’re working on a project with a team of five to twenty people, you really do need to be able to quickly and accurately communicate things in meetings or informal conversations. A brilliant but arrogant programmer tends to be more of a liability to a team than an asset. It’s very much like sports teams, where the entire team is important.
As for whether he recommends a programming career to young people, Mates says yes—as long as they really enjoy working with computers. “You’ll be dealing with computers a lot, so you’d better like it. The hours can be long, and the work can sometimes be frustrating. But when you can look at something you created and say to your friends ‘See that game? I wrote that!’ you’ll have a great feeling.”
15 All quotes in “Meet a Computer Programmer”: Nathan Mates, interview with author, September 9, 2002.