Engineering Hiring Challenges – The CurrencyFair Tech Blog
This article was originally published on the CurrencyFair Tech Blog
Growth is a great problem
CurrencyFair has been experiencing exceptional growth over the last number of years as we reach more and more people around the world, with our product being the best way to transfer money internationally. Having transferred over €1.7bn and saved our customers over €100m to date, it’s an easy story to tell. Scaling up even further allows us to build more features, reach more people, communicate more efficiently and save even more money for our customers, but along with this exceptional growth comes associated challenges.
Especially when it comes to hiring, and at the moment in particular it’s a challenge in software engineering. One of the key elements to get right is the process itself, which is used to find, engage, filter and hire candidates. There are various ways to get applicants into the hiring funnel, and Joel Spolsky has some good points on this including recruiters, graduates, job boards, community involvement etc.
Attracting the right people
In terms of engagement or making sure you drive interest in the roles, there are a number of key principles that engineers will look for when investigating a role and company. Again, Joel Spolsky wrote about this previously in his guide to attracting top talent, and Eamon Leonard’s experience pointed to much the same areas when he carried out surveys over twitter (Hint: it’s not the money!). Figuring out how to communicate these succinctly in a job description is difficult enough, but that doesn’t cover culture, diversity and respect. All major issues in the technology industry at the moment.
So, some of the biggest challenges in the hiring process lie at the start: ensuring you attract the right people and communicate effectively with them. At CurrencyFair, we try to portray our culture and attitude via our own careers page, as well as a dedicated engineering focused careers page on StackOverflow. This gives people an insight into what it’s like to work here.
Yet, if you’re looking for the best (isn’t everyone?), you then need to turn 99% of the candidates away (or maybe not according to Danny Crichton)! Having put so much time and effort into the process, you need to be sure on how you filter and progress candidates, as rejecting good candidates is expensive (although having false negatives is far better than false positives as Max Levchin outlines). Sequoia have a good post on effort required per hire while also alluding to 1% hiring rates through the funnel. When effort is so high, and hiring rate is so low, you need to be sure of two things:
- You hire the right people.
- Those you reject go away having experienced a good process.
At CurrencyFair, our process looks something like this:
- We receive an application which comes through one of our hiring channels.
- We review the CV and if we think the candidate has potential, we ask them to take our test. We try to explain our thoughts behind a test, and explain that we understand the effort involved.
- If we are happy with the test implementation, we then ask the candidate in for an interview. We start the discussion on the test implementation, and then run through our standardised questions.
After the interview we ask ourselves three questions, and if they are each answered ‘yes’, then we hire:
- Does the candidate have the skills to do the job well?
- Would we be excited to work with this person?
- Would they improve our team in some way?
Thomas Ptacek recently wrote an interesting post on hiring and the job interview which is worth reading. Two core concepts worth taking away are standardised interviews, and work sample tests. At CurrencyFair, you will take the same test, meet the same interviewers and be asked the same questions as every other candidate. This is so we can measure everyone via scores and relate those scores as accurately as possible to each other.
In relation to tests however, not everyone is a fan (in fact, most aren’t). When we first spoke of introducing a test into our process, it’s safe to say our engineering team wasn’t jumping with joy at the thoughts of asking candidates to go through it. So, we set about trying to create a test which would accomplish a number things:
- Be open to allow candidates to express creativity.
- Be flexible to allow candidates to complete in as short a time as possible, if they wished to take that approach.
- Be abstract enough such that candidates could communicate their core skills through the implementation of the test.
You can view the CurrencyFair engineering test, along with our thinking behind it. We’ve been surprised by a number of things in relation to it:
- We get quite a high proportion of candidates taking the test. Our fear was that it would drive candidates away – but it has had the opposite effect.
- Numerous candidates have said they wanted to work with CurrencyFair more after seeing the test, as they thought it conveyed a good attitude and culture, but more importantly being an interesting problem to solve.
- The variety of implementations and approaches has been impressive. We’ve received distributed architectures, mobile applications, and realtime front-ends amongst others.
We’ve been quite happy with our process so far, but in a time when hiring is such a challenge, it’s key to improve wherever possible and we definitely have further changes to make. Hire / applicant ratios of ~1% combined with effort to hire necessitates creative approaches to hiring and continuous improvements along the way.
I’m going to avoid signing off with a reference to our current openings, because everybody does that.