interviewing software developers

Tips for interviewing software developers

I’ve been interviewing developers on and off for most of the last year and have lead more than twenty five or thirty interviews in total.  A couple years ago myself and other inexperienced coworkers started interviewing developer candidates and made some critical mistakes in the our approach as we didn’t know any better.  Our interview at the time was generic and strictly verbal; it pretty much went like it would for a non technical position.  The two coworkers that came out of those first few interviews are fortunately long gone as they didn’t work out.  One of these guys had five years experience writing PHP and referred to himself a senior developer.  After hiring him (when I didn’t know how to interview somebody), we learned through looking at his code that he didn’t know how to return a value from a function!  This was just one example of the never ending blunders that could have been identified during the interview process.  He had a difficult time learning new things.  You’ll need to evaluate the candidate’s skill level in areas and make sure they’re on par with where they should be for the duration of experience.

I have read other blogs and read books that cover interviewing developers.  From this I have put together an interview that usually takes 1.5 to 2 hours depending on the person.  After this time, I have a very good grasp of what the candidate is capable of.  Training a developer can easily cost the company tens of thousands of dollars in salaries of both the new hire and the trainer, not to mention a loss of productivity.  Hiring the wrong person, one who will never perform up to par, will cost the company even more.

Below are some tips for successfully interviewing a developer and feeling confident about them when making an offer.  Don’t feel bad about holding a tough interview; hire the wrong person and it’ll be you sitting through a tough performance review later on.

  1. Watch them write code.  It’s pretty simple, almost too simple, but you’ll be surprised how it separates those who can talk the talk and walk the walk in a hurry.  For the interview I hold, I have a simple open ended task where the developer will create a data structure of their choosing and write a loop to display the data in any programming language of their choosing.  Naturally, since I work at a PHP shop, that is the preferred language.  I recently had a 4 year college graduate with a computer focused degree, who was unable to even start on this code writing task.  Not one line of code.  He was a nice guy and a geek, but not a programmer by any means.
  2. Give them a written skill assessment covering the areas of focus they’ll be working with at your company.  Cover a few areas of focus and ask and easier and more difficult question for each.  Again, it’s amazing what you’ll find.  Some people will ace it and their knowledge and experience will show.  Others will bomb it.  This is another indicator of how much training the candidate will require.  If the candidate has years of experience on the subject matter and bombs it, don’t hire them!  See paragraph one in this article for an example.
  3. Try to identify a real “passion” for their work.  There are a couple  basic types of successful developers or computer geeks out there.
    1. There are geeks that like computers and are also good with business management.  MIS/CIS majors will usually be like this.  Ask about any side businesses or revenue producing projects they have to identify this trait.  They’re more likely to use CPanel or Plesk to setup their websites in a hurry because it’s easy, it works, and it’s fast.  They’re generally less concerned about all the configurations and settings as they’re more concerned about getting their product to market quickly.  These will be your development managers one day.  The tough part is, this person must start out at the bottom by writing code and much of their college training was on the business side of things and not so much programming languages.
    2. The second type are the real geeks.  Computer Science majors that do command line everything and do it because they just want to know how it works.  They get excited about bits and bytes and working on tiny performance tweaks for six hours that save 0.01 second of processing time.  Their eyes light up when talking about their side projects and will go into great detail of what it is they’re working on.  If you’re looking for a brilliant coder, a good worker, fast learner that teaches themselves, this is the type you want.  The challenge will be to keep this person on task and focused on the company’s goal.  They have a tendency to spend way too much time on the little things and may kill the project deadline.

As the manager and person making the hire, If you’re not 100% sure about a candidate, don’t make them an offer.  If you’re 90% sure about somebody, only make them an offer if your circumstances require you to hire somebody immediately.  Just when you think you’ve looked at everybody’s resume, another great candidate always comes along with a little time.