How to properly interview game programmers (programmers should read this too)

From http://www.gamerecruiter.com/2012/12/hiring-managers-vetting-game-programmers/

So you’re in that blue sky brain-storming session and there are a ton of awesome ideas up on the board, and then someone says, “This is GREAT! Now we need someone who can make it work like that.” Yep, you need a programmer. And not just any programmer. You need someone who can push the envelope, work with all the teams and fit into and grow with your company’s culture. That’s the moment your Quest begins . . .

There’s a lot of “ebb ‘n flow” these days and a lot of open jobs. A lot of people are getting hands-on experience, thanks to the ease of making small social games. Their work is easier to see but harder to vet. There are programmers at big companies whose projects are either ending or whose companies are downsizing (or closing), but there may be relocation issues that have to be considered in addition to salaries.

To increase the odds of making the best hire for your company, you want to develop a basic “vetting” system that looks at traditional and non-traditional aspects of your potential new programmer.

Step 1: The Job Description

Before you write the job description, be sure you have a good understanding of what various job titles mean. Terms like developer, programmer and engineer aren’t always interchangeable. A QA person might be called an engineer at one company, while developer might refer to someone other than a programmer. Some programmers prefer engineer because it sounds less like a drudge position. If need be, include a sentence or two that describes what the title means at your company.

Figure out what you want your new hire to do, then write a job description that clearly states you’re required and preferred criteria. Aim for something between “as long as you’re breathing” and “must have a Masters Degree in everything.” (Hint: It’s pretty easy to spot a job req that’s been customized for someone you’ve already decided to hire.)

Here are some things to look for:

Deep interest in gaming, both as a programmer AND a player. This used to be designated as “avid gamer” but what does “avid gamer” mean any more? Of course candidates are going to tell you they’re avid gamers!
Wide variety of gaming genres (ok, at least two!) If you make MMOs or FPS games only, specify that you want someone whose interest and passion is in your genre.
Want someone with corporate-culture experience? These days, that’s different from “must have shipped an AAA game” because small companies can ship AAA titles too.
Let candidates know if some kind of testing will be administered. If you have questions about the legality of testing, check with your HR department, and if they don’t know, get the info from someone who does, like your state’s employment agency. Surprising an interviewee with an on-the-spot test (the formal kind) can be grounds for action, and not the good kind.

Be clear about your interview agenda. Will candidates be asked to undergo both “personal” and “technical” interviews?

Do you want to see a demo of the candidate’s work? Do you want to see it online by yourself? Ask for a CD or URL. Because of proprietary software and NDAs, be willing to look at open source work and/or game modding.

Does your formal application allow for an attached resume, or will the candidate be required to fill it out? Will the candidate be asked to provide a salary history? Letting interviewees know this in advance saves you time and helps reduce the normal anxiety that comes with interviewing. (It also tells you if the candidate can read and follow directions.)

Step 2: The Resume

Read the resume before the interview. This may sound sort of “duh” but looking at the resume in front of the candidate sends a message (intentional or otherwise) that this interview is either inconvenient or a pro forma exercise so the company can hire the person it REALLY wants. Reading the resume in advance gives you a chance to come up with specific questions.

Check out the companies listed on the resume. How long has the candidate worked at the past few companies? Are any of them start-ups? Do you really want someone who has moved quickly up the ranks and name-drops like crazy but has no real experience?

Step 3a: The Interview

If someone in HR is doing the initial interview (other than having the candidate fill out paperwork,) be sure you’ve reviewed the job reqs with that staff member, and provided some initial questions you’d like them to ask the candidate. Letting someone with no technical background and/or real industry knowledge conduct the initial interview might let a fast-talking candidate in the door and a good one get away.

Everyone who’s participating in the interview should be prepared (i.e., has a copy of the resume and has seen the website or CD). If you’re including “peer” interviews for the candidate, be sure your staff knows that their job is NOT to scare the candidate way.

You know the drill: be prepared, be prompt (and if you might get called away to an emergency, let the candidate know before you start the interview), don’t take calls (unless there’s a pending emergency). Be focused and ready to listen. As a courtesy, if you’re deathly ill, stay home and let a colleague conduct the interview, or make arrangements to do it via Skype or some kind of video conferencing.

