What's Wrong With the Engineering Interview Process?

The process isn’t broken, it’s biased for avoiding picking bad people.


Do you have any idea for fixing the broken interview process in software engineering industry today? originally appeared on Quora, the place to gain and share knowledge, empowering people to learn from others and better understand the world. You can follow Quora on Twitter, Facebook, and Google Plus.

The interview process in the software engineering industry isn’t broken. It’s achieving its goal, which is to exclude candidates unless it is very likely they will be good employees. At the places I’ve worked, they've done a good job of this.

However, it has a side effect of passing over people who could be good.

I can tell you things that I've tried and had bad luck with:

* Judging someone from previous experience. I’ve had bad luck with this. Unless I was sitting with them as they did the work, there’s just no way of knowing how hard and important it really was, and what their contribution was.

* Giving homework and getting code the next day. This also didn’t work well. Sometimes I got a cut-and-paste from the internet. Sometimes I got something their friend wrote. Sometimes I got nothing, because they got stuck and I wasn’t there to help them. I couldn’t use it to predict anything.

* Coding on a computer rather than a whiteboard. I let a few people work on a laptop rather than the whiteboard. It wound up derailing the interview. Maybe their IDE wasn’t set up for what they wanted to do, maybe they couldn’t get it to work, maybe they weren’t used to working on a laptop instead of a PC. Maybe they didn’t bring their coding laptop, despite me saying they could. So I give them one. It’s an IDE they don’t know. They don’t have their shortcuts. The keyboard is configured different from what they’re used to. They have a different version of the tools. And so on, and so on. Lots of time spent, very little learned relevant to the interview.

* Focusing on a single real problem rather than ‘toy’ problems. It winds up getting derailed, and then I wind up with inconclusive information, and can’t really tell if they can code, or if they choked, or what.

For me the ideal is what I am still doing today, after twenty-five years of interviewing and occasionally trying different things:

* Sniff test their resume to make sure they are familiar with what they put on it.

* Ask some experiential and technical questions to see how they think and communicate.

* Ask a few coding & design questions, and see how they think as they tackle them, how precise they are, etc.

The process isn’t broken, it’s biased for avoiding picking bad people, at the cost of missing many good people. And it’s hard to make it do anything else.

This question originally appeared on Quora. More questions on Quora:

* Software Engineering: What kind of process did great software companies go through to establish their engineering values and best practices?


* Job Interviews: How do I answer the question "what is your favourite data structure"?


* Computer Science: What is the most important skill to learn in college for a CS major?


Photo Credit: DigitalVision/Getty Images