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.
I’ve hired a lot of programmers in my career. I’ve also not hired even more. So I definitely have thoughts and advice.
Become a Patron of Ask Leo! and go ad-free!
The basics of becoming a computer programmer
First, let’s talk about what I’ll call the basics.
Learn to program. Then learn to program the specific area interests you. It’s the fundamentals that apply across all types of software design that will serve you best over the long run.
Listen to your heart. A good computer programmer loves to program. That’s true for any profession; it’s the old “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, part-time job, or volunteer position using them. It’s everything I just said about the real world, but with a boss. Your career will include a boss – perhaps called a manager, or maybe even a customer. If you intend to make money programming, you’ll need to know what it takes to do what you love, even when others are telling you to do what they want.
Video game programming
Important: Programming video games is very, very different than playing video games.
I can’t stress this enough: the fact that you enjoy playing video games has exactly zero bearing on whether you’ll enjoy programming them, or whether you’ll be any good at it. They are completely different skill sets.
Programming video games is much more like programming an operating system like Windows, but with customers who are often even more demanding.
If it’s the play that excites you, perhaps a test position would be more interesting, especially if you’re good at breaking things. Even then, you’ll be playing the same thing over and over and over, and it’s going to fail – a lot. Can you handle that frustration every day?
Everyone and their brother seems to want to be a video game programmer. That means you’ll be entering a highly competitive market. Be prepared to do the work you need to do to be excellent, and a lot of it, if you want to compete.
Don’t get hung up on what programming language or platform to learn. 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.
Take the programming classes you have access to: high school, community college, vo-tech. Then go get yourself a Computer Science degree or a closely related Engineering degree.1
My own pet peeve: Please make sure you learn assembly language along the way. It won’t make sense today, but it’ll help you understand concepts and techniques a lot of programmers today have trouble with; it’ll help you write better code and debug it, as well.
There are so many skills that could help, I could go on. Math and abstract logic both come to mind immediately.
There’s one important skill I never would have predicted when I started out. If I had to do it over again, I’d spend much more time on my English and writing skills. What does that have to do with programming, you ask? Much more than you think. You will be judged by your ability to communicate clearly and professionally.