Helping people with computers... one answer at a time.

Computer program can be a fun and rewarding profession. I look at some of what it takes to get there; some aspects are obvious, others not so much.

My son wants to become a video-game programmer or designer. What advice do you have?

This is a very common question - particularly with video games. Kids really enjoy playing them and are often drawn to the potential of creating them as well. There's even a series of TV commercials that play on exactly that scenario.

I've hired a lot of programmers in my career. I've also not hired even more. So I definitely have some thoughts and advice.

First, what'd I'd call the basics:

  • Learn to program, THEN learn to program games. I can't stress enough that it's the fundamentals that will serve you well over the long run.
    "Listen to your heart. Good programmers love to program."
  • Listen to your heart. Good programmers love to program. Heck, that's true for any profession - it's the "do what you love" admonition. If after a while you find yourself dreading the work, perhaps it's not for you.
  • Program. Use any excuse. This'll be easy if you followed the previous point. There is simply no replacement for experience. That applies to the eventual resume, of course, but to your skills as well. The real world is full of lessons - find them. Use them.
  • Once you have some basic skills, get an internship, or a part time job, or a volunteer position using them. It's everything that I just said about the real world, but with a boss. Your career will include a boss - perhaps called manager or maybe customer. If you intend to make money at it, you'll need to know what it takes to do what you love, even when others are telling to do what they want.

Some points that are very specific to video or computer game programming and design:

  • Programming video games is very very different than playing video games. Programming video games is much closer to programming an operating system like Windows, but with even more demanding customers. (If it's the playing that excites you, perhaps a test position is more interesting, especially if you're good at breaking things.)
  • Everyone and their brother seems to want a career programming or testing video games. That means you'll be entering a highly competitive market. Be prepared to do the work that it takes to excel if you want to compete.

I really need to reiterate the fundamentals. Don't get hung up on what programming language or what platform ... programming is more about how you think than whether or not you can express your thoughts in C++ or Java, or on a Mac or a PC. "It's just another language" is something you'll hear from top-tier programmers.

I've told people that HTML is a programming language and I encourage its use, but be careful. Building websites is not the basis of a career in something as complex as video game design. If your passion turns out to be the web, then invest in some of the programming languages of the web: PHP, Perl, Flash, Javascript.

Take the programming classes that you have access to: high school, community college, vo-tech, whatever. Then go get yourself a Computer Science degree or a closely related Engineering degree. I have mixed feelings on whether you need a Master's degree.

My own pet peeve: PLEASE make sure that you learn assembly language along the way. It won't make sense today, but it'll help you understand concepts and techniques that a lot of programmers today have trouble with. AND it'll help you write better code and aid in debugging it as well.

There are so many skills that could help, I could go on. Math. Logic. English. Heck, verbal and written skills are areas that I wish I had spent more time on and I would recommend strongly to anyone entering any profession.

Article C2473 - November 27, 2005

Leo Leo A. Notenboom has been playing with computers since he was required to take a programming class in 1976. An 18 year career as a programmer at Microsoft soon followed. After "retiring" in 2001, Leo started Ask Leo! in 2003 as a place for answers to common computer and technical questions. More about Leo.

Not what you needed?

Recent Comments
91 Comments

I would enjoy learning some things from you on how to actually code programs and learn how to change things like that . :)
Please Respond !

Posted by: Nick Grimes at February 7, 2012 11:04 AM

I have always wanted to be a game programmer and it has been a big passion for me all my life. I have played many games when I was a kid. However I got into programming later in life and I failed at first. That didn't stop me from pursuing my passion. Taking a C++ class was tough with no programming experience. However I took it again and I loved it. I also decided to get a Bachelor in Game and simulation programming from Devry. I also took many programming classes and I learned lots. Eventually I got a job as a web programmer but that didn't last long since I was the only programmer and they had high demands. This was my first professional programming job. After that I started an internship and learned C# and Unity3d game programming. I was able to make a simple games and my interest expanded. All through my time at Devry, I bought books on opengl, directx, game programming, windows api, and assembley. I listened to many video tutorials on several subjects. I learned that game programming requires many skills. First its important to know class design structures. Its important to know math and physics. However you need to be able to implement the math and physics using c++ . You have to be well versed in C++. You have to know your pointers very well. You have to know about memory management. Throughout my road to become a game programmer I got interviewed for a company. But I still wasn't prepared. I was offered a web programming job at that moment. Since I needed to live and it was getting tough. I took the job and learned web programming and database programming. I also found out that programming is not about the language. Its about the design, how the logic is designed. There is so much involved. You can either choose to make your own game engine which will take you some time, or you can use many game engines out there. There is cocos2d for iphone development, There is Unity3d for pc, mac, and mobile development. I would start with a game engine and figure out how it is engineered. Then try to make your own engine. This will prepare you for a game job. I would make a small game and release it. This will be your road to game career. Also there are many positions in a game company. Decide what kind of game programmer you wish to be. Check sites like Gamasutra or GameDev sites for the positions. Also game programming is a lifelong learning. You always need to keep up with the latest findings in AI, algorithm, memory optimization, graphics rendering, and many other techniques. About me I am still hoping to get in a game company and I am going to GDC 2012 to network and learn more about game programming. Its an amazing hobby for mine right now. I love programming. I am working on a 3d engine currently and some games on ios and android. I love to learn more and more about it. Also don't forget to check out IGDA

Posted by: arbidh at February 12, 2012 7:49 PM

I am very interesting in programming I see it as a high valuable job in the future. But I find it so boring. I am stuck, I like the idea of it but don't enjoy the work is it easy to teach yourself?

Posted by: Will Hume at February 15, 2012 8:20 PM

I've worked and played with software since 1966 and must say your column on programming is the best I've seen.

Posted by: chesscanoe at April 1, 2012 7:08 AM

I tend to worry about those commercials that basically show people playing games as part of the programming. Maybe playtesting, but then (from what I've seen & done) it often is along the line of "keep bumping into this wall and tell us if you somehow accidentally get stuck behind it."

As well, programming isn't cut out for everyone, IMHO. I can do some moderate amount of scripting, but programming -- let's just say I managed to break a "hello world" program.

One suggestion I'd like to make, although it hasn't helped me, is to take a game you like and create mods. A lot of games are quite highly moddable and it's actually quite fun. (Funny how I can do this but still can't pick up on anything heavier than scripting. I have an exceedingly bizarre brain at times.)

Posted by: Me at April 1, 2012 7:34 AM
Post a comment on "How do I become a computer programmer?":





Remember Me?

(You may use HTML tags for style)

Before commenting, please...

  • READ THE ARTICLE. A comment that shows you didn't will be deleted and ignored.

  • Comment only on the article. Use the search box at the top of the page if you have a question about something else.

  • NO PERSONAL INFORMATION in the comment. No email addresses. No phone numbers. No physical addresses.

  • Anything that looks the least bit like spam will be deleted. Links to unrelated sites or links that appear to be primarily promotional will be deleted, or the comment will be deleted.

  • Don't ask me to recover lost passwords or hacked accounts. I can't. Those comments will be deleted.

  • I can't respond to every comment. And I can't vouch for the accuracy of others who do.

Please wait. Your comment is being processed ...