Categories
Game Development

Interviewing: Smart, gets things done, enthusiastic, and communicative

I’m getting better at interviewing people now. What I’ve found is that Joel really hit the nail on the head with The Guerrilla Guide To Interviewing. Only two things really matter in an interview: smart, and gets things done. Resumes only tell part of the story. Some people who come to me with excellent resumes […]

I’m getting better at interviewing people now. What I’ve found is that Joel really hit the nail on the head with The Guerrilla Guide To Interviewing. Only two things really matter in an interview: smart, and gets things done.

Resumes only tell part of the story. Some people who come to me with excellent resumes and a lot of experience are terrible. Some people who come to me with no experience at all turn out to be great. This is because of two additional factors: communication and enthusiasm.

People with bad communication don’t get things done because they do the wrong things. By communication I don’t mean reading and writing skills, but the willingness to have one’s ideas discussed and reviewed by others. Enthusiasm means a desire to do a good job. That seems obvious, but many people in the game industry only do what they are assigned, and no more, especially those with many years of experience, although this is more the fault of the management than of the programmer. A good portion of my day-to-day management is spent trying to build enthusiasm and facilitate communication.

The reason for smart is not just that it is a good quality in itself, but that it leads to better working independence (needing less communication) because of the ability to make good decisions and see past a specification. The problem with specifications, especially over the internet, is any specification less detailed than the code itself is open to interpretation. The more open, the more ways to do it wrong. The less open, the more possible it is to get fixated on the details, and less on the result. This is part of the reason why government contracts always turn out mediocre – the specifications are exact and rigid, meaning the great programmers never have a chance to improve on it.

A day to day decision I face is how much detail to put in a specification. For example, a loose specification is “Write a class to display text on the screen.” The implementer could do anything from writing a class that only writes a single line of text at a specific location to writing a class that supports multi-language true type fonts, with scrolling, fading, and animation. They may spend a day or a week on the task, working the whole time or slacking the whole time, and I no real way to know until I see the results. On the other hand, if I give a strict specification, such as “you must use true type fonts” the implementer will likely not even think about other, better, ways to do the job, such as using fixed-width fonts that look worse in some contexts we can avoid but double the framerate.

You can’t blame someone who consistently does something according to specification because if something is missing it’s your own fault for not specifying it. At the same that person isn’t going to be very productive in the sense of making a good game.

Enthusiasm is related to independence and is important in any job, but especially over the internet. At my very first job my boss was extremely hands-off. I don’t think he checked up on me more than once a month and never did code reviews. At the time he only had 2 programmers – myself and another guy. I just got out of school, it was my first game job, and I was smart, it was a game type I liked in a field I liked, and so I had a lot of enthusiasm. So I worked 12 hour days and was happy to do it. didn’t need specifications. I just thought of what was good, and I did it. The other programmer had neither positive quality. He did nothing the entire project up until the last month it was due, and then only did the bare minimum, and a bad job at that. He also never communicated, except in anger, when I would touch his code. That is the problem with a lack of enthusiasm.

So what do resumes tell you? One thing is if a person does a lot of side projects, they are probably enthusiastic, and they probably get things done. At least when they are working for themselves. But that is better than the alternative, which is a person with no side projects at all. A new graduate who has worked on freebie games is probably the most enthusiastic. This is why EA hires new graduates – they are the most likely to take crap and the most likely to work insane hours on the worst kinds of tasks.

As Joel said, there is a great difference in the productivity of the best and worst programmers. It’s better to hire someone twice as expensive if they can do twice the work. The trick of interviewing is finding out who these people are. Interviewing is probably the most difficult and important task that faces a company.

Leave a Reply

Your email address will not be published. Required fields are marked *