Note: I’ve since left Packback and updated my hiring process. You can learn more about Packback’s current hiring process for engineers on Github.
When I took over as Packback’s Head of Engineering earlier in 2015, I already had a team of three full-time engineers and a great intern who had started just after I did. When the time came for me to do some of my own hiring, I had to quickly adopt a process for finding and onboarding people. I started with the framework my predecessor used, and brought in some heavy influences from Peopleware and Josh Tyler’s Building Great Software Engineering Teams book.
It’s still a work in progress, but here is the structure we use for hiring engineers at Packback:
1. Job Listings
There are a few things that I think are important in a job listing: First, a good job listing should outline specifics about the tools and languages a candidate is expected to know. I like to include specific projects the candidate will be working on when I can, and as much information about day-to-day expectations as is reasonable for a concise job listing. Second, it should be explicit about the values and mission of your company. I know that most candidates gloss these over and most employers include them out of a sense of obligation rather than belief, but I still think it’s important. Great candidates will embody your values, and if they paid attention that might even come up in their interview. Finally, a good job listing should include something interesting or unique. Competition for the best technical candidates is fierce right now, so telling them why they should work at Packback and not the company down the street is really important.
2. Phone Screening
Like most employers, we do a few rounds of interviews that go from low commitment (phone call) to high commitment (2-3 hours with our founders in the office). The first step is a phone screening where I’ll try to get a feel for the candidate’s resume, skill-set, and interests. I’ll also use this time to sell Packback even more and hopefully get them excited about the rest of the process. At each step I try to get a sense of what it will be like working with this candidate: will they show up to work when I need them to? Are they committed to education and learning? Do they like to try new things?
3. Technical Assessment
Just because you can talk the talk doesn’t mean you can walk the walk. Our technical assessment comes in two parts: First, the candidate will get a coding exercise where they are given 3-5 days to complete a project very like something they would do their first week in the office. From this code sample, we can get an idea of the candidate’s attention to detail and their ability to “fill in the blanks” when a spec is incomplete. We’re also looking to see if the candidate asks questions and documents their process. If the candidate submits a strong exercise, we’ll invite them in for an in-person technical interview. This is where we dig in and see how much they really knew versus the amount that they were able to find on Google or StackOverflow. The questions vary, but usually they’re about half discussion and half writing code.
4. Team Introductions
Candidates that pass our initial phone screening and both parts of the technical assessment will move on to meet the rest of the engineering team one-on-one. This is the chance for the rest of the engineers to see if they think they’d like working with the candidate as well as ask any of their own specific technical questions. After our whole engineering team has met the candidate and we unanimously agree that we want to work with them, we’ll make a final recommendation to the founders. We’re still small enough that every candidate who comes through Packback’s hiring process gets a one-on-one with each of our three cofounders. Usually they are making sure that the candidate will fit with our values and culture, but they also try to gauge how enthusiastic the candidate is about working at Packback. If they all agree that the candidate would be a good fit, we’ll move forward with an offer as soon as possible.
As we make an offer and finalize compensation, the process of onboarding has already begun. I’ll try to have a meeting with the candidate to lay out expectations for their first few weeks, and do a planning session to help them get up to speed on their first project. From there, onboarding depends quite a bit based on the new hire’s experience level; we’ll take turns pairing on projects, give them access to more documentation, and bring them into our sprint process.
Have any tips for me about hiring? What do you do differently at your organization? Let me hear your thoughts on Twitter.