Interviewing as a Programmer in the Video Games Industry in 2021

In the span of two and a half years, I’ve been engaged in interviews with thirteen different studios across North America and Europe for the positions of lead and senior gameplay programmer. During this time, I’ve also sat at the other side of the table interviewing more than fifty candidates for similar roles.

I am hopefully done being the interviewee for the foreseeable future as I start a new role this month. Thus, I’d like to note what my experience has been as an interviewer and interviewee and share it for two reasons:

  1. To inform other hiring managers in the games industry of what the state of interviewing a programmer is like in mid-2021.
  2. To help fellow video game programmers prepare for interviews they might have upcoming.

I’ll be discussing the general recruitment steps that happen at most studios in depth. Some studios might be a little laxer and skip a step or two, while others might follow them all. Regardless, the industry seems to be professionalizing (not just in terms of hiring, but also in things like HR processes): Whereas around ten years ago, a good reference and a single interview was enough to get you an offer; nowadays, the process resembles more of what you would find at well-established tech companies.

Furthermore, on the subject of the industry becoming more mature, I think there’s probably never been a better time for being in the industry. Financially, it continues to achieve record results; there is investment like never before; and best of all for employees, there is so much competition for talent that companies are offering continuously improving conditions and benefits.

Although my experience is largely in management and gameplay programming, I think most of the steps are similar for any programming roles with the difference being some discipline-specific interviews. I’ll go into detail about the gameplay programming interviews and leave you to investigate what one for your own role might be like.

The Stages of Getting a Job

1) Getting your foot in the door

I’ve found that the best way to become aware of opportunities is via LinkedIn, where recruiters are constantly on the prowl for programmers. Make sure your LinkedIn profile is up to date and your title matches the jobs you’re seeking, and for the ultimate boost, make sure you’ve turned on the option to let companies know you’re seeking new opportunities. (Beware, though, that this might carry some risk in that your current employer might see it.) I’ve also heard that having 500+ connections will make you stand out more, but I can’t verify this.

Where possible, you should avoid third-party recruiters when an internal recruiter is available. Third-party recruiters add additional complexity to the process, as instead of the company dealing with you directly, they must go through the recruiter first, who then relays information to you and vice versa, which increases the odds of misunderstandings. From my experience, they often don’t have all the right information and they can be a little liberal with the truth with both the candidate and the company just to get an interview happening. Finally, smaller studios will sometimes hesitate to pay the recruiter fee if the candidate isn’t an absolute superstar. On the other hand, the internal recruiter will have more up-to-date information, and their incentive is directly aligned with that of the company for which they work.

Almost no company hires exclusively via third-party recruiters, so you’re far better off contacting the internal recruiters or contacting any friends or former colleagues you know at the studio, or keeping an eye on job roles in internal sites (in that order).

If you are unable to find a company’s internal recruiter on LinkedIn, then uploading your CV on their website is a good alternative.

As a programmer, you may be overwhelmed by the number of messages you receive on LinkedIn. Just take them one by one and only reply to the ones that interest you. If it’s your first time looking for a new job, it might be easy to get carried away with all the attention you get, but keep your feet on the ground and never take the first offer that comes your way without weighing up other options. Being able to compare offers is important, not just to give you a good idea of what conditions are like, but also because it strengthens your negotiating position when you have more than one offer.

With that in mind, it can be good practice to take on an interview process for a job you’re not particularly interested in. I would also argue that you really start to understand how valuable you are to a company when you’re not blinded by desire to just take the first offer. That is to say, when you’re not particularly interested, you can reject an initial (or subsequent) offer and see how much they really want you.

It’s also a good idea to talk to your friends and colleagues to get an understanding of what the market is like so you can calibrate your expectations. They may have already dealt with a particular company and can give you pointers on the process, or they may have heard something especially good or bad about a place.

If you’re in the early stages of your career or haven’t graduated university yet, then you may find that the experience isn’t as easy as I’ve described it. In this case, you’ll have to be the one doing most of the chasing. Don’t be disheartened, though, as although you’ll be rejected many times, it’s part of the experience and you’ll get better at interviewing with each failure.

For those still in school, or programmers in a different field looking to make the jump to game development, having worked on game projects either on your own time or for school is especially important.

2) The recruiter screen

Next, you’ll be invited to have a phone call with the recruiter. The recruiter will briefly explain what the company is like, what the project they’re working on is like, and what they’re looking for in an employee. They will also give you an overview of the hiring process. If it goes well with the recruiter and you decide to continue, you will move on either to a first technical screen or a technical test, depending on the studio (or sometimes both, one followed by the other).

