At my current client project, the group I am with is expanding rapidly based on recent success of agile projects in the last two years. With the reputation of our group increasing, our group is in demand for development to support the business. This is a great thing.
This means the group has opened up several positions for agile developers. It also means that the core members of the group have to interview several candidates to fill 6-10 positions. Not only does this take time and effort, but it also takes a disciplined approach to obtain the best candidates.
Along the way, we have developed a patterned approach to interviewing candidates. So far it has yielded high quality agile members joining the team. I hope to give an brief overview of the approach taken.
Team Members Participate in Interview
The interview process does not just involve the manager and the new candidate. We include a few members of the team during the interview as well. This gives the benefit of various perspectives and also establishes team ownership of the decision to bring on an individual. Existing team members, along with the managers, get exposure to the new candidate for up to 3 hours possibly (we first do a phone screen, then a face to face). This amount of exposure across team members only helps with obtaining high quality developers.
Ask Questions That Expose Different Facets of the Job
Agile development requires a member to wear many different hats on the project. On our team, we like to refer to our selves as agile generalists. We play whatever part is needed to get the job done and we don't worry about titles and job descriptions. Given the dynamic nature of the job, the interview should focus on asking questions that elicit a candidate's wide variety of skills.
In our interviews, one team member asks open ended questions that try to learn more about the candidate's personality, behavior, and interpersonal skills. The second team member asks core technical questions that focus on relevant technology, architecture and design. The third team members asks technical questions about a candidate's prior work experience and deep-dives into inquiring on how certain problems were solved or the challenges that were encountered. This approach tends to reveal a lot about a person and from the limited time, we get a good idea of how a person would fit into the team.
At the end, we each give a rating of 1 to 10 of the candidate. This rating is not based on any formulas or procedures. It is simple: Given what we have learned, how much would you like this individual to be part of our team?
Don't be An Interview Hawk
One aspect I noticed about our interview process is that our team tries to make the candidate comfortable. We aim to demonstrate how the team decorum is: cooperative, supportive, and team oriented. Thus, this means we avoid trying to stress the candidate with tricky questions, or lecture the candidate on what things are good or bad in the development world. We feel that if we make the person comfortable, we will see the best of the person and can clearly assess if they fit the team. This also gives the side benefit of building our reputation with the community by having good behavior in interviews (this goes farther than you may think).