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.
If you cannot find help from someone you know personally, you can
consult websites that help you hire freelance
developers. Some of these sites, like Toptal, will take the
screening process, including coding tests, out of your hands. This can be
extremely helpful if you are not a programmer, and it provides you with a nice
pool of the top 3% of developers, which can help you to hire top people
quickly, even if you are a programmer and know what to look for.
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.
Conclusion
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.
As a final note, do not forget about resources that are out there to
help you. There are plenty of hiring sites
for freelance developers, as well as books and articles by people
who have done this before. You are not alone!