How to get a job as a game programmer
The GamesIndustry.biz Academy explores the routes into one of the business' core competencies: game programming
Our guides can help you to find the right path to the games industry job of your dreams. You can read our other in-depth guides on how to get a job in the games industry on this page, covering various areas of expertise.
Despite the myriad of fields coming together in the creation of a video game, the game developer cliché is often one of the reclusive, nerdy programmer coding in a corner.
This isn't not only a misrepresentation of how games are made, but also of how programmers work.
Programming is a creative field that requires technical knowledge and lots of interpersonal communication with other disciplines in order to pin down entire systems and mechanics, fix bugs, create rules, and just code an entire world to life.
"The job of a programmer is to understand a problem, figure out the best solution for that program given a set of constraints, and model that set of solutions as a series of well-engineered abstractions," sums up Rodrigo Braz Monteiro, CTO at Chucklefish.
Monteiro has been a programmer in the games industry for 16 years, and climbing through the ranks at the Wargroove developer since 2016. We asked him and three other programmers with varying seniority levels how one can come to be in this role.
- What education do I need to get a job as a games programmer?
- What experience do I need to get a job in games programming?
- What qualities and skills do I need to be a game programmer?
- What are the common misconceptions about games programming?
- What are the career progression opportunities of a game programmer?
- Advice and resources for new and aspiring game programmers
What education do I need to get a job as a games programmer?
Programming is a field that requires hard skills, meaning that a traditional educational path can be beneficial, for those who can afford it and who are receptive to that approach.
"I have a BSc in computer science and engineering, and an MSc in artificial intelligence," says Duygu Cakmak, who has been a programmer for over a decade and is now project technical director at Creative Assembly. "I think my education was closely aligned with what I wanted to do, and I would recommend a similar path to people who would like to follow a similar formal route in education."
Nikhil Ramburrun, gameplay programmer at Ubisoft Toronto, recommends looking into either a computer science or an engineering degree if going to school is an option available to you.
"It does open more opportunities if you choose to do something else halfway through," he explains. "My own background is in electrical engineering, so my degree wasn't focused on programming, but I did take some courses. A lot of things about programming are self-taught, in my opinion."
Jaden Palmer-Leandre graduated from a bachelor's degree in computer science in 2018, and has been working at Sports Interactive as a gameplay programmer since. He agrees that his degree helped him secure his first job but doesn't think formal education is crucial to becoming a programmer.
"The best way to develop your skills and learn is to just start programming," he says. "At the same time you will be developing an excellent portfolio that will showcase your talents better than any degree will. If you can show you have the same breadth of knowledge as a graduate you will have a good chance."
Monteiro is a good example of a self-taught programmer. He did study in adjacent fields but initially started coding when he was 11 through Klik & Play, a 1994 game development app, before slowly picking up C and C++ from age 13.
"Because I didn't think you could realistically be a game developer in Brazil, I ended up going to university for engineering -- mechatronics at first, then computer engineering," he says. "Having a strong grasp of both computer science and mathematics (especially geometry and linear algebra) is essential -- and I strongly disagree with anyone who claims otherwise! But it can be self-taught if you have the inclination for it, and indeed nearly all of my knowledge of computer science is self-taught.
"Different methods work better for different people, but keep in mind that there will always be a minimum amount of self-teaching that will be needed"Rodrigo Monteiro, Chucklefish
"Different methods work better for different people, but keep in mind that there will always be a minimum amount of self-teaching that will be needed, since you'll be constantly running into novel problems frequently throughout your whole career. For people who learn better by themselves, self-teaching might be the better option. There are other benefits that university will provide, of course, such as connecting you with a network of mentors, potential employees, and like-minded people, but it's far from the only road. When it comes to hiring programmers, I don't consider whether they actually hold a relevant (or any) degree, as their body of work is a far more important metric."
Cakmak also highlights that there are many ways to learn beyond traditional paths.
"Attending conferences ultimately had real value for my journey -- I went to the Nucl.ai conference, which is where I met the Creative Assembly team," she says. "I don't think that formal education is necessarily crucial for a successful career in programming. Regardless of whether you have tertiary education or not, curiosity and self-learning and a drive for continuous self-improvement is the best route to success.
"For this field especially, given that [it's] always advancing, if an individual chooses a path of self-education, there is a need to continually identify knowledge gaps and areas for improvement, and strive to learn those areas systematically and autonomously."
What experience do I need to get a job in games programming?
Finding your first job as a games programmer has more to do with your portfolio than it has to do with your experience. And as already highlighted, said portfolio can be built in autonomy or through a degree.
"There are opportunities to become a games programmer through junior positions and these usually don't require previous experience, but they will usually be looking for a bachelor's degree or a stellar portfolio," Palmer-Leandre says. "Without experience, there must be some evidence of you being passionate and knowledgeable about the subject matter. Build games or small programs while you hone your skills and show them off -- this will almost always convey your feelings accurately."
"Without experience, there must be some evidence of you being passionate and knowledgeable about the subject matter"Jaden Palmer-Leandre, SI
You can learn a lot by doing game development projects and getting them out to the public, Ramburrun says, adding: "Even more than people who went to school."
"You'll learn to design, code and -- most importantly -- test your video game," he continues. "I'm definitely a more practical person, so I learned a lot through making projects than I could have from just school.
"As for getting into games, having game dev projects absolutely helps you stand out. Some companies have programs for new graduates, like Ubisoft Toronto Next, to help them get into the industry without the experience, so I would keep an eye out for that. You can also make an impact at hackathons, like Hack the North, and game jams."
Getting started with game programming has become much easier in recent years, Monteiro points out, due to the democratisation of game development tools such as Unity, Unreal, GameMaker, and Godot, he notes. If you're unfamiliar with these engines, the GamesIndustry.biz Academy has a series of guides on the topic.
"A large number of general purpose game engines allow you to get started without needing a deep understanding of systems programming," Monteiro continues. "In my opinion, the best path to get into game programming is to download one of those engines, watch some YouTube tutorials, and just try implementing some simple games.
"The full body of knowledge required to be a senior game programmer is very extensive and will require years of practice, reading, and researching, but the first steps are now accessible to anyone who has a knack for abstract thought and a love for making things... And it's a very fun journey."
More important than your programming background is whether or not you can admit what you don't know and are willing to ask questions, Ramburrun says when asked about what he'd look for when recruiting a programmer.
"Making games is a team effort and being able to mesh with the team is very important. I would rather have someone who's programming skills aren't as strong but is willing to leave their ego [behind], learn and work together as a team, than someone who is an expert in C++ but is terrible to work with."
What qualities and skills do I need to be a game programmer?
When looking for a new recruit for a programming job, Monteiro says he looks for the following:
- Does this person seem like they can communicate effectively with the whole team?
- What is their body of work like? These could be either personal or professional projects, and the scope here will depend on the seniority of the role.
- What are their main interests in programming? Do they seem passionate about tackling hard problems, or are they content with getting by with whatever they can scrape off the Internet?
This boils it down to a few key areas.
- 1. Technical abilities
"A good programmer is a lazy programmer," Ramburrun says. "No matter how cool it sounds, there's no need to reinvent the wheel if the technology is already there."
"A good programmer is a lazy programmer. No matter how cool it sounds, there's no need to reinvent the wheel if the technology is already there"Nikhil Ramburrun, Ubisoft
This assumes a knowledge in various programming languages -- whether C++, Java, C#, or something else, which you will have learnt in school or by yourself. Ultimately, the languages you need will depend on the position you're aiming for.
Keep in mind that you will also learn a lot on the job.
"From the technical side, the first thing we look for is fluency in C++ as we develop our games in our inhouse C++ game engine," says Cakmak about Creative Assembly's needs. "An understanding of how the end-to-end process of game development works and how games are made is also important, as well as a passion for them."
- 2. Problem-solving
An interest and a keen ability for problem-solving are also essential to being a good programmer.
"Aside from the knowledge of your chosen language(s), good problem-solving skills are a requirement as there are always problems to solve and many of them abstract," Palmer-Leandre says. "Patience will also help you when you're coming up against code that's difficult to debug."
Being good at problem-solving also comes with a curious mind, Cakmak says, as well as a drive to continuously self-improve.
"We are always looking for individuals who have high problem-solving skills. This doesn't mean they necessarily know how to solve every problem, but more how to ask the right questions about a given problem, and suggest solutions based on the requirements.
"Perpetually solving problems can sometimes be frustrating, and a positive, can-do attitude is really important," she continues. "It is worth noting that every problem may well have several solutions, and almost always there is no perfect solution. It is always a balancing act of trade-offs to some degree. An experienced programmer will be able to effectively see the problem from many different angles, and in turn assess the ultimate compromises and trade-offs with a view of the ultimate needs of the software."
As already touched upon, problem solving also includes ironing out abstract issues, so this is something you need to be comfortable with.
"Programmers must have the ability to do complex abstract reasoning, the same skills you need when you're solving a puzzle, figuring out the solution to a maths problem, or making a decision in a complicated situation.
"Programmers must have an unquenchable thirst for knowledge in their field, as they will need to be learning new skills on a daily basis, for the rest of their careers. Programming is not a good job for people who want to learn a skill and be done with the learning process!"
- 3. Communication and teamwork
There's a skill that's common to almost every single job in games, and it's the ability to work as part of a team. You can't say it enough: making games is not a solo effort.
"As clichéd as it may sound, communication and teamwork are crucial to being a better programmer," Palmer-Leandre says. "If you can explain your ideas clearly and work in a way that facilitates other team members it will most certainly lead to a successful career."
Which means that having good communication and interpersonal skills is very important, Ramburrun adds.
"An experienced programmer will be able to see the problem from different angles, and assess the trade-offs with a view of the software's needs"Duygu Cakmak, CA
"Working in games, you'll find that you talk to a lot more people other than just your teammates. They will have different backgrounds, personal and professional experiences and being a nice, kind and understanding person goes a long way. Leaving your ego at the door is a good way to get started on that."
Working in multi-disciplinary teams means it is essential to be able to communicate technical concepts to non-technical people, "as well as be receptive to commercial and design concepts that influence our technical approach," Cakmak says.
"The best programmers don't work in isolation; in an ideal world the most effective solutions and technical approaches arise from collaboration -- this can be senior programmers sharing previous experience, as well as ideas surfaced from more junior team members suggesting alternative approaches. Mentoring, and being a mentee, are important paths to success at every stage and are often genuinely rewarding and motivational."
What are the common misconceptions about games programming?
There are several clichés that come with being a programmer. These misconceptions are detrimental to the field and can often have a turnoff effect for aspiring recruits. Or, on the contrary, it might wrongly make it an attractive field to some.
One of these misconceptions is linked to the skill we just discussed: teamwork.
"Programmers are often thought of as reclusive and antisocial," Monteiro says. "There are certainly many moments of focused solitude as you try to solve some complex problem, but a programmer who can't communicate well with the rest of the team is ultimately never going to be a great programmer."
"The consideration that goes into designing systems and features from the ground-up can be a form of art in and of itself"Duygu Cakmak, CA
Palmer-Leandre says the most common misconception about being a programmer is that "you will be writing code like in Mr Robot."
"Sometimes you think you will have code flowing through your fingertips at all times and be completely knowledgeable enough to do this in a language before you really begin," he explains. "You will learn that it takes many years to become fully proficient and even then, there are always new things to learn, it's the beauty of programming. You will likely visit StackOverflow and many other websites frequently during your career and will always need reminding of -- and learning -- lots of different concepts."
For Ramburrun, the most common misconception has to do with hard skills, and the idea that you need to be great at math to be a good programmer.
"There's little truth in that. In reality, you'll learn a lot of things on the job and each position has a specific skillset that you'll develop the longer you are there," he says. "It's okay not to know about something and it's okay to admit that. What matters is how willing you are to learn and consistently improve. Also being a good person goes a long way."
Finally, Cakmak touches upon a core issue: "One of the biggest misconceptions around programming as a discipline is that it is not creative. This is far from the truth -- there are many ways to solve different problems and creativity is a key part of finding the right solutions. The consideration that goes into designing systems and features from the ground-up can be a form of art in and of itself."
What are the career progression opportunities of a game programmer?
Monteiro, in addition to being Chucklefish's CTO, still works as a programmer -- currently as lead on the company's upcoming magical school sim, Witchbrook.
"Most programmers are in love with their craft, and resist moving to more managerial positions later in their career," he points out. "A typical path will involve becoming a senior or principal programmer, and many programmers will gladly stay in that position to the end of their careers, or they can become involved in more managerial roles and become lead programmers, technical directors, or CTOs.
"Because programming is an incredibly useful skill, many programmers find a lot of success in completely unrelated fields, using their programming skill as their 'secret weapon' to give them an edge in whatever new career they pursue."
As Ramburrun puts it: "There are different career tracks you can progress through, but generally as a programmer it will fall into two broad categories: managing people or managing the tech.
"If you're not sure if you'd like to be a people manager, you can request manager training to see if that's your cup of tea. On the other side, if you like the tech and programming a lot more, then becoming a senior programmer is an option after getting more experience.
"But your career also doesn't have to be linear, and you don't need to stick to one dedicated pathway. It can be driven by your passion and interests, which might change as you're exposed to different roles and job families."
Managing people or managing the tech is what Creative Assembly calls the Leadership or Expert pathways. The former can take you into associate roles to mid developers, senior and finally principal. The latter steers you towards becoming a lead for the team, after which you can reach director roles
Advice and resources for new and aspiring game programmers
- Don't specialise too early
When she started studying with the idea to work in games, Cakmak really wanted to work in artificial intelligence. Which is why she followed on her bachelor's degree in computer science with a masters degree in AI.
While she doesn't express any regret in doing so, she confesses that she might do things differently if she had to do it again.
"But your career also doesn't have to be linear, and you don't need to stick to one dedicated pathway"Nikhil Ramburrun, Ubisoft
"From the outset, I was an AI programmer through and through, and I focused on my specialisation a lot. If I were to start again, I would make sure that I took the time to 'get my hands dirty' with all aspects of game development as much as possible, to broaden my horizons.
"Each domain provides a different set of problems to solve and unique challenges, and in turn gives you a perspective to understand and come up with varied solutions and problem-solving methodologies in multiple areas. This broadens one's perspective and improves their ability to transfer different techniques in their own specialisation to create more effective and better solutions."
- March to the beat of your own drum
When starting in games, it's easy to feel a bit overwhelmed. As much as possible, try to not compare yourself to others and don't be afraid to ask questions.
"I've had a great experience in my first few years as a programmer and wouldn't change it for anything but, if I could do anything differently, it would be to not set my own expectations so high and compare myself to others," Palmer-Leandre says. "Everyone is on their own separate journey and works in their own ways, comparing to another is the most counter-productive thing you can do, nothing good can come of it."
Ramburrun adds: "I would definitely ask more questions. I tend to try and do things on my own, but I quickly realised that game development is a big machine and asking questions is not just very important for your development but also in making sure you have all the right tools to make your learning experience as smooth as possible."
- Go and code
The most common piece of advice from our interviewees was to just give coding a go, and make projects.
"Start now! Like, right now," Monteiro says. "A lot of people want to 'one day' try programming, but there's no time better than right now. Don't wait until 'after you go to uni,' just go ahead and give it a try."
Palmer-Leandre adds: "Go and code. Find a problem you want to solve and build something to fix it. If you want to become a games programmer, download a game engine and work through tutorials and documentation to learn the 'ins and outs' of it. There are many languages, engines and frameworks out there and there's a big chance that one will be a perfect match to your skills and needs."
"Go and code. Find a problem you want to solve and build something to fix it"Jaden Palmer-Leandre, SI
Cakmak says it's important to go beyond the theory and just get your hands dirty.
"Undertake personal projects, create small games, and game systems," she says. "Re-factor and spend hours and days practicing again. Programming theory is of course important, but the most vital aspect of becoming a good programmer requires days, months and years of practice and perseverance.
"Find interesting problems that appeal to you, and then try to solve these using multiple approaches. Communicate with others and look at publicly available solutions to analyse and assess. The ultimate goal is to never stop learning."
Ramburrun also advises to not limit yourself to a specific language and engine.
"Make small projects and release them to the public," he says. "You'll wear different hats and that will help you speak the same language as designers, production and testers when you go out to a studio. If the possibility opens up to you, I would absolutely recommend trying to get a mentorship in games."
All our interviewees recommended looking for YouTube tutorials on programming. Beyond that, here are the resources they recommended to newcomers:
- "The Pragmatic Programmer" by Andy Hunt and Dave Thomas, an excellent primer in the philosophy of good software engineering
- "C++17 - The Complete Guide" by Nicolai M. Josuttis
- "Effective Modern C++" by Scott Meyers
- "Software Engineering at Google: Lessons Learned from Programming Over Time" by Hyrum Wright, Titus Winters, and Tom Manshreck
- More books are recommended in this Creative Assembly talk about how to become a programmer (see list in the article)
- HackerRank, to prepare for interviews and brushing up on skills
- W3Schools, to learn a language as a complete beginner
- Udemy has good programming courses, particularly game programming
- Stack Overflow for when you are stuck on a problem
- "Where to Get Started Learing C++ and What Resources to Use," article by Shafik Yaghmour
More GamesIndustry.biz Academy guides to Working in Games
Our guides to working in games cover various perspectives, from hiring to retention, to landing the job of your dream or creating the right company culture: