1. Know what you are looking for before the interview.
You are hiring for a reason. You have a position to fill and probably a specific skills gap you are trying to fill. Write down the top 5 skills you need, what behaviours you expect from the person, what experience you expect etc. This should have been done at the CV sifting stage but it's still worth having clear in your head before the interview.
2. Start the interview with technical questions on the top 5 skills you require.
They are in the interview as their CV has noted the key skills you are seeking - so start off (maybe after a welcome and explaining the process) with a few questions on these key skills. Make sure you know what answers you are expecting. A good candidate will answer these questions with ease, and more importantly will help them relax which helps with the rest of the interview. If the candidate doesn't know the answers, then you should try (within reason) to help get them to the answer you are looking for. If you can't - move on.
Note: at this stage, if a candidate has not answered well you may already know the outcome of the interview. It can be tempting to end the interview early, but you can leave yourself in a tricky situation legally as all candidates deserve the same opportunity in terms of questions. Law in different countries (especially around equality etc) can be a minefield so if in doubt seek advice from a member of the HR department.
3. Get the candidate to solve a problem.
There is nothing better than seeing someone in action to help you make a judgement call, so challenge them to do something. Some people ask the candidate to sit a practical programming test which is great, but can put a lot of potential candidates off. I find asking them to design on a whiteboard how they would tackle a problem is a far better and quicker option which allows you real insight into their problem solving skills.
When asking them to design something, how about a simplified version of the product you are working on? How would they architect it? Do they dive into the problem at a very low level or do they think about the high level problem and drill down? How do they react to you challenging their design? Can they accept criticism and adapt their design, or can they defend their design and convince you they are right? Offer to work with them after a while and see how they collaborate and interact with you. This simple exercise (only needs to take 10-15 minutes) is in my opinion the best way to separate the good candidates from the bad. You may also learn something yourself from it! If you don't want to ask them to design your current product, why not try something everyone knows, like a board game such as checkers, chess or monopoly.
|Asking candidates to design a board game can give you a great insight into how they work and approach problems.|
4. Hire better than what you already have, and different to what you already have.
This one is simple, but it's amazing how many people (bad managers) fall into this trap. You need to hire better people than you have/you are if the company is going to grow and your projects are going to be successful. Bad managers are scared that they will be outshone by the people they are hiring; the opposite is true - your projects will be more successful and your own reputation will grow. Soon you will be heading up more recruitment as you have a proven track record. Additionally, you will get to know most new starts who will have instant respect for you due to the fact you interviewed them. James Caan goes into detail on this here.
Diversity is also key; just because someone works or thinks differently to your or your current staff doesn't mean they are doing it wrong. Different approaches and views are always good and can help to provide the best solutions, so long as the person can collaborate and defend their decisions; but you will know that from point 3 above!
5. Ask how they keep their skills up to date.
Last but not least, good developers keep their skill sets up to date. Ask them how they do this? Do they read textbooks or blogs or both? Do they attend conferences or take part in hackathons? Don't expect everyone to do all of these, just one will do. However, someone who doesn't do one of these is a big warning sign for me that they lack the drive to keep improving and learning. Would you want someone not up to date in the latest technology and trends to be designing your next product?
This again can be a great opportunity to learn about new blogs or books that you should check out. For senior hires, ask what they would recommend to a junior hire straight from University? Again, questions like this will give you an insight into how they may mentor junior members of the team.
That is my recipe for interviews and has worked for me pretty well, but there are always new techniques to learn so if you have any experiences you would like to share please leave a comment below.