Interviewing software developers: You’re doing it wrong.
Recently my wife and I both updated our resumes and started interviewing around. I ended up taking a position at a new company. What struck me as interesting was how different our interviewing experiences were.
My wife is a PharmD, this is the Pharmacy equivalent of a Doctor of Medicine (M.D.). She has to be licensed for the state she is working in and has to earn continuing education credits to maintain her license. When she goes to an interview, the questions she is asked are primarily about past projects she has worked on or are trying to determine what her personality is like and how well she will fit into the position.
I’m a self-taught software developer with about 12 years of experience, no certification and no license to practice software development. My questions consist mainly of questions trying to determine if I’m lying on my resume or about some piece of historical computer trivia. (“How would you write a linked list?” “I’d use Google as my IDE because THAT problem has been SOLVED son.”).
Granted there is a difference between a position where a lack of knowledge could KILL someone versus and position where a lack of knowledge causes a loop to run 100 milliseconds slower. But you can kind of see how most programming interviews are pretty insulting to the interviewee.1 I’ve often wondered if we could create a licensing body for software development. Some body that is corporation and technology agnostic. Something that is able to put a stamp of approval on a person and require that person to continually learn in order to maintain their license. Right now, we have certification mills that just teach a person enough to earn their Oracle, Java, or Microsoft certification. I know that lots of people are working both inside and outside of those corporations to ensure that the tests contain real-world material and not just bullet-point factoids, but that doesn’t stop the certification mills from just giving out answers.
So as it stands, programming interviews are said to be less about the technical knowledge and more about determining how a person thinks. Which is kind of wrong in a way. You’re not going to see how a person thinks by giving them a little programming quiz during the interview.
Certification and licensing should be about setting a base level of competency. You shouldn’t have to ask someone what the difference between a div and a span element is during a phone screen if they are a licensed web developer. You shouldn’t ask a C++ developer to find the memory leak in a given piece of code. What you really want to know are the intangibles. Are they a cowboy coder? Are they continuously trying to improve their skills or are they set in their ways? Will they speak up during a meeting if they see a bottleneck or problem coming or will they just ignore the problem? We, as a group of professionals, need to determine a structure and governing body that will allow us to not wonder if an applicant is lying on their resume, but instead focus on whether or not a person will be a good fit with the rest of the team.
1 – I’m not even going to mention any B.S. questions about your “biggest weakness” or trying to determine your enthusiasm level for working at the company. Those are just stupid, stupid, stupid. Did I mention I thought they were stupid?



Pingback: Tech interview questions » Why your programming interview process is wrong