3.1) First technical screen

The first screen is typically done with a senior developer (or even a very senior member such as a CTO for smaller companies). They’ll ask some technical questions without prodding too deeply, typically about things on which you’ve worked. There isn’t much preparation you can do for this besides rehearsing your stories from your CV and your career at large. You’ll usually talk about a major system on which you’ve worked and you’ll be asked about certain competencies the role requires (e.g., if it’s an online game, have you done much multiplayer work?).

3.2) Technical test

The technical test can either be a live-coding (whiteboard) session with a member of the team over video conference, or an assignment you complete at home. The live-coding versions are typically simple problems involving manipulating a string or some numbers (easy LeetCode problems). Some studios “outsource” this portion to companies like TestDome so you do it in your own time and they then review your code later. Preparing for these is as simple as practicing on LeetCode or similar websites.

Take-home assignments usually take much longer. They typically say they take four hours, but in practice they will take longer. Because you’re doing this at home, the expectation is that things will be done well, so pay attention to detail. Don’t be afraid to put in some additional effort – it will be noticed and appreciated.

3.3) Second technical screen

An alternative to the technical test is a second technical screen that goes into much more depth before bringing you onsite.

4) The onsite interview

The onsite interview is the final stage. You will meet not just with programmers to answer technical questions, but also with people from disciplines related to yours who will evaluate you using behavioral questions and for overall culture fit.

Onsite visits typically include three to five interviews and an informal lunch. This is a long and demanding day. It’s clichéd advice, but it’s true: Try to get a good night’s sleep, stay hydrated, and eat well – your brain will need all the fuel it can get.

The onsite subjects

Your CV

You will be asked at almost every interview to go over your CV. Have your story nailed down. Anything on there is fair game, so be ready to back it up.

Data structures and algorithms

You need to know data structures and algorithms. If you need a refresher, I recommend Steven Skiena’s Algorithm Design Manual. You also need to have a good handle on their time and space complexities.

The whiteboard and how to succeed

Practice, practice, practice. I’ve been highly successful with LeetCode. You need to be able to open any problem and produce a solution quickly (typically within twenty minutes). Having been on the other side of the table, I can tell you it’s clear when a candidate is well-rehearsed. These interviews are short (usually one hour) so you want to get to your solution fast.

Google has a great YouTube channel full of tips for their coding interviews.

Typically, you want to follow these steps:

  1. Understand the problem.
  2. Work verbally through an example.
  3. Think of a solution and state any assumptions you make.
  4. Work with the interviewer to refine the solution.
  5. Make sure you’ve covered edge cases.
  6. Code your solution.
  7. Work through an example using your algorithm.

What’s most important is that you come up with a functional solution. It’s better to have a bad but coded solution than a better idea but with nothing written down. Be ready to discuss the time and space complexities and what you could do to improve them.

It’s also important to remember that the actual interview is probably easier than a LeetCode problem because you have an interviewer available to answer your questions. Although it might not seem like it, interviewers want to help you succeed. Think out loud and they’ll help steer you in the right direction.

C++

The weapon of choice in the vast majority of triple-A studios is C++. Make sure you know the ins and outs of the language as well as its evolution. (C++ 11 and 14 are fair game; I have not been asked about anything later.) I found that the combination of Stephen Prata’s C++ Primer Plus (6th edition) and Scott Meyers’s Effective Modern C++ prepared me well.

Classic subjects include explaining virtual destructors, memory management and CPU efficiency, how a function call is resolved, move operations, and the standard library.

Networking and live

If you will be working on a networked (and optionally live) game, you need to understand networking concepts very well: things such as basic replication, dedicated servers vs. peer-to-peer, cheating, client-side prediction, and optimizations. For live games, you might be asked about diagnosing issues in a live game, feature switches, and CICD systems.

If you need some refreshers, there are many GDC videos on YouTube explaining networking and live game concepts.

Gameplay

You will be asked questions about 3D maths, the process of creating a feature from scratch, game design, and how to make a feature fun. For 3D maths, have the basics down, particularly the dot product and the cross product. Fully understanding these two is a must. Draw things whenever possible and use all the information you’re given. If you need a refresher, Fletcher Dunn and Ian Parberry have a good book called 3D Math Primer for Graphics and Game Development available for free online.

For questions on feature development, you should know how to drive a feature from zero to gold and be able to explain the different interactions you have with your teammates. It is important to understand how a feature can impact different disciplines; e.g., if you make a feature for the player, will it affect AI as well? How will AI respond to it? How will it interact with other gameplay features? What feedback is necessary from UI, audio, or VFX, etc.?

