Over the last few weeks I have been interviewing for a full-time position at just the right type of company. I’m glad to say that I’ll be joining Goldstar Events in March. Of the companies that I interviewed with, Goldstar gave me the best experience by far.
I’ve spent quite a bit of time on both sides of the interview table. Obviously the advice here is geared toward interviewing a programmer, but much of the advice would work well for any creative type. Here are a few things that make an interview fantastic for the candidate.
Don’t Be Messy
This may be obvious (like many of the things in this list) but it bears repeating: you never get a second chance at a first impression. If you want to hire someone, you have to look decent. You needn’t be impeccable since most of the power sits on your side of the negotiating table but if you are trying to attract top talent then you need to show them that you have some standards. Nobody will want to work in a company that is chaotic or for a boss that smells.
Don’t Be Late
I remember at one interview I had to wait thirty minutes for the interviewer to arrive. I was literally walking out the door when he came back from a long lunch. Needless to say, things didn’t go well. Just as you want the candidate to show their respect for you by being on time and prepared, you need to do the same. It would have taken an amazing company to make up for an interviewer being seriously late to the interview.
Be Prepared
You should expect an interviewee to have extra copies of their resume for you, and they expect you to have read it before you sit down. I’ll bring extra copies of my resume to an interview, but you should already be familiar with what is on it. If you don’t know who I am or what I have done, why am I here?
Google (verb)
One of the first things I do when I find an interesting candidate is google them. I want to see what kind of online persona they have. Do they have a github account? What about a blog?
One time I was researching a candidate and came across some highly charged political posts she had made. Online she was a fierce debater and had no problem going head-to-head with other people. I was very reassured when she was the epitome of politeness in the interview room. By seeing both sides of her personality I had a kind of character reference and felt I knew her better than I would otherwise.
A word of caution though: you cannot decide not to hire someone based on what you find on google. It may be technically legal but you are inviting trouble if you do this.
Be Cool and Use Small Talk
Most of the nervous energy will be coming from the interviewee. One of your jobs is to be calm and help them get calm, too. Start by asking how their day has been, talk about the weather, discuss any bland and boring topic you feel like just to get the other person talking. A five to ten minute ice breaking session can make the difference between a successful and failed interview.
Prepare your Pitch
Many times employers assume that the candidate already knows everything about their company. While any good candidate will know the general information about your company you should be prepared to let them know what makes you awesome. Maybe you think that the team you are on is the brightest bunch of people on the planet. Maybe your company does something that genuinely makes you proud. Keep that thing in mind and share it with the candidate. At the end of the day, people do things they want to do. Make them want to join your team.
Start with a Softball
Any time you are asking about domain knowledge start off super-easy. Maybe have them write a simple loop in their favorite programming language. Maybe you could have the candidate complete the fizz-buzz problem. The reason you toss them such a soft-ball is not to see if they can code, but to see if they can code while terrified. (Interviews are nerve-wracking, remember?)
Deep Dive
Here’s where most interviews start to go off track. You need to see if the candidate has what it takes. Do they know what they are talking about? If they program on the web, do they understand HTTP? Do they know design patterns? What do they think of design patterns? Have they done agile coding? What do they think of agile? This is the time for you to ask open-ended questions where the candidate either shows how awesome they are, or digs a horribly deep hole. This is also the time for you to stop talking.
Get Hand-On
The single most important part of an interview, and the part that literally 90% of of the companies I have interviewed with did not do is code. That’s it. Have the candidate actually write some code.
I think the best way to do this is to have a problem you know well and then pair program with them to find the issue. Another good approach is to have them help you fix a minor bug. Perhaps you could mix the two by intentionally adding a bug.
This part of the interview shows you how good the candidate is at reading and writing code. That is, how good they are at the thing they will spend the majority of their time doing.
I always feel disappointed when the company does not make me code during an interview.
Take Your Time
The interview process is a time when you really need to get to know each other. Ideally you could have the candidate contract on-site for a week to see how they perform. Short of that luxury you need the interview to last for a few hours. I’d say four hours is a good amount of time.
Many people are upbeat and positive during the interview and show only their best side. It’s like a date. Nobody can keep on their best behavior for four hours straight. That would be one long performance.
Taking your time not only lets you get to know the real person behind the persona, but it also gives you ample time to ask follow up questions and those things you always forget to ask before they leave. Of course, let the candidate know how long they will be hanging out for. You also might want to buy them lunch.
Be Candid
I usually keep my opinion to my self about the candidate during the interview but I’m beginning to reconsider. During my interview at Goldstar I got “extra ponints” for using vim instead of emacs. This feedback really bolstered my confidence and made me feel good about the team. There’s nothing wrong with letting the candidate know how well they are doing in the interview, just don’t be weird about it.
Say Goodbye
The last impression a candidate has of your team will be the one that sticks. If you really like them but ditch them at the end of the interview they will have a bad feeling about taking the job. Make sure that you smile, shake hands, and escort the candidate to the door. Protocols vary from business to business and the candidate may have forgotten the way out after a four-hour long interview. Make sure to end on a high note.
In the end whether or not a candidate is right is up to you. I wrote this just to help programmers get to know each other. I hope you find it useful.