Having a member of the team with whom the potential hire will be working, preferably the team lead, as part of the interview process is always a good move. While there are many skilled programmers who can fill your job, getting one whose personality meshes well with your other programmers is always a bonus and in some cases, a must.) Remember that these people will be working very closely with each other, often in frustrating circumstances (the dreaded crunch time, for instance), and an argumentative or disruptive team member can cause a hit to productivity. Personality and work ethic is just as important as skill set, especially when you’ve got a small team, a tight schedule and no money to spare.

Step 3b: Interview Testing

Assuming you’re cleared for testing, use simple programming or logic tests. Asking very specific questions, like hex and terminology definitions, isn’t the most effective way to evaluate a programmer’s ability to code because rote answers don’t tell you how the candidate programmer THINKS. Recent grads will probably be able to answer “arcane” questions because the info is fresh in their heads but is that what you really need? Good programmers like to solve puzzles, riddles and mysteries rather than apply canned solutions. The right candidate will have some basic problem-solving skills in addition to specific programming knowledge.

Propose a simple programming issue and ask the candidate how s/he would handle it. Maybe a brain teaser or a suggestion for a modification to your product, which has the added benefit of showing you how well the candidate prepared for the interview. A good type of coding question is one that has several answers; ask your prospective hire to give you the most optimized solution. You can quickly gauge how well he/she thinks and solves problems based on the answer. Someone who consistently picks the most obvious but less optimized answers is good for entry level positions, but if you’re hiring for senior positions, you’ll want people who can think on their feet, understand the need for optimization and have good reasoning behind their choices.

Here’s an example of a good question:

Every number between 1 and 100 has been inserted into an array of 99 integers in random order, with a random number missing. What’s the most optimized and memory-efficient way of figuring out which number is missing?

A weak answer would be to create 100 flags, then loop through the array and log each number, and subsequently loop through the flags to find the missing one. A stronger answer would be to loop through the array and add them all up into a single integer, then subtract the answer from 5050 (the sum of all the numbers between 1 and 100). An even stronger answer would be to sort the array, then loop through until a number gets skipped.

