There are two hard things in software development. Naming things, and hiring.
The people you bring to the team will define your success (or failure!), so how do we get it right? In this article I'll share some key principles for finding the best people.
But first, let's take a look at the why. The difference in productivity between getting the right hire and the wrong one can be exponential, especially if you're hiring leaders who will build the foundations of a team. The phrase 'A's hire A's, B's hire C's' is not at all misplaced - it takes talent to recognise and attract talent, and if you start with mediocrity, this direction is likely to continue.
The value potential is huge!
I once worked for a start-up who quickly hired around 10 developers. It was decided to split the tech stack across two programming languages (for the sake of anonymity, let's call these A and B). I felt very lucky to be one of the B developers, as we had some outstanding talent on the team.
However, after 9 months it was clear there were some fundamental issues with the services written in A. We made the call to re-write them in B, which took one B developer 5 weeks. What took 5 A developers 9 months to write, could have been done for a fraction of the cost. Now granted, things would have been naturally slower at the beginning, but you get the picture.
So how do we get hiring right? Here are some key principals and tips which have served me well in the past.
It's not all about seniority
Most teams and projects require some senior technical resource - be it for domain or industry knowledge, or technical best practices. However, I'd take a smart Junior over a mediocre Senior developer every time. With the right support, competent and motivated Junior developers will add more value, and be a better long term asset to the company.
Take the probationary period seriously
Even with the best process in the world, no-one will get every hire right. The probationary period (usually around 3 months) is an important safety net and should not be taken lightly. Letting someone go at this stage is extremely difficult for all parties, it should be done with care and empathy. This final safety net should only be needed rarely - of the 50+ hires I've made in recent years, only 3 have met this end. On each occasion however, the team has benefited in the long term.
Most people are not good at interviews
Interview nerves affect the vast majority of people, and many will struggle to perform at their best. Being able to relax and build a rapport with people is key to helping reduce these nerves and improve their performance. A sign that you've done this well is when every candidate reports back to the recruiter that they think they did well, even if they did not! If someone stumbles early on, and can see your disappointment, they're not likely to recover.
'Culture fit' is not what you think
Most companies include some kind of culture stage to an interview process, hoping to identify people who will be effective in the company's environment and have similar values (like collaboration and openness). The term 'Culture Add' better describes what most hirers actually want and need; unconscious bias can turn 'Culture Fit' interviews into a process that simply finds candidates who like the same things as interviewers. This can lead to a lack of diverse opinions, groupthink, and a culture of 'needing to fit-in'. Using the term 'Culture Add' can help hirers understand these issues.
A developer's CV and their code will be the same
Crafting a CV is about communication and attention to detail - collating a working lifetime of experience into a couple of pages takes care and attention, and the ability to understand the reader. Coding is much the same - if a candidate's CV is messy, poorly laid out and hard to read, their code will be the same. Think about it - if they can't get this most important of documents neat and tidy, how will they fair with complex system and service design, not to mention coherent read-me's and commit messages?
Most of the time, a recruiter will butcher a candidate's CV into their own format, leaving only a dry list of their experiences and a personal statement. Always ask recruiters to share unedited candidate CVs, so you can see for yourself how good their attention to detail and written communication might be.
Conversations over questions
Probing technical skills is necessary to a certain degree, and there are some technical basics that all experts in a field should be able to answer. However, avoid drilling down through lists of ever-harder questions to test the limits of a candidate's knowledge. So what if they can't remember the difference between volatile and atomic variables in Java? It's much more insightful to let them talk about technical challenges they've faced in the past, and probe questions from there. We are looking to see how well they understand and explain the work they've done, and with this approach the interview becomes an interesting conversation between technical enthusiasts. It's a great way to start a working relationship.
Interviewing is a two way thing
Tech talent is in short supply, and the best people are highly sought after. During an interview process, the best candidates are assessing the company as much as the other way round. You need to portray your team and company as a great place to work, as much as they need to convince you of their value. Being warm and accommodating during a smooth and interesting interview process is key.
Interviewing can be hard and stressful for all involved, hopefully the above tips help you bring something to your process 🤝
Comments