This is a great pragmatic book on Johanna’s approach to interviewing software practitioners. It has a number of tips and tools to improve your hiring process. I’ve put my notes below on the key points that were new to me although I would recommend reading this book front to back to get a full appreciation for the process she uses. My only criticism is it is a little dated in how she screens for “testers”. I belive modern developmnet and shifting testing left may have changed the behavioural questions I would be asking. A must read!
Develop Your Hiring Strategy
- Cultural fit will trump all technical skills. Every time. It doesn’t matter how technically great a person is. If a candidate’s cultural preferences do not match your organization, that person will not fit. Do not bother hiring that person. That candidate will not succeed as an employee. Know your organization and know your team.
- Define an overall hiring strategy to guide your process
- Areas to focus when building your hiring strategy: a candidate’s adaptability, cultural fit, and ability to work in teams.
Things to consider in your hiring strategy
- Know why you’re hiring more people. Define your problems to define your hiring strategy.
- Know what types of roles you require. Do you need more developers, more support staff, or more testers? If you had more writers, could you work differently? Are there tradeoffs you can make to fill a specific role?
- Know how you will decide on which candidates to select for which jobs. Consider consensus-based hiring as the decision-making mechanism.
- Know that you need a risk-mitigation strategy. If you can’t find the people you need when you need them, define what you’re going to do.
- Re-evaluate your hiring strategy periodically, based on how much hiring you’ve completed.
Analyze the Job
The difference between junior and senior role is the responsibility and influence level. A more junior position has narrower responsibility, narrower influence, and provides less coaching for others. A more senior position has broader responsibility, broader influence, and provides more coaching responsibility.
Things to consider in analyzing the job:
Procedural preferences: Does this job require that that the employee follow procedures? Do you need people who take pride in following procedures? Can you tolerate or desire mavericks who live to break the rules?
Goal-orientation preferences: Do you want someone who can set and reach his or her own goals without much input from you or others? Can you deal with people who want to set their own goals rather than look to you to set the goals? If you prefer not to be a hands-on manager and choose to let goals evolve, can you manage someone who needs specific and detailed goals?
Problem-solving preferences: To what degree do you want people to own and solve their problems before they bring them to you? Do you want someone who will ask you to help establish task priority when confronted with conflicting tasks or schedules? How much independence is appropriate for the job and for your group? Learning preferences: How much initiative do you want someone to take to stay current in his or her field? Does staying current matter for the particular job?
Collaboration preferences: Do you need a person who prefers to work alone or one who thrives when working with a group of people? Do you need a catalyst for a team? Are you looking for someone to complement the team? Does the position involve a significant amount of group work or very little work with teammates?
Communications skills: Do you need someone with excellent speaking, writing skills, or both? Do you want someone you can put in front of customers, a person who will be quick-thinking, good at fielding off-the-cuff questions? Do you require excellent phone skills for the job? Make sure you are not discriminating against people with great technical skills when their communication skills are limited and great communication skills are not necessary.
Performance-versatility skills: Do you need someone who is strictly tactical and operational, or someone who can think strategically and plan what has to happen? Do you need a person who can handle projects of varying scope or a person who wants to focus on one kind of work? Determine whether this person needs a variety of problem-solving skills, or a narrow range of skills focused in one product area or one kind of project.
Negotiation skills: Does the person need to be able to work with people inside and outside the group or the company? Is there management by authority, by influence, or both? Does this person need to manage choices between competing designs? Do you need someone who can negotiate with potential customers or different groups within the company when defining requirements?
Problem-solving skills: Will the new hire need to think about problems in a variety of ways? Can you use someone who takes the first solution that presents itself or be able to generate multiple solutions? How much creativity do you need in this role?
Functional skills experience
A candidate who has functional skills experience possesses a technical understanding of how to perform the work required in the position. When you define functional skills experience, define the evidence you’ll require to confirm that the skills you’re looking for are present.
Functional skills experience is both technology-independent and tools-independent.
Product-domain experience can be either problem-space or solution-space:
With problem-space domain expertise, the candidate understands how the users use the product. Candidates understand the product from the outside. They understand how the product solves the customer’s problem. Technical people acquire this level of expertise quickly.
With solution-space domain expertise, the candidate understands how the product works on the inside—that is, the architecture of the product. Anyone can acquire this expertise by reading the code or if they are taught about the internal workings.
Technology and tools experience
- Learning a new technical tool is the easiest thing for most technical people to master
- Teaching, coaching, and mentoring activities may require a good working knowledge of a specific tool.
Focus on the experience necessary for the job you have to fill. Don’t worry about planning too far ahead—it’s too hard to predict the future.
In a highly competitive job market, it may make sense to hire candidates who have appropriate problem-solving skills, who are adaptable, and who demonstrate an ability to learn, but who don’t necessarily have experience in the specific operating system or programming language they’ll need to use.
Things to consider
- Develop a job-analysis method for defining the position’s requirements. The interview team will use the requirements to evaluate a candidate’s work and cultural fit.
- Consider the context of your group and company when you analyze the job.
- A person’s qualities, preferences, and non-technical skills have a huge impact on his or her ability to work successfully in your organization. Understand what’s important to the company and to your group.
- Don’t make certification or formal education the basis for a job description or for a hiring decision unless your culture requires the degree or you’re building a professional services organization.
- When you require the services of a licensed professional, make the license a required component listed in the job analysis.
- Remember your company’s attributes when analyzing the job. What appeals to one candidate may not appeal to another, and you want to make sure you attract the candidates to whom your company will best appeal.
- Use elimination factors to eliminate people who won’t fit, even if they have all the other technical skills, qualities, and preferences to succeed in your culture. You will be doing yourself and the candidate a favor if you address these factors before the candidate accepts the job. Do not use elimination factors to discriminate.
- Record your requirements on a worksheet, so you can refer back to them when you want to hire again.
Write the Job Description
Never use a generic job description to look for a person. Unless you want a generic person. It’s fine to start with a generic job description and customize it. Just don’t stop there.
When rejecting a candidate do not give too much detail about why the candidate is not qualified for the job you have open as that can lead to a verbal shooting match in which the candidate feels compelled to argue each point.
Things to consider
- The more time and effort you put into defining your recruiting strategy, the more easily you’ll find qualified, suitable candidates.
- Use a diverse set of recruiting techniques.
- Make sure potential candidates can easily find open positions on your company’s website or job page.
- Use an employee referral policy that brings in referrals but doesn’t distract employees from their technical roles.
- The more exposure your ad has, the more important it is to include details in it that allow potential applicants to determine for themselves whether responding to the ad would be a good use of their time. Don’t hold back information that either would encourage the right candidate to contact you or would discourage the wrong candidate from applying.
Develop Ads for Open Positions
I tend to use a loose filter so that I can evaluate whether a candidate who has most, but not all, skills, but who has a good cultural fit could be right for the position.
I look at three areas:
1) technical experience, including functional skills, product-domain expertise, and tool skills; 2) industry experience; and 3) patterns of behavior
- Read the cover letter or e-mail the candidate sends you. A good cover letter or introductory e-mail will not just mention your position, it also will relate the candidate’s interests and experiences to your job.
- Don’t mind-read candidates and their resumes. Take what they say at face value.
- I note how the candidate’s work context is similar to or different from my open job’s context. I start my comparison by noting similarities or differences in projects and companies.
- The key question for you, the hiring manager, is whether the company can manage the start-up costs, including training, for a candidate whose technical skills are not a direct match
- Look at the kinds of applications the candidate has worked on before. How similar is the application’s context to your context?
- When you filter résumés, note how many jobs a candidate has had, and at how many companies. Whenever a candidate has changed positions in his or her company, I make note of whether the move was lateral, up, or down. Whenever a candidate has worked at numerous companies, I try to detect whether the person’s knowledge and value have increased with each change or whether he or she has continued to perform at the same level in the different jobs.
- Some organizations use the word “team” to describe a group of people with the same function; others use “team” to describe a group of people working closely together. Key words such as “team member” or “with a team” help you determine whether someone has experienced a true team of people working closely together
- Typos in résumés submitted by a writer or a tester: Many writers have trained themselves to look for typos in their work, but don’t always remember that a résumé is one form of writing. Typos in a writer’s résumé do give me reason to pause, although I do forgive typos in e-mail because e-mail is an informal, rapid-fire way to communicate.
- If a résumé is riddled with typos, I probably won’t phone-screen the person, because I want to find people who have both the ability and the will to review their work.
- I try make a decision within 24 hours of receiving a résumé about whether I want to proceed with the particular candidate
Develop Interview Questions and Techniques
- The most effective interview consists of a series of closed questions to establish the basic facts, used in combination with behavior-description questions, followed by auditions
- BEWARE OF LEADING QUESTIONS
- Hypothetical questions can be a problem for your interviews. Hypothetically, I’m perfect. Unfortunately, I am far from perfection in reality. Just ask anyone who knows me. However, when I answer hypothetical questions, I provide great answers. That’s because I answer hypothetical questions in a way I would like to behave. The more I interview, the less I use hypothetical questions.
- Too often, candidates tell you what they think the right answer is, rather than what they really believe
- The best kind of questions are open-ended behavior-description questions, where you ground the candidate in a recent project, ask a question and then let the candidate answer.
- Use auditions in addition to great behavior-description questions in a conversational setting to create the overall best interview. You will learn what you need to learn about the candidate. The candidate will learn about your interview team and the organization. It’s a win-win.
Formulate a set of meta-questions, “What haven’t I asked you to talk about that I should have?” “If I were to ask you a question for which an honest answer would make you look less qualified for this job, how would you answer?” (This question is a variation on the question, “What are your strengths and weaknesses?”)
- Irrelevant questions focus on the person rather than on the person’s qualifications for the open job. Interviewers sometimes use irrelevant questions to draw out the person behind the bare facts listed on the résumé. Questions such as “Where do you want to be in five years?” or “If you could change just one thing, what would it be?” are irrelevant because they do not directly relate to the qualifications required for the job.
- What issues did you run into during implementation?
- Tell me about a time when you had trouble.
- Tell me about a time when you had fun.
- Tell me about your test choices and activities now.
- Tell me about a great defect you found.
- How do you advocate for defects you think need to be fixed?
- How do you recognize when the work is proceeding well?
- How do you know when things aren’t proceeding smoothly, and what do you do?
- Do you coach or mentor? If so, how?
- Tell me about a time when you had trouble.
- Tell me about a time when you had fun.
- Give me an example of how you manage difficult people.
- Give me an example of how you manage peer relationships.
All candidates: To learn about the person’s drive or ambition
- When was the last time you wanted a promotion or a particular assignment?
- What did you do to obtain what you wanted?
Tell me about a time you felt particularly successful in your work. What do you think caused it? Tell me about successful teams you have been a part of. Tell me about managers with whom you have had a great working relationship.
Tell me about your greatest challenges. What caused them? What kinds of challenges do you thrive on? What kinds of challenges do you find too risky?
Tell me about the kinds of environments you have been most successful in. Please give me examples. Have you encountered environments that have prevented you from being successful? What happened?
Tell me about any experience you have had with working overtime at the end of a release. Have you juggled overtime with other commitments? Would you be available to put in overtime on an infrequent basis? On a long-term basis? Never?
Tell me about your previous experience with company training policies. Have you ever determined your own training policy? If so, what was the curriculum? If not, what kinds of training are you looking for? What training have you had that addresses the functional skills, tools, or industry for the products you have worked on before? What’s the value of that training to you?
Debugging: I show the candidate a software product in development, including a piece of the code, and ask him or her to solve a problem that I tell the candidate already exists in the code. (In this audition, I intend to see how the person looks for problems, isolates problems, considers solutions, looks for alternative solutions, chooses a solution, and implements a solution. If you will have candidates look at production code, be sure to carefully select the code sample in advance of the interview. Rather than having the candidate work on a computer or at a workstation, print out the selected segment of code so the candidate doesn’t possibly see something proprietary that you don’t want seen.)
Programming and development: I define the requirements for a small program (random number generators or bubble sorts are possibilities), and then ask the candidate to write code or pseudo-code. (You must provide the candidate enough time to complete the audition.) When I turn the code produced in this audition over for review by a programmer on the hiring company’s staff, I ask him or her to look at whether the candidate has properly declared functions and objects, initialized variables, managed pointers or memory (such as allocating and freeing memory), or handled whatever points are important to the job. WEI98.
One good technique for auditioning testers requires a product demonstration. I provide a brief written description of a part of the product and then give the candidate tester some time with the product to explore it. I then have one of two choices: Either I ask the candidate tester to walk through his or her thought process on how to test the product or I ask the candidate to perform actual testing and problem reporting. In cases in which it is possible to show the candidate the running product rather than just a description, I sit the person down in front of the computer, and say, “Go test. Here’s some paper so you can take notes. I want you to walk me through your testing in twenty minutes.” You can look for not just the person’s specific approach, but also how he or she went about exploring the product.
Project manager auditions
A type of project management audition I like to use when I’m looking for a manager for a high-visibility or large project requires candidates to thoroughly describe a project they have managed. I ask the candidate to describe how he or she organized the particular project and what the deliverables were, and then I ask the candidate to describe what variation on that organization he or she would use according to several lifecycles, such as staged delivery, SCRUM, spiral, or waterfall lifecycles. Depending on how familiar the candidate is with various lifecycles, I may then ask which lifecycle he or she would choose if doing the project again—and why—and what impact such a lifecycle might have on the interim and final project deliverables.
For managers, I sometimes set up an audition to take place during a lunchtime meeting, and I invite attendees from the group with which the candidate would be working if hired. The audition segment could consist of a brief presentation by the candidate, to be followed by a Q & A session. I note to whom the candidate talks most frequently, and whom the candidate avoids.
Points to remember
- Ask questions specifically worded to help you determine whether the candidate will fit your open position and culture.
- Use a variety of questions to elicit the most information in a short time.
- Spend your interview time primarily using behavior-description and audition questions.
- Develop multiple ways to ask about specific skills, preferences, or capabilities, framed within the context of the candidate’s work.
Create and Use Phone-Screens
Personally phone-screen the candidates whose résumés look promising. Don’t take information passed to you by an internal or external recruiter as a substitute for information gathered during your own conversation with a candidate.
When I meet a candidate who explains the culture is toxic or the organization is chaotic or the commute is unbearable. Probe further to determine what made things toxic or chaotic or unbearable, and mentally check to see whether your company has any of the same problems. It is not a crime for a candidate to be unhappy with his or her current job or to want to better his or her lot, but a mature, professional person will be circumspect about harping on the problems and will focus on finding an environment in which to be productive. If a candidate excessively criticizes management policies or colleagues at his or her current company, think about whether the problems are the candidate’s problems or the environment’s problems.
Closing lines on phone screens
Yes-we-want-you closing remarks: You’re interested, and that you want to continue the interview process: “You seem like you might be a good fit for this position. Harriet in HR (or Samantha in Systems Analysis or Terri in Test Engineering) will call you tomorrow to arrange an in- person interview. What number can she use to contact you?”
Maybe-we-want-you closing remarks: Indicate to the candidate that he or she is not at the top of your list, but that you or someone from your company may be back in contact to set up an in-person interview: “You have some of the experience we need, but not all. If we want you to come in for an interview, Mr. Personnel will contact you, probably within the next two weeks. What number should he use?”
No-we-don’t-want-you closing remarks: Stop the process now: “I appreciate you taking the time to talk to me, but your mix of skills and experience isn’t quite what we’re looking for. I wish you every success in your continued job search.”
Points to remember
- Develop a phone-screen script for each open position.
- Conduct phone-screens that are as short as five to fifteen minutes as you search for candidates worthy of the full thirty- to forty-five-minute phone-screen or of an in-person interview.
- Ask elimination-factor questions and determine essential skills, qualities, and preferences during the phone-screen to help decide whether an in-person interview is merited.
- Ask the same questions of all applicants for a given position and keep notes.
- End the phone-screen if the candidate doesn’t pass your elimination-factors questions.
- Decide whether to invite the candidate in for an interview, whether to put his or her résumé in the Maybe pile, or whether to reject the candidate entirely. Tell each candidate what he or she can expect at the end of the phone-screen.
Plan and Conduct the In-Person Interview
- Keep the selection of interviewers consistent when interviewing for the same position, so that I have a consistent set of questions, biases, and approaches to candidates.
- Train your interview team to apply a limited-consensus approach to hiring. Limited consensus means everyone can live with the decision.
- Only involve employees whose work you respect and value. If an employee isn’t successful in his or her technical position, don’t make that employee part of the interview team.
- Do not interview in a team room or other open space. Interviews are private conversations and deserve privacy. Find a private area in which to interview.
- Make it clear in advance to both the candidate and the interviewers whether you will be providing them with a meal if the interview is scheduled to stretch past normal meal times.
Create an interview matrix
- When you ask behavior-description questions, you may want to introduce them and explain that you will give the candidate time to think. You might say, “I’m using a questioning technique that will require you to think about your past experiences. If you need time to think about the answer, that’s okay. I’ll wait for your answer
- Don’t prompt the candidate and don’t lead the candidate’s answer.
- If you are the not the first interviewer, you don’t have to bother with small talk with the candidate. Say “Hello, nice to meet you.” Start with the interview questions, and make the most of both your and the candidate’s interview time.
- Thank the candidate for coming in, explain that the hiring manager will get back to him or her with status within a day, and escort the candidate to the same entrance he or she arrived at.
Points to remember
- Select who will be on your interview team. Make the team cross-functional if the candidate will need to work across corresponding functional areas.
- Ask each interviewer to define his or her interview’s duration, but make the interviews long enough for people to gather data about the candidate.
- Choose an interruption-free, comfortable place to interview.
- Create and send to each interviewer the interview package at least twenty-four hours before the interview. Follow up on the day of the interview to make sure everyone is still available to interview.
- Develop your own behavioral questions, and encourage everyone on the interview team to prepare unique questions. Actively listen for answers.
- Ask questions that comply with the law.
- Be considerate of the candidate’s time and effort.
- Be considerate of your interview team’s preparation and interview time.
Follow Up After the Interview
- Whatever you decide, don’t ignore gut feelings; just don’t base your decision entirely on them.
- If even one person votes thumb-down in the second call for votes, I generally don’t pursue the candidate. I take this somewhat severe approach because I know that my staff members will need to work with whichever person is hired. If there’s a valid reason that one of my current staff members doesn’t like the candidate, then I believe I need to drop that candidate.
Even if you’re not sure what the next step should be, you still need to keep the candidate informed. Diplomatically tell the candidate the truth
- “We’re interested in you, but we have already arranged interviews with several other people, so we’re going to finish our interview process before we make a decision. We’ll get back to you early next week.”
- “We liked what we saw in you yesterday, but we need to reassess our job requirements to verify that your skills and experience do satisfy a majority of the requirements.”
Points to remember
- Meet with all members of your interview team as soon as possible after the last interview.
- Make sure all interviewers have a chance to express their perceptions of the candidate without feeling intimidated by strong personalities in the group.
- Let candidates know where they stand as quickly as possible.
- Use limited consensus as a way to build the team; don’t hire by management fiat.
Make an Offer the Candidate Will Accept
Make same-day offers contingent on a background check and positive reference-checks, of course, and prepare them by drawing up several versions for which you can get all necessary written approval in advance.
Don’t make the mistake of keeping offering salaries down because you don’t want any members of your staff to make more money than you make. Senior-level, highly skilled technical people do make more money than hiring managers, so evaluate the candidate fairly, looking at his or her worth to your organization. Review what the candidate’s peers earn and ignore how the salary looks in the hierarchy.
Points to remember
- Start learning early in the selection process what it would take for this candidate to say yes to your offer.
- Avoid offer-rejection triggers.
- Consider the candidate’s expectations and what you can offer as part of salary negotiation.
- Give candidates one week to make a decision once they have received the offer in writing.
- Be ready to draft an offer letter.
- If you’re the hiring manager, extend the offer personally.
Create a Great First Day
Hire Technical Managers
Hiring technical managers requires similar steps, but a different approach from technical staff. That’s because managers perform work that is quite different from the work performed by technical staff members
In my experience, the cost of making a bad hiring decision is significant—equivalent to at least six months of the technical person’s salary. Other sources report the cost can be as low as a few months’ salary, while still other sources HAC99 report the cost at up to two to three times the technical hire’s annual salary ADL02.
Here’s how you hire a technical manager—and yes, a technical manager is still a geek.
- Define the value you want the technical manager to contribute. You can describe the value when you identify the problems the manager must address and solve. Describe the contribution he or she must make to the department and company.
- Identify with whom the manager will need to interact.
- Define the management level.
- Define required qualities, preferences, and skills.
- Define the required level of technical expertise and the skills required.
- Define what activities must be performed and what deliverables will be expected.
- Define the specific elimination factors for this management position—those factors that would eliminate a candidate from consideration.
A combination of factors determines management level. To determine the level, consider who the manager will work with—and at what levels—across the functions of the organization, how much negotiation skill the manager must have, how persuasive or influential the manager must be at convincing people to do as directed, and how many people the manager will be expected to oversee.
A first-line manager may be able to manage one or two people and still contribute at the technical level, but once someone has responsibility for three people or more, he or she can’t make a significant technical contribution
A new first-line manager will need more time to succeed at these tasks, because he or she has never done them before. If you’re considering promoting a manager from within or hiring people who have never managed before, don’t ask them to also do technical work. If the new manager already has responsibility for doing technical work, make sure that work is off the project’s critical path, so that he or she also can succeed in the management role.
The best managers create professional relationships with their staff, caring about them both as people and as employees, without falling into a parental or counseling role.
Points to remember
- Define the problems you want a manager to solve. Then you can complete the job description and analysis.
- Know if you are looking for a manager or a technical lead.
- Define the type of technical expertise required. If you find that you’re looking for someone with more experience with the technology, decide whether you’re looking for a technical manager or a senior-level technical person.
Whatever you do, don’t hire the wrong candidate just to put a “warm body” in the position, or because the requisition is on the verge of disappearing. The wrong hire is always a bad hire. Technical people tend to be able to learn tools and technology skills fairly quickly. It’s harder for such people to pick up missing functional skills without specialized training.
Points to remember
- Make sure your job description and recruiting practices fit the position you’re trying to fill.
- Review your hiring strategy to verify that you know what problems you’re trying to solve.
- Don’t be afraid to replan the project.
- Change the project’s lifecycle to reorganize which work is performed when.
- Change who performs what kinds of testing or writing.
- Change who develops the infrastructure for a project.
- Change how the work is completed, using alternative techniques such as walkthroughs, inspections, peer reviews, and pair programming.