A candidate MUST write code during the interview. NO Exceptions. Would you hire a chef without tasting, at the very least, a few simple dishes?
Of course not, but are you going to make him cook them in front of you? The equivalent of your scenario would be: you put a stove in the front of a room full of people, then you make the chef cook to order as you call out requirements: cook a soufle! Ok, now make it with salmon! Add chive!
Any good chef would tell you to go screw yourself.
Note that I said "A few simple dishes".
And what's with the stove in front a room full of people? Do you interview in front of a room full of people? Of course not. I think you are constructing an absurd scenario to distance yourself from what you don't want to do.
If a candidate can't at least psuedo code their way to recursing over a simple tree, or solving fizzbuzz, they have no business even applying.
Sure, I have interviewed in front of a "room full of people," if you'll grant that four or five people in a conference room fits that description. I think my analogy is accurate. The programmer equivalent of "tasting a few simple dishes" would require bringing code to the interview, not writing code during the interview. So tell me again why a programmer MUST write code during an interview?
The danger of someone bringing in code that they didn't write is way overblown. If you can't tell from questioning them whether they know how to write code then "5 minutes writing code during an interview" isn't going to remove that risk.Because anyone can bring code in that is not theirs?
If spending 5 minutes writting code during an interview is as traumatic as you make it sound, perhaps I wouldn't want the hyper anxious coder either.
I agree that thorough testing is important. But "thorough testing" doesn't mean "writing code at a whiteboard." At our company a candidate has to submit samples and make it through 3-4 hours of question and answer with our development staff. People who get through that and get a thumbs-up from all the interviewers not only are able to write code, but they are able to think, and they have demonstrated some personality compatibility as well. So I agree with thorough testing. We just define it differently.You know why else thorough testing is important? Because 90% of the people who take simple programming tests fail at them. Some of them have CS degrees. From the 1st page of Code Complete: "The difference between good and average in computer programming is far greater than that of any engineering discipline"
I ran my own tech company and hired 40 or so developers. I did make some poor hires, but far more good ones. I have read Spolsky's opinions, and that of many others as well. Hiring decisions are massively subjective, and one company's successful practices don't necessarily generalize to another context. Furthermore, no regime of testing or screening removes the risk of a poor hire. I am not even sure it significantly reduces that risk, since a "poor hire" can come about from many different issues, regardless of the person's technical competence.Making a bad hire is so insanely expensive to the company it boggles my mind that people are willing to make them.
Read the two articles above by Joel Spolsky, the guy is right, and his insanely profitable and respected company back up his hiring pratices.
And if they can answer that simple question what does it tell you about them and their ability to do the work? All you're doing is screening out complete frauds, which the first five minutes of technical conversation will do just fine.I have had people get up and walk out as soon as they were presented with the simplest of starter questions. (Given that Area of a circle is Pi/R^2, write a function, in any language, to return the area of a circle, you may assume Pi is a built in constant) Honestly, if you cant do that, how do you expect to be hired as a professional programmer?
If they walk out, no skin off my back.
Although I agree that whiteboarding is a good thing, coding on a whiteboard might be a stretch.
Bringing in code examples is a great way of showing coding experince. The interviewer simply asks for them to explain and talk through the code. Ask them their thought process as they point out an interesting function.
If they didn't write the code, it will become evident from the fact they have no idea what they are talking about.
I would hope the interviewers have a developed BS filter.
Yeah, and in case I haven't been clear, I am not against whiteboards. Well I am, but just because of the dust and the ghosts of old drawings. I am willing to make candidates jump through all sorts of hoops to get a job, just not writing code on command. As an example in one recent interview we had a very detailed conversation about WPF data binding, converters, and templates. We had a similarly detailed discussion of thread pools and wait handles. Do I really need to ask a candidate that can get through that conversation to write me a function to return the area of a circle? It's silly, and frankly disrespectful. I guess maybe if you're interviewing on career day at the local college, but these are professionals with resumes.
I've interviewed "professionals with resumes" that look F&#@ing brilliant on paper, but get them in a room and ask them to come up with a simple solution to a simple problem and they choke like a baby eating legos.
I've learned not to pay any attention to resumes if the candidate can't back them up.
powerset = filterM (const [True, False])
OP, i think the main reason you choke at the white board is because you are worrying too much about if the code that you wrote with is going to compile or not. they don't care if the code on the white board will actually work, all they care is that you are comfortable to write some code and that you are not totally horrible about it.
I don't think you can assume anything. It could very well be that the interviewers are looking for exact code, it wouldn't surprise me.