I have a genius-level IQ and I hate with a passion stupid interview questions of the type that Jeff is mocking.
They don’t get you anyone except those that are interested in mental masturbation, which is the type of people that they are also given by. But what they DON’T do is further the bottom line.
People that think these questions are good are exactly the type of people that spend weeks investigating a problem instead of just saying, Oh, well, Microsoft has a bug but we can work around it by adding a /table tag. And for everyone that just cringed when I said that, realize that your employer usually doesn’t care if your website validates as long as it works on the 2 latest versions of IE and Firefox. And he WOULD RATHER that you not spend $10000 of his money figuring out how Microsoft screwed up and making a blog posting about it. He would rather you rolled the website out yesterday so that he can make more money.
A few people (including Jeff) have it right. Computer knowledge is always changing, so why bother testing people on that? What you want to know is:
- Are they a good person and a good communicator?
No matter how smart or how good a coder someone is, if they are an island that can’t communicate, you will end up rewriting their code when they are gone and they will cause friction in the office, because people will always be wary of them and their motives because of the lack of communication (as Jeff pointed out regarding the nurses). Also, you don’t want harrassment lawsuits or theft, so try to make sure the person you are hiring has some morals.
- Can they learn?
This career is all about learning. There are new things coming out all the time. I was actually turned down in a job because I didn’t know something that was still in Beta in Visual Studio. That’s dumb. It’s not that I can’t learn the latest Microsoft technology, it’s that I haven’t been exposed to it yet because it hasn’t even come out yet. I’ve been busy adding value to my employer with solutions that work and are maintainable, not bleeding edge beta stuff that isn’t even licensed for production code yet.
- Past success is absolutely an indicator of future success
Make sure that the person can describe successes and failures in detail. Make sure they know WHY they failed and what steps they have taken since to prevent a reoccurrance. That goes back to learning. Also, listen to how passionate they were about their successes and make sure to find ones where they were involved.
For a technical question, stick to a broad topic not a specific command line option. Command line options can be looked up in 1 minute. Instead, ask them to describe the dangers of SQL Injection and how to avoid it or some other topic that good developers absolutely should know.
And ultimately, hire them on a trial basis of at least 30 days. If they aren’t working out (for instance, a person with a Masters in programming asking what comma-delimited is), don’t be afraid to let them go quickly, before they waste too much of your company’s money.
And before you assume that I don’t know what I am talking about, I helped hire most of the best people for a consulting company that has survived multiple recessions and wrote award-winning websites for the nationally-known industry leader in a certain vertical.
And we never used puzzle/IQ questions to do it.