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.
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?
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.
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.