Some Advice for Future Game Developers

Default_picture
Thursday, October 15, 2009

Editor's note: Drawing upon his own experiences, Steve dishes out some advice on getting into the game industry as a programmer. Bitmobbers -- can any of you give further insight into breaking into other areas of the industry? -Jason


programmingVideo games were the biggest pastime of my childhood, and by the time I was a sophomore in high school, I knew that I wanted a career in the game industry. The problem was that I had no idea where to start; I wasn't even entirely sure what area I wanted to specialize in: production, design, art, or programming.

Now, the whole reason for writing this entry is to try to offer some advice to those of you who may be trying to get into the industry but don’t necessarily know what direction to take. I just happened to get lucky -- even without proper guidance, I ended up studying topics that were, indeed, generally useful as a game programmer.

Before I offer up any of my opinions on getting into the industry, I feel that I need to state that I have only a few years of professional experience. Also, game development, in its current state, is undoubtedly more of an art than an exact science; as such, it can be difficult to dole out advice that's 100 percent applicable 100 percent of the time.

Also, keep in mind that I'm speaking from my own limited experience, and please take anything I'm about to say with a grain of salt.

 

I heard that production was the easiest way to get your foot in the door (which I now know to be a falsehood). If you love games, who wouldn't jump at an opportunity to be a designer of games? Outside of video games, my other real passion was drawing -- hence, the appeal of being a game artist.

But ultimately, I settled on programming since it appealed to my sense of logic, problem-solving, math, and my general technical savvy. Production seemed too managerial, and art and design relied too heavily on creativity for my liking.

Unfortunately, narrowing down my focus to one field was the easy part...next, I needed to figure out where to start my path toward a career in game programming. I knew no one who worked in the industry, and this was back in the day before you could depend on finding any definitive or truly useful information on the Internet.

qbasic

So one day, while at a local bookstore, I checked out the computer/programming section and decided to purchase a book on QBasic. It was merely an educated guess based on my high school's two programming courses, one of which taught QBasic.

I devoured that book in under a week; it was my first real exposure to programming, and I found it fascinating.  "You mean I can tell a computer to do anything I want?!"  In a way, I found this new ability to bend computers to my will intoxicating.

Within weeks of reading through that QBasic book, I tested out of the introductory class in programming so that I could sign up for the more advance programming class the next year, which happened to teach C++.  While I learned C++ in school during my senior year in high school, I taught myself Visual Basic outside of school.

halIn college, and even though it was still only an educated guess, I decided the major that would be most beneficial in terms of becoming a game programmer would be computer science. Again, within the computer-science curriculum, I tried to focus on taking courses that would be the most useful for game programming, such as courses in artificial intelligence, graphics, and game programming (duh). As it turned out, these were indeed useful courses, but it would've been nice to have had some guidance on the matter instead of just relying on my own common sense to determine what I should study.

Upon graduation, I didn't feel prepared enough for an entry level position in the game industry, so I decided to go to grad school and study computer-graphics software development. I felt confident that specialization in this field would help me get a job as a game programmer, since just about every game has some sort of graphics. Plus, I the field attracted me because of my artistic endeavors as a child, and I figured these might give me some sort of edge.

It was during my second year of grad school that I landed an internship at a video-game development/publishing studio. And the rest, as they say, is history.


I've heard quite a few people ask if they should go to a college that offers specialized programs in game development.  In response, I would say it depends...it's not a great answer, I know, but it's a truthful one. It really depends on the school's curriculum and who you interview with when looking for a job.

Some companies prefer hiring people with a background in game development. Some prefer a more well-rounded background. And others really could care less about your educational background, in which case, it comes down to your portfolio and how well you interview.

I will say this, though; I do greatly appreciate my own liberal arts background and having a more general computer-science foundation. I recommend trying to keep your education as well rounded as possible -- dabble in several areas that interest you the most.

Overspecialization can end up backfiring and limiting the number of possible opportunities; most often, specialization will come as a byproduct of professional experience, anyway. On the other hand, you do want to be able to demonstrate to potential employers where your strengths lie, and if your background is too general, that might be difficult to do. In short, try to find a happy medium between generalization and specialization.

Also, keep in mind the industry's nature of the industry. It's extremely volatile and has an extremely high turnover rate. Back in grad school, one of my professors said that the average job in the game industry lasts less than two years. So if you're thinking of getting a degree specifically in game development, just consider that it's likely that you may find that you may not always want to make video games.

