How we hire developers in a 50+ remote, bottom-up, no HR company

Ola Puchta-Górska
SoftwareMill Tech Blog
6 min readJul 8, 2019

--

Screenshot from a daily meeting at SoftwareMill.

This article is part of the How We Run SoftwareMill series. Check out the previous posts and read more about how we operate as a fully remote, transparent and bottom-up company.

A lot of people are asking us about tips on remote work. Need a helping hand and advice on transitioning a business to a remote model?

Our CEO will be doing an AMA session on YouTube this Wednesday (March 18th, 3PM, UK time) to answer all questions you might have. Including, but not limited to, those on remote work.

Join here.

We’ve been hiring people for our remote team internally, with no HR department, for 10 years already. Throughout this time we’ve figured out that hiring is one of the two most important processes (sales is the second one) that requires our whole team’s attention and engagement.

When hiring, we’re looking for two things in the candidates — expertise and culture fit. As we work remotely, in a bottom-up company, we know that to minimize the risk of a failure, we need to be hiring candidates who match our culture. And only a thorough process combined with the whole team’s engagement gives us this level of knowledge that lets us make a well-informed decision. Of course, we never know for 100% whether it’s a correct one, but we’re minimizing the risk and making the investment that results in low rotation.

To assess candidates’ hard skills we have technical people engaged throughout all the stages of the hiring process. We created a dedicated slack channel that anyone interested in helping can join. There are no people assigned to any specific stage. Anyone from the technical team can volunteer to make a code review or run a technical interview. That way we benefit from all the team’s engagement and make sure that each candidate gets assessed by around 7 different people. We check not only technical but also soft skills. They are particularly important in a remote team and that’s why we put a huge emphasis on them on every stage of the process.

The 6 steps of a hiring process in a remote team at SoftwareMill

1. Resume screening

We start with the basics by asking the candidates to send their CV. This step lets us check the candidate’s previous experience as we tend to hire people with at least 2+ years of professional experience. It’s important to us as it makes it a lot easier to get used to the remote work model we operate in. People with no previous professional experience might find it really difficult to get used to the remote work model as they didn’t have a chance to absorb any teamwork standards or productivity habits.

2. Pre-screening survey

The next step is filling out a short survey with more details — why they want to change their job, what are their professional plans for the next two years and some formal questions like the length of their notice period and financial expectations. The form enables us to get prepared for the screening call and make the most out of it.

3. Screening call

We set up a video call so that we can see how comfortable is the candidate with online meetings. The goal is to get to know each other. We ask casual questions about the interests or previous experience which also enables us to check someone’s English skills. The rest of the time is devoted to answering the candidate’s questions. We’re a unique company with remote work model, transparency and bottom-up approach. We know it’s not obvious how it all works and what working with us means. That’s why we allocate more time to candidate’s questions, to make sure they all get answered.

4. Assignment

Now it’s time to check the technical skills. We believe it’s crucial to see someone in action instead of just talking about their skills. That’s why we ask all candidates to work on an assignment that requires them to write code. There’s a 2-weeks limit, on average it takes more than a week for a candidate to complete the task. Tasks go through a detailed code review done by two developers and each candidate receives detailed feedback. This is something that many candidates thank us for, saying that it was really valuable for them to receive such comprehensive feedback even if they were rejected.

5. Technical interview

If the assignment went well, the candidate gets invited to a technical call with two developers. The goal is to discuss the assignment some more while discussing general programming knowledge and experience when developing software projects. Some of the questions are asked in English to check language skills.

After each of the steps people involved leave detailed notes with their feedback about the candidate on a candidate’s page on internal wiki. It lets us gather all the pieces of information and take it into account when making the final decision. If the 5th step of the process is successful, the candidate would usually receive a job offer.

6. Face to face meeting

The last step is an informal meeting over lunch with another two people from our team that haven’t met the candidate before. It’s the final check of the culture fit. The goal is to make sure we would like to work together in a team or simply spend time together over a coffee or beer.

The 3 automations that streamlined our hiring process

At the moment the hiring process of each candidate involves around 7 people from our team. The process has been data-safety-verified so that we adhere to GDPR regulations and don’t breach anyone’s privacy of data. To reduce the unnecessary work overload with every candidate we introduced 4 automations:

  1. Welcome email triggers a Trello card

We used Zapier that creates a Trello card for each candidate with placeholders that’s been filled out automatically as the candidate proceeds in the process. That way we have a clear representation of the pipeline and number of candidates on each of the stages.

2. Slack channel notifies the team about any changes

To streamline the communication we keep one Slack channel for all the notifications about the candidates and their progress in the hiring process. We created a Slack bot that notifies us once someone applies or fills out a form. That way we can react faster to each of these actions and we keep everyone in the loop.

Slack channel works as a hub for gathering all the information in one place.

3. Commands for Slack bot let us do the rest

We use Slack bot commands for a number of things that could be done automatically:

  • sending a welcome email,
  • sending an email with a form to the candidates,
  • creating a repo with an assignment and sending a message about it to the candidate,
  • creating a new page on Confluence about a candidate with place holders being filled out after each of the stages

Future iterations of this process are likely to include:

  • An automation that triggers acceptance tests after assignment gets completed
  • Sending a notification once a candidate completes the assignment

How do you hire for remote work?

An advanced, multi-staged process that involves 7 people from our team, combined with two online meetings shows us candidate’s predispositions for remote work. We tend to hire people with at least 2+ years of professional experience tough. We haven’t figured it out yet how to introduce people fresh after school to our remote work model.

What’s your feedback about the process? What would you change or what worked in your case? We’d love to hear your thoughts on how to hire developers for a remote team.

Get “Remote Software Development” eBook

Dive into our 10-years journey of building a remote-first company and get all our lessons learned.

Want to learn remote work from us?

We’re a software consulting agency helping companies grow through software. Let’s master remote work together!

Contact us!

--

--

• Marketing Manager at SoftwareMill • Growbots , Estimote and Webmuses alumna