Software developers
often take part in the recruiting process. Determine whether a candidate
is suitable for our team/company is a challenge to say the
least. This is especially correct for us - software developers
with no HR training and in most cases used to take decisions
based on well constructed set of rules. However, this is not the case we face
in the recruiting process. This process requires us to use general guidelines,
our experience and intuition.
At our company the recruiting process begins with a professional interview where the
candidate is asked to code something, design something and show understanding
regarding the running environment.
Who passes
the professional interview stage?
We do not have
golden rules. After each interview we conduct a short meeting to decide
whether the candidate is suitable or not. We
use similar questions throughout all of our interviews which enable
us to better compare candidates. We interview in pairs and each interviewer can veto. We believe our
general impression has the most weight on our decision.
How hard it is
to make a decision?
Well as Joel
Spolsky once wrote, there are three kind of candidates. The ones that you
easily know you want, the ones you easily know you don't want
and the maybes. Most of the effort is invested in the latter.
Lately we started
noticing that the ones we eventually hire from the maybes group have a
certain characteristic. It is the ability of the candidate
to evaluate his own answers. When asked a question, he knows which
information is missing in order to answer it well. He will then state what he
knows and what is missing. If he has been asked to solve a problem he will be
able to state which aspects of the problem his solution works for, and ask for more info in order to provide a complete solution.
A candidate which
does not have said characteristic behaves differently. They write code that doesn't
work and algorithms that does not do as expected. The problem with
this kind of candidates is that we had to tell them that there solution does
not work. They supply shallow, inaccurate, missing answers while they
believe they answered the question fully.
This ability of
the candidate to evaluate his own answers is extremely important for
software developers. As developers, almost every task requires evaluating
which information is missing in order to complete the task successfully. Developers that do not have the ability to evaluate missing information will start coding too early and write bad code.
Following this characteristic,
we thought we might test this directly in the interview:
- Ask the candidate directly what information he is missing to answer the question? This is good for knowledge questions.
- Ask a very hard question. The candidate does not have a chance of answering. What we are really looking for if to see if he realizes that instead of providing false answers, he can show us his way of thinking.
- Guesstimate questions.
- Ask to design something with little information and hope he will ask you for what he is missing.