Now I consider any interview process incomplete and utterly unreliable if it doesn't include writing actual code, however simple and straightforward.
Now I consider any interview process incomplete and utterly unreliable if it doesn't include writing actual code, however simple and straightforward.
The place I'm currently at interviews in a very similar matter and we're currently batting 3 for 3 on new hires over the last year or so. I've never been a fan of the "run puzzles at them until they fall over" method. Google's hiring methods gave me a big fat headache and made me run as fast as I could from there.
I recently interviewed at another company that does a variation on this by sending you a coding challenge and you send the results back within 2 hours (you text them at a certain time and then they send the challenge). I liked this approach as well.
Both have their pros and cons but each of them will show you how someone codes. The hardest part for us has been figuring out if their style/approach to problem solving meshes with the team. That's still hard to determine in an interview because it's something of a personality thing We've worked our way through those issues, though.
It must be pretty rare to find a person who can describe a complex project in detail but is unable to write any code during an interview.
Yes, these candidates would typically be able to explain their involvement with previous projects, to give a technical overview of what they'd done. They would totally pass my bullshit filter. I thought I had a well-tuned bullshit filter. I was wrong.
The programming problems are typically very simple, an order of magnitude simpler than an algorithm or design question that might be a part of the same interview. I don't want to give specific examples, but maybe implement one of a standard algorithms on an array or a tree (I'm not talking balanced trees, way simpler). Maybe do something that requires a nested loop and some bit-twiddling, or careful thinking about entries in a two-dimensional array, or a bit of smarts to hold some sparse data - but again, nearly trivial from the algorithmic point of view. There are many possibilities.
What you want to check is whether the candidate can think through their own code, whether they know to check for edge cases, whether they think of test cases, how they deal with off-by-1 possibilities, how they debug their own code, do they have a reasonably clear style.
What you tend to see when a candidate fails such an assignment is people who don't remember the mask to fill a byte with 1's, who can't get a nested loop right because they can't seem to keep two counters in their head at the same time, who don't have the instinct to check for an off-by-1, who can't trace through their own code visually with sample arguments, etc. etc. Sometimes they had just impressed you a lot a few minutes before with a nice technical summary of what they did in their previous project.
I don't think that paragraph and the proceeding one was there when I originally read the post. Seems it's been edited since it was submitted.
See this thread in the comments on the blog (from the author): "The comments here and on Hacker News reminded me I left out a step. I’ve added it." (http://www.aaronsw.com/weblog/hiring#c9)
I just didn't want you two thinking you were crazy or somehow accidentally skipped two paragraphs.