You will likely also have an interview with a game designer who will ask you behavioral questions about the ways you like to work and iterate with designers. They might also ask you questions specifically about game design; e.g., what you like or dislike about a particular game, what you would change about it, what makes something fun, etc. If the position is for an active live game, those questions can apply to the game in question, so make sure you’re very familiar with it.

Leadership and management

Leadership and management questions can be about your own experience (both the successes and the failures) as well as to how you would handle certain hypothetical situations.

Questions about your experience can be about how you’ve built and managed teams and how you’ve handled difficult situations, and about the times where you’ve failed and what you learnt from the failure.

The hypothetical questions tend to be about handling conflicts, saying no to superiors, and making decisions.

5) The offer

If everything goes well, you’ll receive an offer. An offer contains the compensation, the benefits, your start date, and an expiry date. You lose nothing (99% of the time) by trying to get a better deal, but don’t be rude about it. Always offer an explanation as to why you deserve more; e.g., a higher pay because another competitor studio is offering you significantly more or you’d like a signing bonus because you’re giving up stock or vacation time.

What’s up for negotiation at the offer stage?

You can’t normally negotiate company-wide policies such as vacation time and pension contributions.

Beware of “exploding offers.” These are the offers with very short deadlines: two to three days when, typically, you’re given seven days to respond. It’s been my experience that you can call a company’s bluff and they will still accommodate you. It’s a negotiation tactic from their end to pressure you to make a decision.

You will be at your strongest when you have multiple offers you can compare, ideally from the same geographic location.

Finally, an especially important piece of advice: Do not burn your bridges. Our industry is very small and companies and projects shut down very frequently. As much as possible, try to not be a jerk because it’s likely that it will come back to bite you in the future. This advice applies even when interviewing: You might reject a company today, but, in a few years down the line, you might be interested in working with them.

Comparing Regions

The industry is booming and that means that there are studios all over the world. I’ve worked and interviewed in both Europe and North America, so I can offer some perspective on the differences between them.

European studios generally offer, on paper at least, a better quality of life through more vacation time and better social benefits (e.g., generous maternity and paternity leave, more paid days off for sick leave), as well as the cultural opportunity of living in Europe, which can be particularly appealing to some. However, salaries are significantly lower than in North America and the cost of living can be extremely high in certain cities in the UK or on the continent.

The United States is by far the largest and richest market. It’s also very varied. The pay can be extremely good, but the benefits can be hit or miss. The cost of living can range from cheap to prohibitively expensive, depending on where you live.

Canada is a sort of in-between. The industry has absolutely exploded over the past few years due to generous government subsidies, and while the salaries are not quite as high as they are in the United States, the competition among studios keeps driving them higher and higher. Likewise, social benefits resemble those offered in Europe more than those in the United States. The cost of living varies greatly, as well, depending on location.

My Personal Breakdown 2018-2021

Allow me now to share a post mortem of my recent experience:

On two of my earliest applications, I was rejected before the onsite for both. The first time this happened was because I was asked to submit a sample piece of code. I don’t have code worth sharing from outside my professional work, as anything I do in my own time is just a prototype for fun, and 95% of the time it’s in Unity. I submitted a very simple character and camera controller that I use in Unity (C# when they were probably looking for something in C++) and thus, I was rejected right away. In retrospect, I think what I should have done instead is to explain that I have nothing personal worth sharing, rather than rushing something out the door (and not even in the language they wanted).

The second time was with a studio that sent candidates a take-home test, asking them to code several different systems. The test specifically mentioned the code having to be production-ready, meaning I needed to take care of edge cases and code defensively. I did not, and was rightfully rejected. I was once rejected after an onsite. I performed very poorly despite having spent several weeks preparing and studying. I was just too nervous and stressed and I choked on questions to which I knew the answers. I think my mistake here was not being warmed up for the interviews, so my nerves got the better of me. Prior to this interview, I had not done any interviews in over a year and did not rehearse any either. I think I came across as a boring person without a personality during those interviews – just frightened.

I withdrew from four processes because I didn’t feel convinced or motivated enough by what I’d seen, or because I had already completed another process and received an offer.

Finally, my biggest satisfaction has been getting to the offer stage seven times. The impostor syndrome might linger, but it’s an indication that I’m doing something right.

Conclusion

The industry is booming. There is a lot of investment coming in (especially from China – it seems like NetEase and Tencent are investors in every other studio I’ve come across), and new studios are popping up constantly. There’s a lot of competition for talent, and conditions are getting better and better. All in all, I’d say it’s a good time to be a video game developer.