“Welcome to our web developer interview. In Django, which of the following isn’t an attribute of HttpRequest?

A) method
B) GET
C) POST
D) PUT
E) None of the above

You have 60 seconds!”

If you are hiring a software developer for a web project using Python, the above question “seems legit”. It will help you measure the candidate’s knowledge of the language, right?

Wrong!

For me, the worst kind of interviewer is the Quiz Show Interviewer. He thinks that smart means “knows a lot of facts.” He asks a bunch of trivia questions about programming and give points for correct answers, silently reproving the wrong ones. He wanna know if the candidate can tell “the difference between varchar and varchar2 in Oracle 8i?” Really, Mr. Interviewer, who cares? You can find out online in about fifteen seconds! Remember, smart does not mean “knows the answer to trivia questions.”

Anyway, you should hire people with aptitude, not a particular skill set. Any skill set that people can bring to the job will be technologically obsolete in a couple of years, anyway, so it’s better to hire people who are able to learn any new technology rather than people who happen to know how to code a Lua application, on your Nintendo DS, right now.

The way to learn the most about a person is to let them do the talking. Give them open-ended questions and problems. Ask them to program on a computer (preferably) or on a whiteboard. Even though the format of the interview is, superficially, just a candidate writing some code, my real goal here is to have a conversation about it. “Why did you do it that way?” “What are the performance characteristics of your algorithm?” “What did you forget?” “Where’s your bug?”

That means I don’t really mind giving programming problems that are too hard or too easy, as long as the candidate has some chance of starting out or the problem can be extended during the interview (“Nice, can you make it use less memory now?”). Then, I’m happy to give little hints along the way, little toeholds, so to speak. I might help then with trigonometry, tell what are the parameters of that API method and drop little hints about look-up tables when I ask them how to speed it up. Notice that the kinds of hints I’m happy to provide are really just answers to trivia questions—the kinds of things that you find on Google.

In principle, it’s simple to interview. You’re looking for people who are Smart and Get things done. I’ll be talking more about that in future posts.

References