Speaking specifically to game programming and in favor of generalization, being familiar with a wide range of programming languages can be useful. Not only is each language an additional item to tack onto your résumé, but learning new languages will introduce you to practices and paradigms that you otherwise wouldn't get exposed to.

s_eiffeltower3
Note: This isn't the Eiffel you need to study.

That being said, the languages you're most likely to get the most mileage out of, currently, are C++, C#, Python, and Java. Being extremely familiar with object-oriented principles will serve you well, and while you'll get a heavy dose of object-oriented goodness in learning the above mentioned languages, you may also want to look into languages such as Eiffel and Smalltalk.

Many of my earlier classes in high school and college stressed the importance of math, which was something I questioned until I got to grad school and started doing graphics and professional-level game programming.  Trigonometry and calculus certainly have their uses within the domain of game programming, but most important of all is linear algebra...trust me, being comfortable with the core concepts of linear algebra will make your life easier on a daily basis.

code-breakers-1Being able to write optimized code is also key, and often a good way of trimming milliseconds is by being able to recognize when and where to use the proper algorithm, so be sure to pay close attention to your algorithms class.

Taking it a step further, something I missed out on until grad school was design patterns. I can't stress how incredibly important it is to familiarize yourself and be comfortable with the more common design patterns.

Reading "best practices" literature goes a long way toward separating yourself from the rest of the code monkeys.  I like to think it's what separates the programmers from the software engineers and the junior-level guys from the senior level guys.

And finally, even I sometimes struggle with this when in school or working a full week... but you really need to do some technical reading outside of class/work. Not only does it keep your knowledge up to date, your mind sharp and expose you to new ideas, but it also separates the journeymen from the masters. This will be a deciding factor on how long your career in the industry lasts.