If you want to ask technical questions, avoid asking hypotheticals like what types of inheritance or global variables appear in a CPP file or polymorphisms or singletons in C++. Instead, present actual situations that are relevant to your product or project (unless, of course, any of those other examples ARE relevant. Bear in mind that the simplest code is, more often than not, the best code. A programmer who loves to pepper the code with unnecessary methods like ‘mutable’s and ‘goto’s might not be the best candidate. Likewise, don’t ask questions that are overly complicated for your code base. Unless you regularly need inline assembly code, don’t ask the hire to describe how to unwrap loops or other overly complicated questions. While it’s a great indication of general knowledge, it won’t tell you if they’ll do a good job.

In some circumstances, you may be looking for someone who can not only move forward with a project’s code but also knows how to deal with legacy issues in a manner that doesn’t involve stopping the entire project and starting over from scratch. It’s great when the candidate sees this situation as an interesting challenge but you want to avoid the candidate who claims to be able “fix anything.”

Step 3c: Interview Questions

Ask the RIGHT questions. Hopefully, the combination of a well-crafted job description and vetted resume has weeded out candidates who aren’t right for the job.

Does the candidate use/play your product regularly? If you make MMOs, you’ll be able to determine the level of immersion and investment pretty quickly. If the candidate gets that glazed look and launches into a Very Detailed Account of her avatar and the last raid, that tells you something, too.

“Beware the lone programmer in a room” is an old industry adage that still rings true. You want someone who will fit into your company’s culture and actually likes working with other people. Does the candidate seem like someone who will thrive in a high stress team environment (if that’s what you’ve got) or does the candidate seem like someone who’s more interested in showing others “how it’s done.”

Consider asking some off-the-wall questions like, Do you prefer cats or dogs? Cake or pie? Summer or winter? And why? An industry veteran interviewing a programmer candidate said, “Tell me a joke.” The stunned candidate replied, “Oh. Do you want a funny one? I didn’t really prepare anything.” That told the interviewer what he needed to know about the candidate’s ability to think on his feet.

Ask about a “hot” programming topic that’s making the rounds on industry boards and at conventions. Is the candidate passionate about one side or the other? Dismissive? Baffled? (Hopefully the candidate will not say, “Well, does that really have anything to do with this job?”) Having a sense of humor is actually pretty important in our industry because it reduces the possibility of melt-down at the worse possible moment.

Ask candidates what they love about programming. (Hint: “An easy way to earn a living” probably isn’t what you want to hear. “I love to solve problems” or “I like to make great games” is better.)

What’s the biggest thing the candidate worked on that didn’t ship? Do they have any idea why it didn’t ship? Watch out for indications that the candidate thinks failure was other people’s fault. One of the tenets of Agile Development is that failure by one unit is failure by all, so you don’t want to hire someone who’s more adept at finger-pointing that accepting responsibility and proposing positive solutions.

Has the candidate worked in an Agile Development environment and if so, how was it? If it seems that the candidate felt it was intrusive, see if you can determine whether the system was poorly administered or the candidate just doesn’t like to be interrupted or told what to do.

What was the biggest challenge the candidate has faced as a programmer so far, and how did s/he solve it? (For female programmers, gender bias may be the biggest issue so be sure you stay within the boundaries of what can and can’t be asked legally.)

Ask question(s) that give you a sense of how flexible the candidate is, how willing to try new approaches, take suggestions and explain solutions. Odds are you probably won’t be happy with some hot shot who thinks that everyone else is too simple-minded to understand what he does. (In fact, sometimes this is a red flag that the programmer might not be so good at building strong foundations or accepting responsibility when fixes don’t hold together.)

If you decide to review the candidate’s demo in person, ask what specific portions s/he handled. Obviously, with a small app, it’s probably “all the programming” but if it’s a big game, the programmer was probably part of a team. Ask about how collaborations worked and whether the programmer’s suggestions for game play improvements were considered. Avoid the programmer who says, “Oh, I write the stuff but I don’t play the game.”

Here are some questions on the “lighter” side:

What do you like about gaming?
What was the first computer or console game you played?
What was your first computer?
What’s your favorite game and why?
What’s your favorite book? Movie? TV show?
Do you prefer open worlds or well-defined quest lines? Do you think a game should/can have both?
What’s your favorite character class?
How would you briefly describe the mechanics of your favorite game to a non-programmer?
Do you usually play games to the end?
What’s your Beta test experience? (No, you’re not looking for a QA person BUT it doesn’t hurt to hire a programmer who thinks like a QA person at least a little, as in being able to vet their own work before they hand off a fix as “done.”)
What’s your favorite game of ours and why? (If you’ve only published one game, they better have played it! And listen for their own words—if they sound like they’re parroting what they read about your game, it’s entirely possible they haven’t actually played it.)
If you could work in any other area of our industry, what would it be and why?
What makes a game fun for you? (No, you’re not hiring a game designer BUT the programmer’s job is to make the designer’s vision work.)
If time and money was no object, give me a quick pitch for a game idea. (No, you’re not hiring a marketing person but you want your employees to be well-rounded and be able to communicate with each other.)
Although there’s no single magic formula for hiring the best programmer, you’ve got a lot of tools at your command that will give you a pretty good sense of which candidate has the right skills and is the best fit for your company.

Sounds like a scam for my ideas <.<… The correct answer to that question is to demand a NDA.

Most would, but I wouldn’t. In fact, I don’t think I’ve played a single game for at least a week. I like programming, and I like the challenges that my job entails, but from a recreational PoV most games today simply don’t appeal to me. Of course, I do have a AAA game designer on the team to compliment me :stuck_out_tongue:

Close but I disagree. Sorting the array has to be one of the least efficient methods available - creating the flags is my initial reaction [cause I’d think about this] - unless computation is vastly cheaper than memory. Subtracting from 5050 is by far the most efficient - certainly not less than sorting!

2 Likes

We all have lots of ideas floating around in our heads. You don’t have to give them your gold idea, just give them an example of the sort of thing you can come up with… personally I wouldn’t answer that question with an NDA demand… and remember, in the job they will be asking you for ideas all the time (in some companies)

I’d put that response on the list of ‘what not to say in a job interview’

Game developer salaries are the lowest in the industry, and a zealous, clever gatekeeper approach is just overkill and a waste of time for both a small studio and a potential employee, bordering on demoralizing to the employee, and a poor measurement of how they will actually perform in your environment.

If your studio is actually making any money, a better approach is to have a candidate share a couple of game projects on Github, then if your team likes the code and the project, invite the candidate to a paid stipend for up to week and see how they actually perform in your environment.

An open source project is also another way to gauge interest, especially if your studio has no money. If you’re working on anything interesting or useful, then the right people will gravitate to the project. And studios also get to contribute to the open source world instead of just taking from it. You can judge potential candidates by the quality of their commits, their questions, etc…

So if I want to get a job I need to post an entire project on GitHub, then you’d review the code, still not offer me a job , and ask me to work for a week on a stipend . Seriously ?

2 Likes

^^

Yes, seriously

If you’re serious about any career in software development, you should already have a Github account with active projects regardless of whether you’re looking for a job or not.

Why should artists be the only ones with complete portfolios demonstrating their creative capacity?

Secondly, the paid stipend is to protect you from working for free while a company evaluates your skills.

Thirdly, any reputable studio or company that uses open source but does not contribute to open source is not mindful of the process/community that makes their company or career possible.

This is not practical in many situations. Most countries work on a month to month basis. If I’m a full time employee, and looking for a new job, I’ll only want to let em employers know I’m quitting once I have another job offer, I can’t just go around doing 1 week stipends which may result in me not getting a job. Employees need job security, doing a one week paid stipend for a ‘potential’ employer offers none of that.

2 Likes

So… all serious software developers in the whole world use Github?

Artists don’t often hand out raw source, they usually show gallery or a showreel of their best work.

And the only meaningful way of contributing to open source is to have your own open-source projects? What about bug-fixes, usage reports, feature suggestions, financial and other contributions? Furthermore, contrary to popular myth - opensource != volunteer.

There’s nowhere written in stone saying that the evaluation period has to be one week, or even in person. But if you’re not Google or Amazon, the idea of subjecting an potential hire to a series of long interviews without guarantee of compensation for their time is not respectful of their time or dignity. If you find a quality interviewee, you will work around their schedule and you will compensate them for the time until they can transition to your company.

Serious software developers normally have their code projects readily available for potential evaluators to view. As to which one, Github, Assembla, Sourceforge, etc, is a very minute point.

There’s nothing special about “raw code”. And I don’t think any game company would ask for a full project, just something to evaluate their skills and creative capacity.

Evaluation is a two way street. A game development company should also be judged by the products they put out, how its own programmers write their code, or what tools and libraries they use, etc. A good number of studios have open source repositories, at least the ones who are mindful of the community that makes their career possible.

I tend to ask weird obscure questions that requires a person to demonstrate that are sort of ‘in sync’ with me. You know how you run across some people who you can vaguely explain something to with a few hand gestures and they just get it. Then other people you can explain and explain, draw a picture, and they still don’t quite get it.

It doesn’t matter to me how much more skilled one person may be over another, or what their credentials are, I care more about that fluency of communication. Where I can just vaguely talk about ideas, and they just ‘get it’ really easily, like their brain is running on the same frequency as yours, and you think in similar ways.

1 Like

lol… do you have any idea what youre talking about? Ive been a professional dev for over 10 years, and havnt once considered getting a github account (althought I do have my own subversion server at home). I sure dont need to shove an example project in front of an employer to get work either…

1 Like

I hope with 10+ years of experience you shouldn’t have to, lol. At that point, your ability to supervise, train and mentor less experienced is way more important than any code you could write, at least that’s the case with a lot of senior level development.

Arrr so youre talking about juniors? fair enough then. It can definitely help.

I glossed over most of this thread if that was already mentioned :wink:

Even for a rookie giving out code is a bit much to ask . I occasionally write code for the Unity Wiki , but even then its not like its my entire game project .

See depending on the company they might take my github project, say that’s nice but we’re not interested and then use my code in their commercial project .

With GPL it’s all great until the original coder is broke and other people are getting rich off his code .
Don’t get me wrong , I’m not writing anything that will be ground breaking , but I feel a bit like I OWN the code I wrote .

Aside from this Grubhub debate this thread has been golden .

I think this is the joke you can tell on the interview. I hope you are not serious.

Open source is a buzzword, but the amount of people actually contributing to it is abysmall. Large companies like Apple, Google, Microsoft do it nowdays. But individuals who have a job and family don’t have a time to dig into several arguably bad designed projects for nothing.

Also, in most cases open source software is so sophisticated that it does all you need it to do, so you don’t really have a way to contribute. The whole concept of Open Source is based on “scratching your itch”, i.e. developing features you need, then sharing them. When it does all you need it to do and you really don’t see rom for an improvement (or even if you see, you don’t have skills to improve it), there’s little you can do to contribute aside of spreading the word/financial contribution (if you have the means - I don’t, but when I will have, I have a list of OS projects to donate to).

Artists don’t put layered .psds or .fbx files (their equivalent of source code) in their portfolio. Only the final output. Flattened images, renders of 3D work

Many/most coders work on personal projects but don’t make them open-source. They’ll be happy to show the final results (executable or video), or maybe a code sample on request. But may well not want to give their source away…

1 Like