Thought experiment

Recently I was thinking about my career goals, and one of them is that somewhere in the next few years I’d like to build a recruitment function from scratch within a small to medium business. I had a think about a few things I’d put in place if I were to do that today.

Applicant Tracking System (ATS)

You have to have one of these - recruiting via spreadsheet means things get done inconsistently, badly, or not at all. Unfortunately, most of the usual suspects are too expensive or just plain overkill in this scenario:

  • Greenhouse is an industry standard, but it’s expensive, the reporting isn’t that great, and the data model is weird.
  • Workable is pretty but a tad inflexible.
  • Lever doesn’t publish pricing, so also probably expensive.

There’s a couple I’d like to check out (but if you have more I should look at, get in touch!):

  • TalentLyft – the pricing is right, and it looks surprisingly feature-packed. A few of the companies in their case study don’t use it anymore though, which is a worry.
  • Pinpoint – looks great, doesn’t list pricing so I assume that means expensive.

Hiring Process

Get buy-in from the whole company that interviewing is everyone’s job, and run everyone through unconscious bias training.

Tell people what to expect from your hiring process – no pointless secrecy.

Run your job postings through Textio to check for exclusionary language.

Develop rubrics for every interview stage of every job - eliminate subjectivity as much as possible.

Commit to weekly updates for each candidate, at minimum. No news? That’s okay, tell them that!

Respect your candidate’s time: keep take-home tests to a minimum, and make your assessments relevant to the role. Use pairing or code review in place of one-size-fits-all code tests. If you ask for more than 4 hours work, pay the candidate or make a donation to Code Like A Girl on their behalf.

Knowledge Management

If I were starting a knowledge management system from scratch, I’d use Notion. Same goes for any existing “documentation” that’s really just a bunch of Google Docs files - move it into Notion.

I’d publish as much of the employee handbook publicly as possible. Candidates really respond to that kind of transparency and openness (see GitLab or Sourcegraph for examples).


This process should start the second a candidate accepts an offer – by the tail end of the hiring process you’re speaking to the candidate every day, sometimes multiple times, then they sign their offer and… four weeks of silence. Huge letdown.

Have a plan for communicating regularly with the candidate during their notice period: send them some swag, invite them as a guest into your Slack, organise a lunch with their new team - anything!

Once they’ve started, kick off an onboarding plan that runs between four weeks and six months, depending on how ambitious you want to be. Minimum inclusions: a buddy to show them the ropes, regular check-ins with your People person or recruiter (to ensure the job they have is the one you sold them on). Donut Onboarding is great for automating this entire process.


In 2020, defaulting to remote-first and async communication is The Way. One goes hand in hand with the other: if you want to take advantage of all the benefits that remote-first brings – being able to hire the best people from anywhere (not just those within a certain radius of your office), giving your people autonomy over their time, not needing expensive real estate – then you also need to ensure your communication style is set up to be inclusive, efficient, and effective. That means communicating asynchronously (in fact, over-communicating is a good habit to get into), proactively sharing information, not throwing things over the fence, and not expecting an immediate response to a question. (In fact, if not already totally committed to Slack, Doist’s Twist seems like a much healthier, async-friendly alternative.)

You should also consider defining levels, and associating those levels to specific competencies. People should know precisely where they stack up, and what’s expected of them in order to get to the next level. (Please, no cutesy job titles or super flat structures – they disadvantage people who need to be able to demonstrate career progression on a resume.)

Hire junior people! We were all junior once, and someone took a chance on us - we owe it to the community to pay that forward. (Not to mention that coaching and mentoring are essential skillsets for senior people to develop.) Put together a structured, consistent plan so that every junior you hire is set up for success from day one.

Pay your people for referrals: good people know good people. (This can also be a stealth indicator of how engaged your people are - when referrals slow to a trickle, something might be going wrong.)


At minimum, you need:

  • A careers page! You can’t just rely on networks or LinkedIn ads forever.
  • Some info on why people should come work with you. Not ping-pong tables or Friday beers, but the kinds of things I mentioned earlier: autonomy, thoughtful communication, career progression.
  • Photos of the team – candidates will want to see if there’s anyone working there who isn’t a white man aged 18-49.

Other things I’d put in place:

  • A blog. Have your people write about their day jobs. Engineers can write about interesting challenges, designers can post about their process, etc.
  • Post talks your people have done on the blog. (If there aren’t any, fix that.)
  • A public commitment to diversity, equity, and inclusion.


You’ll notice most of these are centered around candidate experience, or attracting and retaining great people, and that’s no accident – those things are, to me, what recruiting is. I want people to enthusiastically join us, and to never regret that decision. This is how I’d go about that right now, if left to my own devices, but recruiting is also a collaboration and one size never fits all – so if this is in the ballpark of what you’re thinking, and you need some help with hiring, I’m available.