1. Programmers hire great programmers
If you have experience coding or are a developer yourself, then you have a huge advantage when hiring other programmers. You know what to look for, you know how to structure tests, and you know the right questions to ask. Trust me, not everyone is so lucky.
For those who are not great programmers, consult a friend who is one. This can be tricky depending on how busy your friends are, but sometimes you can get lucky. Offer to pay them for their consulting service, but do not expect them to do the whole process for you. Friends might be able to sit down with you and explain the process they use themselves. This can be a great way to learn what questions to ask and how to judge responses. It can also help you get a sense of the structure the interview process.
2. Take your time
To find the best programmers, you want to have an extremely thorough interview process. Just sifting through resumes can seem endless, but it is much easier to interview ten people and hire one than it is to hire ten people and have to end up firing nine. If you put in the time at the beginning, things will be a lot easier down the line.
Many programming interviews can be divided into four stages:
1. Resume screening
2. Phone interviews
3. Code tests
4. In person interviews
To get through all of these stages, you will need to be patient. Remember that you are working with multiple schedules for different people, but it is always worth it to have a longer interview process. You do not want to hire anyone until you are 100% sure they will be a good fit for your team. After hundreds of irrelevant resumes, it might seem easiest to hire the first person you see that actually knows how to code, but this is a mistake. Hold out for the best.
3. Weed out bad candidates early
This might surprise you, but a lot of candidates who call themselves programmers can barely program at all. It's unfortunate and surprising, but it's something you need to watch out for when hiring.
To avoid wasting too much of your valuable time, give candidates a few simple online tests early on. And I mean simple. Think "Hello World" level. The goal here is not to prove that the candidate is a great programmer but that they know what they are doing at all.
This may seem unnecessary but it will save you time as well as your sanity. Nothing is worse than putting time and effort into a candidate's interview process only to discover that they do not even know basic coding techniques.
4. Standardize your interview process
Every stage of the interview process should be streamlined in a way that makes it easy for other team members to understand and execute. When looking through resumes, for example, you can create four or five specific qualities to look for, so whoever is looking at a resume is looking for the same thing that you yourself would be looking for.
Along these lines, you want to turn everything into a system that is easily replicated. If you are working with a hiring team, break down exactly what you want to look for in each stage of the process. Give plenty of examples of good questions, as well as bad questions.
In general, resume screening should be used to look for qualities outside of coding ability, like passion, creativity, and experience. Phone interviews should be used to look for communication skills and the ability to speak about more technical topics. Code tests should be used to look for problem-solving ability and actual coding skills. Finally, in-person interviews should be used as a final gauge of skills, problem-solving ability, and general fit. You should look for raw intelligence in each stage of the process.
Another note: It is helpful if each interviewer sticks with the same question or questions for each stage of the interview process. If you ask the same question of each candidate in the in-person interview, for example, you begin to know what you are looking for, and it is easier to compare candidates.
5. Look for general intelligence
As with many high skilled jobs, the key to hiring a good programmer is to look for smart people.
Every single line of code written requires split-second decision-making. In writing just one line of code, the programmer has to make multiple decisions. When you are hiring a programmer, you need to look for someone that you can trust with these decisions.
Decisions are judgment calls and smart people are more likely to make the right call.
You will find that having smart programmers on your team will attract other smart people to work with you too. Most top programmers do not actually want to be the single rockstar on a team of other programmers who cannot keep up. They want to work with other intelligent people who will help them build a great product.
If you make sure to hire smart programmers in your interview process they will get the job done right, and they will make other smart programmers want to join your team.
6. Don't hire maybes
Committing to hire someone is a huge decision, and you want to be as confident as possible that this person will work out. As I said before, it is much easier to interview ten people and hire one than it is to hire ten people and have to end up firing nine.
Hiring someone who is a bad fit or who is not qualified enough can lead to major headaches. Not only will you have to end up fixing their sloppy work, but it is also possible that liability issues will come up if things do not work out down the line.
When you are making your final decisions, you should consider two options: Hire or No Hire. If any candidate is a "maybe" then they are automatically a No Hire. You want to bring people onto your team that you are excited about working with, and you want to be confident that they will do a good job.
If you really want to be careful, hire candidates on a consulting basis or put a probation period in their employee agreement. This way, you can see how they work with your team before taking the plunge to hire full-time.
Hiring interns is another great way to see how candidates work with your team. If you're interested in offering internships, however, you will have to start searching for younger candidates. The best time to offer an internship with potential to turn into a full-time hire is after the candidate's junior year of college.
Hiring a new programmer for your team is a big commitment, and you want to be as sure as possible that whomever you hire will work. Know what you are looking for, and do not rush into anything unless it feels right on both sides. Consulting jobs and audition projects are your friends--use them.