I'm sorry that I wasn't able to more specifically address the other areas of game development (production/design/art), but maybe if we ask nice enough, we can find other members of the Bitmob community who would be willing to offer up some more advice for aspiring game developers.

 
Problem? Report this post
BITMOB'S SPONSOR
Adsense-placeholder
Comments (13)
Darkeavy
September 24, 2009
Two years is the average? The industry is even more cutthroat then I thought! How long have you been working in the game industry Steve?
Default_picture
September 24, 2009
@Conner - Let's put it this way, I got into the industry almost four years ago, and my first job lasted three years. What many people fail to realize is just how similar the game industry is to the movie industry. Once a two or three year project is completed, many game studios will reduce the size of the team that worked on said project. So, once a project ends, it's often a crapshoot as to whether, or not you'll be kept on... especially for more junior level guys. Another contributing factor to that two year figure is the stress and/or poor conditions found at certain companies. After working excessive hours and being paid poorly, many newer people simply say "screw this," and walk away from the industry completely. Many companies are aware of these facts and are attempting to counter the high turn over rate through various means, but it seems to be a relatively slow moving process.
Demian_-_bitmobbio
September 29, 2009
Thanks for this post! Know any developers in other disciplines that might like to give their own advice? Also, what are design patterns?
Brett_new_profile
October 14, 2009
Know how to make a sandwich! It sounds silly, but I got a job as a compliance tester by describing each individual step in the making of a sandwich. I've left that job, but I know other people in my old department who have gone on to do production work -- and their careers, like mine, all started with that one silly question.
Default_picture
October 14, 2009
Do you find game programming to be a thankless job like IT, and or often treated like a 3rd class citizen?
Default_picture
October 14, 2009
I'm at U of I @ Urbana Champaign for computer engineering right now, but I have always wanted to get into the video game industry. I suppose it is a good thing that I'm planning on taking software engineering and user interface courses, huh? I'm in a Discrete Data Structures course right now where we implement the structures with C++, and I'm really loving it. Do you know what type of courses I would want to look into if I want to work on networking/online gameplay? Nice post, btw.
Default_picture
October 14, 2009
These are a little old, but my friends in the industry said while these were low on details (particularly compared to this article), they weren't far from the truth: http://media.pc.ign.com/articles/792/792352/vids_1.html
Default_picture
October 14, 2009
I'm a fourth year computer engineering/computer sciences double major right now (for those who wonder why I haven't written lately - THAT is the reason) and occasionally I have the fleeting thought of talking to a game design company here and there. I have a job right now at a software consulting company, and while the work can be interesting, it has served more as an indicator that programming, while enjoyable, isn't something I want to do as a career. In the end, I find myself more interested in designing hardware, and it's a better paying gig (if you can get one, of course), so I usually tuck such curiosities about "what if" in the back of my mind. :) Great article, though. The nice thing about studying computer sciences is that it is vary malleable in terms of what you can do with it. So for those who are moderately curious about game design but aren't sure if it's truly their calling, a computer science degree may be more suitable than a game design school because it will help build to path to many other career choices outside of game design, such as networking, software engineering, web design, etc etc.
Default_picture
October 14, 2009
@ steve 'What many people fail to realize is just how similar the game industry is to the movie industry. Once a two or three year project is completed, many game studios will reduce the size of the team that worked on said project' I never even considered that! I just thought developing teams stayed together even after a game is completed and just added to the team as they got bigger. It sounds quite mercenary in the industry with a lot of short term projects that hopefully will achieve you more short term projects based on its success. With such short intense experiences, do you build strong, close relationships with others on the same project? do you keep in contact after it is over?
Default_picture
October 14, 2009
@Christopher Quach Smaller studios (and large, smart companies) tend to focus on people and so follow the route you described-- "[development] teams stayed together even after a game is completed and just added to the team as they got bigger." Programmers tend to be retained as they are knowledge workers. Artists.. not so much.
Default_picture
October 14, 2009
[quote] In a way, I found this new ability to bend computers to my will intoxicating.[/quote] Totally made my day. In your opinion what would be more impressive in a programmer portfolio?
Default_picture
October 14, 2009
Wow, what a bombardment of comments and questions... @Demian - Trying to explain design patterns without saying something like, "they're patterns for designing/developing software" is going to be difficult. But, basically, design patterns give software engineers a set of templates to use when developing software. Design patterns also gives engineers a common language when it comes to discussing software development. Being a programmer myself, most of my industry contacts are fellow programmers. However, my brother recently started working at a game studio as an associate producer, so maybe, just maybe, if I poke and prod him hard enough I can get him to write about his experiences. @Rich - No, I don't feel game programming is a thankless job; for the most part, programmers get as much, if not more, respect as any other member of the team... at least, from within the company/industry. I don't think many developers get into game development with the hope of becoming famous... if they do, they're in the wrong business. @Joe - I've never really done much online/network coding, but it sounds like you're on the right track. Just keep taking courses that will strengthen your foundations in computer science (data structures, algorithms, discrete mathematics, etc.) and as many networking-related courses you can squeeze into your schedule. From what I hear, network programmers are in high demand in the games industry... good choice! @Garret - "The nice thing about studying computer sciences is that it is vary malleable in terms of what you can do with it. So for those who are moderately curious about game design but aren't sure if it's truly their calling, a computer science degree may be more suitable than a game design school because it will help build to path to many other career choices outside of game design, such as networking, software engineering, web design, etc etc." Amen, qft. @Christopher - And, it really does depend on the company, specifically, their financial situation. Studios that have a proven track record (Bungie, Valve, Blizzard, etc.) are going to be able to offer better job security then studios that aren't able to produce blockbuster after blockbuster. And, like Wilson said, in general, game companies tend to try to retain their programmers more than other disciplines.
Default_picture
October 15, 2009
I'm also a software engineer in the gane industry. It took me several years before I was able to break into it. Most companies wouldn't even interview me since I didn't have any game experience. So, I took a different angle, and applied for a tools position. Since most programmers would rather work on the game engine, I had a better shot at getting in. My skillset worked out well for that and I was able to get a job. I find Tools development to be more exciting since it affects all pipelines (art, art tech, UI, design, etc). Since there are many solutions to a problem when working with tech, finding the optimal solution is a fun challenge. The diversity of pipeline challenges keeps the work stimulating. If you consider working this angle, I would recommend knowing C++, C# for starters (in order of importance). Learn to work with a database. Start with MySQL or Postgres since they're more widely used. Then consider learning Java, python, a functional programming language (Erlang, Lisp, F#, etc). You'll most likely pick up the languages on the job. To help me learn, I came up with a game that I would like to play. Something that would excercise the technologies I wanted to learn, and would be fun to work on. Hope this helps those of you that interested in getting into the industry.

You must log in to post a comment. Please register if you do not have an account yet.