First of all, the #1 criteria for getting hired:
Gets Things Done.
Joel Spolsky is a highly regarded software engineer and he details how best to interview development candidates, this is an amended and augmented version of that process. see The Guerrilla Guide to Interviewing
- Question about recent project candidate worked on
- Impossible Question
- Development Question
- Design Question
- The Challenge
- The Sell and Questions
- Follow up Task and Presentation
The Introduction phase of the interview is intended to put the candidate at ease. Spend about a minute telling the person who I am and how the interview will work. Tell them you are looking at thought process as much as the actual answers, finally if possible sit next to the candidate rather than across the desk.
Question about a recent project
For interviewing graduates, ask them about their final year projects, when interviewing experienced candidates, talk about their previous job.
In this question look for passion.
- They get very excited talking about it; they tend to talk more quickly and get animated. This shows that when they are interesting in something, they will be passionate about it.
- They are careful to explain things.
- If the project was a team project, look for signs that they took a leadership role they took a leadership role and got something done — overcame some institutional inertia, for example.
This is fun. The idea is to ask a question that they have no possible way of answering, just to see how they handle it. “How many optometrists are there in london?” “How many tons does the X weigh?” “How many petrol stations are in Poole?” “How many piano tuners are there in Paris?”
- Smart candidates will realize that you are not quizzing them on their knowledge, and they will enthusiastically leap into trying to figure out some back-of-the-envelope answer.
- Not-so-smart candidates will get flustered and upset. They will just stare at you like you landed from Mars. You have to coach them. These people are not problem solvers and we don’t want them working for us.
The aim here is to ask the candidate to demonstrate there understanding of a programming language and programming in general. To do this you need to set some tasks such as:
- Code a Binary Search
- Implement a simple for with validation
- Access a database table and display using a drop down selector
It’s ok to allow pseudo code especially if they are a graduate, but expect an excellent coded solution from a senior developer.
Ask the candidate to design something. A great design question: design a Bin for a street corner. Think of all the trade offs! It has to be easy to empty, but impossible to steal; it has to be easy to put things into, but hard for things to fly out of on a windy day; it has to be solid, yet inexpensive; in some cities, it has to be specially designed so that terrorists can’t hide a bomb in it.
- Good candidates will try to get more information out of you about the problem.
- Not-so-smart candidates think that design is like painting: you get a blank slate, and you can do whatever you want. Smart candidates understand that design is a difficult series of trade-offs.
- Creative candidates will often surprise you with an interesting, non-obvious answer.
- Sometimes candidates will drift back and forth, unable to make a decision, or they will try to avoid hard questions. Sometimes they will leave difficult decisions unanswered and try to move on. Not good.
Throughout the interview, you look for the candidate to say something that is absolutely, unarguably correct. Then you say, “wait a minute, wait a minute,” and spend about 2 minutes playing devil’s advocate. Argue with them when you are sure they are right.
- Weak candidates will give in. No Hire.
- Strong candidates will find a way to persuade you.
The Sell and Questions
Make sure you leave 5-10 minutes at then end to sell the company (if they are good and you want to employ them) and allow for there questions.
Follow up Task and Presentation
If you think the candidate has what it takes then it is best to set them a task to complete over a few days and come back and present the results at a whiteboard/powerpoint. This gives them a chance to show their skills of both programming and communication. Also, it’s a lot of work and show they are keen for the role. If they do a poor job or come unprepared send them away within 10 minutes; you may want to offer them a chance to go away an prepare.
What task to set:
- If .NET developer, get them to write code that involves both from and back end. You can also get them to complete a piece of code under interview conditions