Feature: Take This Job and Love It! - Programmer - Brian Hastings
|
Name: Brian Hastings Title: Vice President, Programming - Insomniac Games Notable Past Projects: Disruptor, Spyro The Dragon, Spyro 2, Spyro: Year of the Dragon Current Project: Ratchet and Clank Schooling/Degree: B.A. Mathematics, B.A. Literature General duties of your position/title: Managing a programming department. This involves assigning tasks to various programmers, making sure everyone stays on schedule, overseeing the general quality of work, and making creative and technical decisions about what to do and how to do it. If there are fewer than five programmers in your department, then this position will usually involve writing code as well. How many people are in your department/team? If you are a manager, many people do you oversee? My department consists of all the production programmers who are in charge of implementing the gameplay in each of our levels. There are five of us, including me. What was the most valuable bit of knowledge or experience you brought with you to the job? I started more or less out of college, so I had pretty limited experience. There were only three of us in the beginning, so we each had to perform multiple jobs. I had a decent C++ programming background and some experience with different operating systems so I became our networking guru, tools programmer, and gameplay programmer. The most useful experience I had at the time was in designing high-level software systems, so I was able to create a useful tools suite pretty quickly. We ended up using that tools pipeline from Disruptor all the way through the Spyro trilogy. What was the first major lesson you learned once you started working in the industry? It's a lot of work and it's damned hard. We started out as three guys with no experience making games, so we didn't really have anyone to turn to when we ran into a really tough problem. In the first couple years, at least once a week I would run into a problem that I had no idea how to begin solving. Even with an extensive background in math and physics, once you actually sit down and try to program a full-fledged 3-D game you're going to run into a hundred problems that you never could have imagined at the outset. Within the first year every developer discovers that making a publishable game takes much more effort than they thought. What academic focuses would you recommend for someone who wants to do your job someday? If you want to be a game programmer these days you need a very strong background in math and physics. It is especially important to be good at linear algebra and vector arithmetic. Fluency is C/C++ is taken for granted for any position, but strong assembly language abilities and understanding of low-level CPU architecture are a nice addition (and required for anyone who wants to do engine programming.) Common misconceptions about your job? "If you can program in C you can make games." This is a fiercely competitive industry and it takes much more than competence in a programming language to stay afloat. If you want to succeed in game programming, you should be able to score 750 or higher on both the math and analytical sections of the GRE. It's unlikely that anyone will ask you for actual scores, but that's a pretty good litmus test for whether or not you're going to make it as a game programmer. Is college a necessity, a really good idea, or not required for your line of work? It's a really good idea. There are a lot of people with college degrees in computer science who are trying to break into the industry, so if you don't have a degree and you don't have any experience the only way you are going to get an interview is through personal connections or a very strong reference. Credentials aside, you do need the equivalent of a college education in computer science and math in order to be competitive. If you can teach that to yourself, I say go for it. What tools and software do you use on a regular basis? We write most of our own proprietary tools, so the programmers don't really use any fancy off-the-shelf tools. We use text editors for writing code (everyone has their own favorite), and C/C++ compilers and debuggers for developing and testing the game. What's your advice for breaking into your line of work? Check the Internet for what game companies are hiring and be willing to take a low-paying junior-level programming position in order to get your foot in the door. This industry is very competitive, so if you have a lot of talent your company will quickly pay you what you deserve in order to keep you.
|