I’ll start by saying I’m not an expert on this topic. This has worked for us but is not guaranteed to be either the best answer or perfect for your environment. We have evolved our hiring process over the course of 3.5 years, starting when I first got into the role and was rebuilding a team from 1 remaining developer to a solid core of 4 developers, and continuing a few years later through a one year period where we quadrupled the team without killing the culture or lowering standards.
We have our challenges. We look for great developers that meet our core values, continue to learn past what they need in their day-to-day work, are excited by the prospect to talk directly with customers as part of their job, and are going to ship. but we’re also in the banking industry, which many developers assume is about the exact opposite of what we’re looking for.
I don’t have a count of how many resumes and technical screens I’ve done, but we’ve done at least 50 in-person screens to get to a solid group of 17 folks, with only one voluntary and two involuntary departures over 3.5 years. We don’t bring in a group of 5 candidates and pick the best one, we bring in one candidate and evaluate them as a potential fit.
So let’s talk hiring.
Step 0 – The Criteria
We evaluate candidates between each step of the process. A single “No” at any stage, from anyone involved in the process is all it takes to decide the fit is not there. We interview a lot of amazing people, but not all of them are a good fit for this specific team.
From the Phone Screen forward, we always commit to a date and time we will provide feedback. People are important to us, so we make the commitment to limit stress on the candidate (we have all been there before, wondering if we would get a call and when).
Step 1 – The Introduction
First, you have to find us somehow. We do work with a couple recruiters, so that’s one possible introduction path. We also have job ads cleverly hidden in the careers section of our website (though they were in drastic need of a redo). We also meet people at events and have the occasional referral (more in a minute on why these are “occasional”).
We typically had 4 job ads listed at a time, not because we were looking for 4 people, but because we are looking for awesome people and wanted to outline our expectations at different stages of experience. The next experiment was going to be be trying to crush all of this down into one ad that was shorter than the original 4 but still reflected the gradient of experience and responsibilities we expect when looking at a candidates experience and salary expectations.
So somehow you have found yourself to be reading the job ad that fits your experiences, level of responsibility, skills, and so on. Let’s get to the introduction.
Step 1A – The Recruiter Path
The recruiters goal is to do everything they can to identify one candidate that will make it through our process. Our best recruiter sends us roughly 1.3 candidates for every one we hire. They perform their own screening against our technical criteria, checking references, and evaluating for how well they think the candidate will fit, before they will even send me a resume to consider screening.
Recruiters are expensive, but can ramp up fast as they already have a funnel of candidates and several trained folks working leads simultaneously.
Great recruiters are happiest when they find a great match on the first try. They will invest the time to really understand us and the candidates. When a recruiter gives me a candidate, I expect them to be able to tell me why their candidate is a great fit from both a technical and culture perspective, how they will make us more awesome, and how we will be beneficial for that candidate. They should also be able to point out concerns they have about the candidate so we can discuss them before deciding whether or not to bring the candidate in.
As part of this, the recruiter has candidates complete our Technical Screen (Step 2). Once we decide the potential fit is there, we schedule the Coffee Screen (goto Step 4).
Step 1B – The Website Application Path
The key to the application path is to capture the interest of people that will be great in our environment and, hopefully, push away some of the people that would hate the way we work. This is one reason we need to revise our job ads again, to try to surface those polarizing criteria better.
The devil is in the details.
The application is not a formality, it is the first piece of information we are going to see about a candidate and will help us understand if there is a reason to continue further. We include some “optional” questions that ask about learning styles, great customer experiences, and so on. We include a note in the job description to fill out all of the optional questions. This filters for folks that are excited about the role, care enough about their next role to read the whole description, and have attention to detail.
Providing a resume and application queues the candidate up for internal review and, if they pass muster, will lead to the Technical Screen (Step 2), followed by the Phone Screen (Step 3).
Step 1C – The Referral
We limit referrals, but they also have greater prestige attached to them when they come in the door.
Say you are going into a new job and you see Jane already working there. You worked with Jane once before and it's nice to see a friendly face, but it doesn't sway your decision any.
Jane is a 3.
Same situation, but instead you see Bob. At a prior job, you remember how Bob was the one who always managed to get all for the credit despite being the last one to arrive in the morning, the first to leave in the evening, and produced some of the most bug-ridden work you have ever had to maintain. He cut down the people around him, took long lunches, and was the manager's favorite. Grrr, Bob. Your stomach turns over as you see him and you tell the company that you're very sorry, but you just won't be able to work there.
Bob is a 1.
Final time around, but in this case it's Mary. You learned an amazing amount from her, you got more done then you ever had before, and you forged a greater team than you had even been on before. You would leave an amazing job to work beside her again because you know that that partnership and the level of work and growth would be that much greater than the best job.
Mary is a 5.
<p> We don't have many 5's in our careers. We are not trying to fill developer sized holes with developer sized pegs, we ask that folks only refer their 5's and the very best of their 4's. </p> <p> A great referral follows an accelerated but similar path as The Recruiter Path. You will receive the Technical Screen (Step 2), then skip to the Coffee Screen (Step 4). </p> <h2> Step 2 – The Technical Screen </h2> <p> The technical screen is a set of problems we give to all development candidates, regardless of level. They are designed to be simpler problems, the whole set taking between an hour and an afternoon to complete, depending on how you approach them and your level of skill. We evaluate against an internal set of required and optional unit tests and then evaluate manually for things like over-complexity, dead ends, poor readability, etc. We try to keep the questions short. For the database queries we provide both the starting data as well as the expected results. </p> <p> The goal of this test is not to exercise the full range of your skills, but rather to ensure you meet a certain bar. </p> <p> The biggest misses we tend to see are people that don't follow instructions or who believe a technical screen is somehow beneath them. The first speaks to attention to detail, the second to humility. Neither continue. </p> <h2> Step 3 – The Phone Screen </h2> <p> If you haven't been screened by a recruiter or referred by someone internally, we set up a phone screen to perform some of the same screening that the recruiter would. This is a mini-interview where we spend some time looking at your background, career progression, technical skills beyond the screen above, and so on. </p> <h2> Step Not 4 – The Reference Check </h2> <p> We reference check everyone, but the timing on it changes depending on how you came to us. So it's not Step 4, it's not Step 3, it's not step 5, but it happens. </p> <h2> Step 4 – The Coffee Screen </h2> <p> By this point we know that you pass a certain bar for technical skills, that you were not turned away by our job descriptions, that a description of how much more process you have to go through has not turned you away, and that we have a certain level of knowledge about you as a person beyond what what was on your resume. </p> <p> The Coffee Screen is intended to be a two way check for fit. I personally set aside time to meet with every candidate that reaches this stage (even if that requires working longer hours to compensate). We discuss the company, what we stand for, how we work, the way we deliver the product and build successes for our customers. We discuss the types of things you are looking for in your next job, your career aspirations, and so on. In the background, someone is taking notes to evaluate us both for process improvement, but occasionally gets excited enough to join in. </p> <p> The Coffee Screen is now in our office so you can see what it looks like, see real offices with real hardware, real human interaction in the background, real validation that we don't have an unexpected dress code or expect you to work in a cube farm nested in a dark cave, and so on. </p> <p> At the end of the Coffee Screen, we commit to a date/time we'll provide an update and evaluate to continue to The Office Interview (goto Step 5) </p> <h2> Step 5 – The Office Interview </h2> <p> The Office Interview is a nearly all day affair. We provide an agenda and information on what to expect ahead of time. We try to set candidates as much at ease as we can so we can spend this time learning as much about them as possible. The in-person Coffee Screen helps, as the candidate will already know two people before the interview starts. </p> <p> Some companies insist that ramping up the stress is the best way to see how a candidate will react when the workplace is stressful. I disagree. Show me the data. We also don't have puzzles during our interview or panels of developers firing off questions intended to prove more about how smart they are to the candidate then anything else. Crazy, right? How could we possibly hire a good developer if we don't crush them under our own towering intellects first. </p> <h3> 5A – The Introduction </h3> <p> We start the morning with some coffee (or tea) and a brief review of the agenda for the day. We review the steps and people the candidate will be interacting with over the course of the day, as well as the goals we have for each stage. We also review any critical questions the candidate has so we can ensure they get answered over the course of the day (we also review them before the candidate leaves, just to be absolutely sure). This also lets me suggest parts of the day that they be asked in and customize part of the 'About Us' Q&A to address those questions. </p> <p> This is relatively casual and friendly and is another step in trying to help lower the candidates stress level. </p> <h3> 5B – The Technical Screen, Take 2 </h3> <p> Wait, didn't we do this already? </p> <p> We start off the morning with a short coding exercise. Similar to the Technical Screen above, it's not intended to test the limits of a candidates coding abilities, just ensure that they meet a basic bar and see how they manage their time. It is slightly counterproductive to the efforts for trying to set them at their ease, but we roll with it. We provide a laptop, internet access, and a basic problem that they should be able to solve in 30 minutes or less. </p> <h3> 5C – The Background Deep Dive </h3> <p> After the Technical Screen, we dig into the candidates background, focusing heavily on career development, past successes and failures, and what brought them to us today. We typically do this as a pair, with one person taking point and the other focused on notes about both the candidate and potential process improvement. </p> <p> This is the longest single section of the interview, sometimes taking as long as three hours to complete. It can go back as far as middle and high school. The goal of this time is to get a solid feel for the success and failures the person has had over time, patterns of behavior, and places where their values shine through. </p> <p> Some of the best stuff you have done isn't on your resume. Hearing real life stories of how you went above and beyond on 16 projects in a row is far more valuable then seeing it at the top of a resume. Hearing about the time you worked at a job for less than a month and then quit could tell me a lot about the lines you refuse to cross or what drives you (I've hired two people with stories like this) and is something every recruiter will tell you to leave off your resume. What's the weird dates on this job on your resume? Oh, that's where you went and started your own consultancy and traveled the world, that's awesome, let's hear more. </p> <h3> 5D – The About Us section </h3> <p> After forcing them to talk for a couple hours (or more), we swap it around to provide deeper information about the company history, culture, processes, codebase, and relevant questions from the list in the morning. This is fairly open ended after the high level overview, so some candidates dig into the delivery automation, some into the future product plans, and some into the background of the founders. </p> <p> (The process improvement from this section is almost always "you spent all the time talking" (aimed at me). But, seriously, how can you answer questions about a whole company in less than an hour AND not talk most of the time...sheesh.) </p> <p> But it's not all about the candidate. We're not judging them on the questions they ask, but they do fit into the overall picture we are building on what's important to them. </p> <h3> 5E – Lunch </h3> <p> Lunch is a time to meet part of the wider company they would be joining. We typically ask a couple people from marketing or operations to take the candidate to lunch somewhere. This gives them a bit of a timeout from the interview process as well the opportunity to ask questions and get a different set of perspectives about the company. </p> <h3> 5F – Technical Deep Dive </h3> <p> Just when we managed to get their stress level down and all of that food is trying to force their brain into a coma, we go to the technical deep dive. We tend to focus this on the technologies that are most relevant to us and talking through how the candidate has applied them in past projects, places they stubbed their toes, those wonderful moments when something suddenly made sense, and so on. We think these tell us a lot more about folks technical capabilities and approach than grilling them from the "200 C# Interview Questions" list we downloaded off the internet five minutes before. </p> <p> We learn a lot about this approach because of the types of questions we ask. We ask things like "what was the hardest problem you had to debug in C#", "What was the hardest thing to learn about SQL?", "What was the trickiest project you had to do with Angular, would you choose the same technology again and why/why not?", "What annoys you about threading?", and so on. Each of these is the beginning of a conversation that helps us get a feel for their technical depth and breadth, troubleshooting experience, design skills, and so on. If we feel someone is telling us a story, we just keep going deeper until we get to something like "well, actually I was just doing the FlibberGibbet, it was Joe that did the real crazy stuff" or dig past their expertise with the topic. </p> <p> <i>What does it say about a company that did download the questions 5 minutes before the interview or, worse, is making them up as they go along? Are they good planners? Prioritize the interview above or below the normal day to day tasks? Serious about finding ways to really use the candidate's time well? How much respect do they really have for their people? If you're the candidate, you should be judging them at this moment too.</i> </p> <h3> 5G – Team Q&A </h3> <p> Over the course of the day, the candidate has met 3-4 developers with different experience levels, backgrounds, and tenure with the company. That was totally un-planned. And random. Totally random. </p> <p> The last part before the wrap-up is the Team Q&A. This is intended to be a time that the candidate can ask any quesitons they want form their potential future teammates without management presence hovering around to ensure the "Right Answers" are provided. We've done a lot of these and I still don't know what answers people hear in there, it's a total black box to me. The group consists of developers that have been in the interview throughout the day, hopefully making it easier to ask them questions about how we really work day to day, work/life balance, overtime, doctors appointments, pushing to production in the middle of the day, onboarding, etc. </p> <h3> 5F – Wrap Up </h3> <p> The last step is a recap of the day. We review the questions from the "must ask" list and answer any new ones that occurred over the course of the day. When we get to the end, we commit to a date/time that we'll provide an update by, thank you for taking the time to spend the day with us, and wish you well. </p> <p> We typically start around 8:30. It's usually between 3:30 and 4:30 by now. </p> <h2> Step 6 – Process Improvement </h2> <p> We don't make a decision right away. We've learned a lot throughout the day, but want to make sure we don't rely purely on gut feel. A lot of data shows that waiting for a period before making the decision gives the back of your brain more time to process through and mull over things. So we start with process improvement. </p> <p> Ignore the candidate. What went well today? Did that new thing we were trying have the affect we expected it to? Did we talk over each other or ramble on any questions? Did we forget to introduce anyone? What went poorly? Is there a different way we could approach it? </p> <h2> Step 7 – The Decisioning </h2> <p> Most of the time, it is the same day we actually performed the interview. Again, people are important. The process for the full day interview actually starts the day before the candidate shows up, building up the questions and topic lists we need to cover and coordination throughout the day. The interview day often requires a half to full day of my time, and at least a half day to full day of 3-4 additional developers. And a free lunch for a couple people outside the development group. </p> <p> So we try to get the final decisioning step on the same day, but occasionally we have just completely run out of steam (and, oddly enough, we had a production impacting outage the day we were interviewing our delivery automation guy). </p> <p> The Decisioning step's purpose is to reach a Go/no-Go decision. Everyone that has been involved in the interview is involved, even the lunch folks. We review the expectations for the role, do a round of votes (string yes, weak yes, weak no, strong no), discuss the things that were awesome, the things that worry us, and anything that would be an instant No, re-voting occasionally. At any point, one "Strong No" can close the process. Even when this happens, though, we continue discussing through the whole decision to try and get the most experience and learning we can for the next interview. It takes a full round of Yes's to move forward. </p> <h2> Step 8 – The Offer </h2> <p> By this point we already know salary requirements and can have a conversation about those, the benefits we offer (great), the advantages of the environment and benefits you get here (also great), and so on. When we have an agreement, we put together a formal offer letter to make it all official. When we get this back, we start picking out who the onboarding partner is going to be. Then we'll schedule your background and drug screen, start piling up forms in your inbox, send you a looooong list of great articles and videos that helped shape us, .... </p> <p> But that's a different post. </p>