One of the many problems facing the tech world is a lack of diversity. At a previous position in my career, I was in a diversity training program with 32 people. Thirty of them were white males. Now that I’m at Rover, I’m proud to say that diversity is something we spend a lot of time and resources addressing and it’s reflected in the diversity of our team. We feel that implicit biases and subjectivity in the hiring process should be actively addressed and, to the extent possible while still evaluating a candidate as a whole person, removed from the picture.
Borne from one of these conversations was the need to make our hiring process as anonymous as possible to remove bias, and we started by looking at the take-home coding challenge. As part of our normal engineering interview process, we give candidates a challenge to work on independently and return to us. Our goal with the take home coding challenge is to solely review a candidate’s coding and design abilities, independent of the candidate’s past work and years of experience. In theory, this is the place in our hiring funnel that can be completely scored based on technical skills.
To accomplish this, we realized we needed to revise the take-home project to be anonymous in order to mitigate any implicit biases a reviewer may have. With the full support of management, I added tickets for this to my sprint schedule. This had an impact on the velocity of my normal work, but it was the right thing to do. I worked with the hiring managers and other interested people across several teams to design and review the new process to get a system that would work for everyone.
|OLD PROCESS||IMPROVED PROCESS|
|Hiring manager creates repository using candidates Github username.||Hiring manager creates repository using current date and candidates initials.|
|Hiring manager sends take-home instructions to candidate.||Hiring manager sends take-home instructions to candidate which now include request to not include any personal information in the code.|
|Candidate completes the take-home project.||No change.|
|Hiring manager runs anonymization script against the repository.|
|Hiring manager adds two engineers to the Github repository as reviewers.||No change.|
|Hiring manager adds the reviewers to our hiring software.||Skipped.|
|Reviewers complete the review of the candidates project and submit the results in our hiring software.||Reviewers complete the review of the candidates project and submit the results to the hiring manager in a new document.|
|Hiring manager adds the reviewer to the candidate in the hiring software and copy/pastes the review into the form.|
Our old process
Before the anonymization project, when a candidate started the take-home challenge, we would create a new Github repository based on their Github username to maintain unique naming patterns. This project would be shared with the candidate for them to finish. Once the candidate was finished and had committed the last bit of code and documentation, they would notify the hiring manager.
The hiring manager would then get two engineers to review the code, and would add them to the Github repository. They would also add them to our hiring software as reviewers so they could input the results. This software sends out an email with deadlines and information. It also allowed the reviewer to see the resume, phone screen results, and some other information about the candidate in order to make a more informed decision. Once our internal review was complete, the results were submitted to the hiring manager who would make a decision on the candidate and if they should make it to the next step in the process.
Our new process
We decided there wasn’t enough value in seeing the candidate’s whole set of information (resume, name, years of experience, etc.) to justify letting any internal biases affect our decisions.
Therefore, we first removed the candidates Github username from the repository name. Now the projects only have a date and two initials as an identifier. This keeps the repositories unique without exposing the candidates choice of username.
Since some candidates leave identifiable information such as adding files based on their name, or signing their readme file, we needed to do something to prevent that. We now have instructions emailed to the candidate that inform them that they should not include any personal information in the project.
After the candidate is finished with the project, the hiring manager runs a short script against the candidates repository that replaces the candidate’s username with the hiring manager’s username. This preserves the log messages, which can be valuable, but obscures who actually did the commits.
The next difference in the process is that the hiring manager no longer adds the reviewers to the hiring software until after the review. The Github access is granted, and that is the only link the reviewer has into the candidate. The reviewer can now review the code as a standalone set of data without any bias.
The final change is that once the code review is complete, the reviewer submits the review in a new document that is sent to the hiring manager. The hiring manager can then copy and paste the review contents in the hiring software at this point, and complete this part of the interview.
This whole change in the process puts a little more workload on the hiring managers, but we felt it was important to implement. They now manually run an extra script to anonymize the Github repository, and they copy/paste the review into our hiring software. This only adds a couple of minutes to each candidate.
As a company, Rover is committed to hiring a diverse team. Diversity attracts more people and is a sign of a healthy and inclusive culture. It creates a more welcoming workplace. It can spark creativity and empathy, and allows the team to better help the people we serve. We are constantly trying to reduce biases in all aspects of our company culture, and an anonymized coding challenge is one small but necessary step towards that.