As with a lot of companies that use ColdFusion, we sometimes have to recruit programmers that have no ColdFusion background and train them on to the product once they get here. More and more we are tending to look for higher quality candidates than before, and as that bar has been raised we’ve changed our recruitment process to look for candidates with particular attributes.
I was asked recently to describe how we actually recruit our programmers. I was asked if there was a documented process (no!) so I jotted down the process we use. I thought I’d share that here. It’s no secret, and a lot of stuff we gleaned from Joel Spolsky’s Guerilla Guide to Interviewing with changes to reflect how we do things, and the tools we use. By the way that article is over ten years old now! Most of it is still very relevant. It’s a great read too.
So this is how I’d advise someone else to hire a programmer:
- Conduct telephone interviews first with their CV on front of you – you don’t have to drag someone into the office to get an idea of their experience and it gives you a chance to get through a lot of CVs in as small amount of time as possible.
- Once you have a short list of candidates from the telephone interviews – send them a technical test first. We’ve found this test to be a great indicator of ability. We ask the candidate to do the test in their own time over the few days. We explain we are looking for quality rather than speed. We generally ask candidates to:
- Talk about their past and current development environment – this gives good candidates an opportunity to talk about things they should care about. Good candicates will care about version control, and which type. They can talk about proper project management and communication, their favourite IDE and why etc. Poorer candicates will have little to say in this area, but you are looking for good candiates who care about what they do.
- We give the candidate a set of SQL table definitions and ask them to do a moderately difficult query. We ask them to use whatever database they wish. This is good one to discuss with them if you call them in for a face-to-face. You can then ask them about what SQL optimisations can be made if the tables get larger etc.
- We ask the candidate to write a small program, in ColdFusion (in our case) that indentifies if a given word is a palindrome. There is plenty you can take away from this. For a start, if they are not from a CF background then they’ll need to do a little research, download the server and try it out. They’ll write it as a web page and this can give you a great idea of how the programmer thinks and organises their code. Neatness is important. Sensible comments are also important. There are half a dozen ways to solve this problem so the really good candidates might show that. You can then discuss the different approaches at the face-to-face.
- Once we have their test we’ll decide based on that whether to ask them in for an interview. In the interview we’ll discuss their CV again, and really get the feel for the person. We’ll also go through their answers with them. This can be interesting as it allows them to demonstrate they can take constructive criticism. We do code reviews and it helps to be able to talk over your mistakes with others. It also gives them a chance to explain the reasoning behind why they did something thus showing they are a good communicator.
- At this point I guarantee you’ll have a very good idea if you want to hire this person and if you do, you’ll be doing so knowing a lot about this candidate as a person and as a programmer.
I hope this helps someone out – we’ll continue to learn from our process, and you should too. Best of luck!