How I Hire: Use Whiteboards in Technical Interviews

I am incredibly proud of the people I have hired over the course of my career. Finding great engineers is hard; figuring out who's good is even harder. The most important step in evaluating a candidate is conducting a good technical interview. If done right, a programming interview serves two purposes simultaneously. On the one hand, it gives you insight into what kind of employee the candidate might be. But it also is your first exercise in impressing them with the values your company holds. This second objective plays no small part in allowing you to hire the best.

Balancing competing objectives is the central challenge of all management decisions. Hiring decisions are among the most difficult, and the most critical. The technical interview is at the heart of these challenges when building a product development team.

My technique is to structure a technical interview around an in-depth programming and problem-solving exercise. If it doesn't require a whiteboard, it doesn't count. You can use a new question each time, but I prefer to stick with a small number of questions that you can really get to know well. Over time, it becomes easier to calibrate a good answer if you've seen many people attempt it.

For the past couple of years I've used a question that I once was asked in an interview, in which you have the candidate produce an algorithm for drawing a circle on a pixel grid. As they optimize their solution, they eventually wind up deriving Bresenham's circle algorithm. I don't mind revealing that this is the question I ask, because knowing that ahead of time, or knowing the algorithm itself, confers no advantage to potential candidates.

That's because I'm not interviewing for the right answer to the questions I ask. Instead, I want to see how the candidates think on their feet, and whether they can engage in collaborative problem solving with me. So I always frame interview questions as if we were solving a real-life problem, even if the rules are a little far-fetched. For circle-drawing, I'll sometimes ask candidates to imagine that we are building a portable circle-drawing device with a black-and-white screen and low-power CPU. Then I'll act as their "product manager" who can answer questions about what customers think, as well as their combined compiler, interactive debugger, and QA tester.

You learn a lot from how interested a candidate is in why they are being asked to solve a particular problem. How do they know when they're done? What kind of solution is good enough? Do they get regular feedback as they go, or do they prefer to think, think, think and then dazzle with the big reveal?

My experience is that candidates who "know" the right answer do substantially worse than candidates who know nothing of the field. That's because they spend so much time trying to remember the final solution, instead of working on the problem together. Those candidates have a tendency to tell others that they know the answer when they only suspect that they do. In a real-world situation, they tend to wind up without credibility or forced to resort to bullying.

You can use an interview to emphasize values as well as evaluate skills. The best interviews involve both the interviewer and the candidate learning something they didn't know before.

Photo: Rowen Atkinson/Flickr

Mun Arthur

Experienced Senior Data Analyst

9 年

Roger: I agree with you. I once failed a job interview just because I was too nervous. My tongue was tied although I was a subject matter expert on the subject.

I think a much better approach is to ask the candidate what some pre-written code does Can he read it? Maybe find a bug in it? How to optimize it? Too many companies rely on canned coding questions, for which there is a very small subset which anyone can memorize. It's odd that we do this in the first place. An interviewer for a mechanical engineer or architect position does not ask the candidate to design a bridge during the interview. Also, some people write great code when left alone, but stumble and mind goes blank if there is an audience. Ask the candidate what they have done previously, how it was designed, what worked, what did not.

Randall M.

Embedded Software Engineer - C/C++/OOD

10 年

The "drawing a circle" problem would be appropriate for graphics developers but for most, its not a very good thing to ask someone to code. I'm not a fan of coding tests except for new grads. Its a given that someone who worked for a company several years as a software engineer must be able to write code or they would have been fired. Code syntax, data structures, search algorithms and formulas can be googled in 10 seconds and you don't want developers wasting time re-inventing the wheel anyway. Better to ask candidates how they would go about solving a particular problem and try to use problems applicable to those encountered by your company. Also is the ability to "think on your feet" really important for a developer to have? I don't see why this is important. Management would be best served to look for good people who have experience rather than that one "rockstar" who will leave within 2 years unless given the moon.

Having been on both sides of the whiteboard question numerous times, I honestly cannot see their value. I stopped asking them years ago in interviews I conduct, and have started telling places that contact me that I won't waste my time in drawn-out whiteboard interviews. If a company wants to give me a test to do on my own time, something relevant to the job I'm applying for, I'm fine with that. However, being asked to solve ball clock rotations, write a sort method, or discover Bresenham's circle algorithm is utterly pointless, unless your company makes ball clocks, circles, or standard libraries. In my opinion, an in-person interview shouldn't last more than an hour. If a company can't use my resume, professional references, and other work-related documentation to verify my real-world skills, there is a problem. Since the likelihood they are going to discern my ability to create web applications, for instance, via some contrived whiteboard puzzle is slim at best, I can only conclude that the company hasn't thought their processes through logically, and probably isn't a place I want to work anyway. I would leave the interview wondering what other time-wasting processes they had in place.

要查看或添加评论,请登录

社区洞察

其他会员也浏览了