I have interviewed for jobs many times. Often for positions I was genuinely interested in, sometimes just for the practice. I'm not going to talk about how most people aren't very good at interviewing (especially interviewing developers), but there is a question I have been asked many times that I want to write about.
"What technology would you use to build a system that does ___________?"
Often the system in question is a simplified version of that company's product. This question is a far cry better than asking me to design an algorithm to determine if a connect four game is over, but the intent of asking this question isn't always clear to me. Do you want to see if the candidate spouts off their favorite technologies to see if it matches with your favorite technologies? There is some information to be gleaned from that sort of answer, but how valuable is that information? Here is an example question and a couple hypothetical answers to illustrate two different ways to answer.
"What technology would you use to build a system that schedules important appointments?"
A short, less thoughtful answer might be to use a Node.js backend using an Express web server a MongoDB datastore and a frontend built with AngularJS. This isn't a bad answer, in fact this combination of technologies is so popular there is a website dedicated to setting up applications with it. The problem is that the answer doesn't really tell the interviewer anything other than what technologies the candidate prefers.
The lack of depth of the answer really has nothing to do with technologies selected. The best purpose for this question is to get a snapshot of how the candidate responds to requirements. Do they ask clarifying questions to drill down into the minutae of the specs, or do they dive right into designing the system without having a solid understanding of what they need to build?
Here are some good questions one could ask to understand what they need to build: Does the software need strong guarantees on the consistency of the data or do they need a highly available distributed system? (hint: you can't have both!) Does the software need real time updates? Are there restrictions on production environments? There are many more questions a candidate can ask to demonstrate that they understand that the value of working out details of requirements before beginning work. Just asking these questions is more useful than what technologies they end up choosing.
I was thinking of this interview question the other day when I was considering the problem we are trying to solve here at Verytas. I was thinking about it because I was in the process of figuring out what questions to ask to decide which technologies would best fit our needs here. Stay tuned for my next post when I discuss what those questions are, and how I've answered them.
Image via Flickr user thedailyenglishshow.