Interview Questions Considered Harmful

July 6, 2008

3 comments

I’ve done my good share of interviewing (on both sides of the table) to comment on this.  It seems that the culture of interviewing facilitates moronic questions that are meaningless outside of the interview context, utterly useless and inapplicable, and most importantly – unnecessarily demeaning the job in question and our profession in general.

I think it’s fair to categorize harmful interview questions into the following broad subtypes.

Irrelevant Riddles

How many piano-tuners operate in the New York city area?  Why are sewer covers round?  What is the mean time to failure of an Amazon production server?

The apparent virtue of these questions is that they demonstrate a thinking process going on in the interviewee’s mind.  Here’s a surprise: No they don’t.  Some of the most brilliant software developers and architects I know reject with disgust this kind of interview question on the “irrelevant” basis.  You might have missed them just by asking for this kind of useless piece of information that is best retrieved by a Google query.

Yes, you might be looking for someone capable of reasoning just how exactly sewer covers were designed.  Is this person going to be able to produce quality software?  How has this knowledge contributed to your assessment of their skills?

Context-less Questions

How would you design a banking system?  Are password hashes secure?  When would you scale up?

The worst interview question is the question taken out of context.  What kind of banking system?  What kind of design?  What password hashes?  What needs scaling up?  Again, the interviewee is supposed to come up with some vague definitions and then work against these vague definitions.  Is it something you do every day as part of your development process?

Ah, let me guess.  You expect the interviewee to extract this information from the interviewer.  Ask intelligent questions.  Produce a requirements document and a draft of a top-level design.  But why oh why are you wasting your interviewee’s time on extracting requirements (which most of us hate and suck at) instead of letting them tell you about their recent experience with brilliant WCF performance optimizations?

Irrelevant Technological Questions

How do you remove an item from the middle of a singly-linked acyclic list without a pointer to its head?  How do you mirror a binary tree?  How do you design a hash function for strings to operate in O(1)?

These challenges are extremely useful for the 0.001% share of developers among us who actually face these questions as part of their job.  For example, if I were implementing the .NET collections library or the C++ STL, I might have wanted these exact peculiar bits of information.  But let’s face it.  When was the last time you cared how to remove an item from the middle of a list, outside of an interview?

I would be the last person on this planet to argue that understanding the abstraction provided by frameworks is not important.  However, you can dig into the abstraction on a need-to-know basis.  It doesn’t mean you’re a bad developer.  It just means you can’t consult on collection implementation guidelines.

Architecture-ish Comparisons

Compare and contrast an ORM to a functional language.  Why use polymorphism if we have attributes?  Why REST and not SOA?

If you really need to know whether the interviewee knows what an ORM is, then ask directly.  Ask a design question or an implementation question that requires using an ORM.  If the interviewee doesn’t know what REST is, introduce them to the concept and ask for an opinion or the motivation of that concept.  Comparing things that are too different be compared is not the virtue of a good architect.  It’s the virtue of an academic.

“Considered harmful” essays considered harmful. (Eric Meyer)

I could go on and on, and I’ve said nothing yet about what kind of interview questions I believe in.  But then again, just a while ago I posted a full list of the kind of interview questions I tend to ask.  If you think you could answer all of them by memorizing the answers, and that it would fool me into thinking you’re a good developer unless I ask you to design hash functions or sewer covers or amorphous banking systems, then be my guest.  We’re hiring.

Add comment
facebook linkedin twitter email

Leave a Reply to Gil Fink Cancel Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

3 comments

  1. Gil FinkJuly 7, 2008 ื‘ 8:41 AM

    Hi Sasha,
    As an interviewer and in the past interviewee I must agree with every word you wrote. I prefer to ask direct questions in interviews and avoid the type of questions you wrote about. When I was interviewing for a job in the past, sometimes I got to meet those kind of questions. It made me think that the interviewer was rediculous (I really got the “How do you remove an item from the middle of a singly-linked acyclic list without a pointer to its head?” question in an interview) and not series enough. In such case I disqualified the company the interviewer worked for.
    Gil

    Reply
  2. Dmytro LapshynJuly 8, 2008 ื‘ 1:00 PM

    I can’t agree more with what you’re saying! And what suprises me even more is that the post has been written by a Microsoft employee: it’s nobody else’s but Microsoft’s interviewing practices tha are notorious for asking harmful questions you’re talking about.

    Of course I was more than curious about the list of questions you suggest. Man – these are absolutely sane, practical and to the point ones! I rarely interview people these days, but this is exactly the kind of things I would ask when interviewing a senior dev (yes, our requirements are somewhat loosier than Microsoft’s ๐Ÿ™‚ )

    So, thank you very much for the post andd I hope more interviewers will adopt your views!

    Reply
  3. Sasha GoldshteinJuly 12, 2008 ื‘ 7:56 PM

    Dmytro, your comment appears to imply that I am a Microsoft employee – but I am not. This blog is part of a community hosted by Microsoft Israel, but I am in no way associated with Microsoft and my opinion on interviews does not represent the official or unofficial Microsoft position…

    Reply