This is a guide to hiring software engineers, though the advice is probably relevant for just about any role--especially those where demand is greater than supply. The document is a work in progress, and I add to is as I have free time and learn best practices.
This was created by me, Kevin Morrill. I’ve been hiring product managers and engineers since 2001, and have learned quite a bit along the way. If you need help hiring, reach out to me at [email protected] If you’re working at a startup, you can also follow us at https://BuriedReads.com/ a startup newsletter sharing the best blogging from investors and founders.
When To Hire
Crafting the Job Requisition
Roles and Responsibilities
Doing an Initial Screen
Starts with Both Yes and No
How to Run Interviews
Selling the Candidate
How to Think About Questions
What Changes By Role
Principle orStaff Engineer
Management and leadership philosophy
VP of Engineering
Making the Hire Decision
Making the Offer
Sealing the deal
The First 90 Days
Recognizing Great Performance
Calibrating for What You Want
Engineers and Conflict Avoidance
How To Give Critical Feedback
Managing Under Performance
When To Hire
Before you decide to hire, step back and really think about “what are you trying to do?” You should be running up against a problem that’s really painful and preventing your company from growing. You should assume that adding people can sometimes cause you more grief than help. Each person you hire is another person you have to get on board with your vision, another person to train, and another person to keep in the loop for all communication.
One way of thinking about whether you’re ready to hire, is to write the success case for 90 days. It’s often recommended before you build a new feature to write the press release for the future. So when you’re hiring a new employee, what would their review look like a year later if they did amazing work? How would customers of your product or service know the difference? How would revenue be impacted? How will the rest of the team be noticeably more efficacious because this person joined?
As you think through all these questions, consider that you have all kinds of alternatives:
* Not even doing the new work you’re contemplating or getting rid of existing things that are unnecessary
* Promoting someone you already have to do this bigger job
* Purchasing a product / service that does some of the work
* Hiring a contractor for a short, scoped project
* Hiring a consultant to deliver expertise to an existing team member
Crafting the Job Requisition
I recommend that hiring managers think about an internal job requisition and an external job posting. The internal job requisition contemplates questions like “what would this person be getting done after 90 days?” And “what 3-5 key skills do we need them to have?” The external job posting is all about marketing the role. It paints the picture why you’d want to work here. Listing the skills the job requires is NOT the most important thing to do here; in fact most bad candidates will totally ignore the requirements and apply anyway—so there’s little point of laboring on this. Instead, the external job posting sells the candidate on why the company is amazing, what is so unique about working inside this team, what a week in the job might be like, and why they’re going to be able to take pride in their work here.
If you’re going to consider hiring foreign candidates without existing rights to work within the United States, your job description might need to take a difference stance to make things like H-1B applications easier. Immigration Shifts 2019: Prep & Resources for Startups has details.
Figure out a few core things you need the person to know to be successful in the role. If you’re ending up with a huge alphabet soup of stuff, you’re probably picking too many. For most of the web developers in companies I sourced for, we just abstracted up to “they’re a great web developer”. This meant they knew what HTTP was, they knew what options they had to store statefulness, they had worked with a variety of web APIs, they knew about things like XSS/CSRF to build secure apps, etc. We didn’t assume someone had to check every possible box of the language we needed, everything cloud technology, etc.
Unless you’re doing something very unique, you’ll notice you probably don’t need someone who can reverse a linked list or know every detail of red/black trees. A lot of the crazy teaser interview questions come because you haven’t really defined what are the most important technologies you need a candidate to understand.
Most teams fall down in this area. They either don’t define any, and they just focus solely on technology. Or more likely, they hope to find someone who’s nice and works well with the team—-but they haven’t defined what that really means in a measurable way. Here are some common ways we would do this that you can steal from.
Passion. This is without a doubt the most important one, and really I think you should have this as a requirement for all positions, every time. The candidate should demonstrate an irrepressible desire to make your mission/vision happen. They should have stories about how this has come up for them again and again in their career. It should be evident that they're not going to be happy until this deep problem is solved. You’ll be able to ask yourself, “Would this person wake up at 3am on a Saturday to fix the site if it was down?” And the answer will be a strong yes.
Communication. This is one of the more under valued skills for engineers. It’s amazing how much time we spend talking to our peers. We work with product to get clear on what we’re building. We ideally give product great information about which things are easy to build and which are maybe more expensive than the benefit they’ll yield. We work with our manager all the time to give status, talk through blockers, etc. We do code reviews for our peers where we need to be able to talk about controversial things. We get help debugging a problem, where we have to bring someone up to speed on something complicated we’ve had a lot of time to work on, and they’re just diving into. Great communication isn’t just presentation or oration, it’s listening. It’s really figuring out what’s going on for someone else.
Many teams pick culture fit as the soft skill they go after. This is great, but they often get lazy about this. You should have a list of what it means to be part of the culture. Each of them should be measurable, if only qualitatively.
At my previous company, Mattermark, we measured culture fit by taking the company values and trying to assess Example of culture fit at Mattermark
Win as a team
[in general in the interview do they proactively, unsolicited mention times where they pulled together to solve something not just solo, but using collective power of the team]
Tell me about a time you had conflict with a team member.
Tell me about a time where you had to get something done on a team where there seemed like more work than people to do it.
Tell me what factors you consider when adding a new technology or dependency [does team skill set come up?].
Raise the bar
Tell me about a time you felt like the quality bar in your company was too low.
What’s something you put in place that is a new standard in your company?
Seek and share the truth
Tell me about a recent time you realized an uncomfortable truth inside your past company.
Tell me about a recent controversial stand you took.
What do you think is irrational or messed up about the industry we’re in?
Focus on customers
Move the needle everyday
How do you decide when a piece of software is ready to ship? [do they mention any dynamics about it being good enough to test our hypothesis, or is it all
When was the last time you felt like a project was dragging? What did you do?
Think long term
Tell me what factors you consider when adding a new technology or dependency [does long term reliability, maintainability, job market fit all come up?]
[How to use them.]
[Getting them in alignment with hiring manager]
Roles and Responsibilities
You have a hiring manager, could hire recruiters, use 3rd party recruiters, and could also use 3rd party tools like LinkedIn, TripleByte, Hired.com, etc. Think ahead of time which ones you’re going to use and how much it’s going to cost?
[these are all just examples, pick your own]
Hiring manager expected to attempt at least 5 referral sources
20 companies a day reviewed
50 candidates per week emailed/InMail’ed
5 candidates handed off for scheduling
All meetings scheduled within 2 hours of candidate email.
30 meetings scheduled per week.
No candidate email left unresponded for longer than x hours.
Will greet all candidates that arrive for onsite and give them an office tour. Will check in after at least every other on-site interview to make sure candidate’s needs (water, bathroom break) are getting addressed.
30 interviews a week
Notes filed within 30 minutes of meeting
If rate of success drops below 30%, feedback filed with sourc