How to Hire Great Software Engineers
Naturally, you want the best people you can find working on your product. Why would you settle for less?
And, with the cost of hiring software engineers being reasonably significant (think $22,270 per hire in hidden costs in the US), you want to get the best bang for your buck. If you invest all this money only to make poor hires that leave after a year or so, it becomes even more expensive.
Key to attracting this top talent in the first place is how you go about the hiring process. You’ll need to identify the candidates with standout skills, whilst at the same time making your organization an attractive prospect. This last point is important – software engineers are super in-demand as a profession, so they can be picky about who they work for.
That’s why we’ve put together this guide on how to hire great software engineers. We’ll start by looking at the skills you should be looking for in the application process, and then move onto the process for finding them.
What skills should software engineers have?
Mad technical skills. That’s a given. These should include:
- Programming and coding: senior software engineers should have experience in more than one language, but don’t be too demanding here, or you’ll end up with generalists with no real area of expertise. Look for engineers with a specialism in two to three languages, with a working knowledge of a few others. If you need more languages than they can offer, consider hiring specialists in these too.
- Software development: an in-depth understanding of the end-to-end software development process (analysis, design, test, develop) is a must – even if your software engineers are part of a large team and will only be working on one part of it.
- Experience in your chosen software development methodology: whether you use Waterfall, Agile, Lean or any hybrid variation on these, it’s important that your software engineers can work on the same page as the rest of your team.
- Software testing: a good part of this can be automated now, but it’s still useful to be able to perform manual tests when you need to.
…but look beyond the technical
When hiring for technical positions, so many companies focus on technical skills to the exclusion of everything else.
By doing this, they play into lazy, and really quite unfair stereotypes – “of course they don’t have good interpersonal skills. Coders are just like that – they’re nerds!”
Wrong. Wrong wrong wrong.
The best software engineers don’t have to be the life and soul of the party. They don’t have to always be the last out at work social events. They don’t even have to show at all, if extended periods of socialization with people they only know in a professional setting isn’t really their thing.
They do, however, need good people skills and a demonstrable ability to empathize with viewpoints that aren’t their own.
There are two key reasons for this:
1. Unless you are an early-stage startup, your software engineers will sit in a team.
They’ll need to collaborate, share, and get on with a range of different people to create and release your products. This is significantly easier if they are approachable and enjoy working in a wider team.
2. The best products are designed and built empathetically.
Software engineers who can put themselves in the shoes of others are more likely to create products that are intuitive to use for a wider, not-necessarily-tech-savvy audience, and less likely to take an unhelpful ‘my way or the highway, if you don’t understand it then read the manual’ approach.
Finding great software engineers
We’ll say this now – there is a shortage of software engineers in the US. If you want to hire really good ones, you’ll be competing with some of the biggest names out there. Be prepared to put the work in.
That said, there are a few things you can do to make yourself stand out – even if you’re not Apple or Google. Below, we’ve laid out the hiring process step-by-step, and highlighted a couple of areas in each which will make your proposition pop:
1. Identifying your ideal candidates and what would attract them
Software engineering is a well-paid profession.
If you have your heart set on a senior software engineer with a good level of experience and a great resume, you could easily be looking at a six-figure salary to attract these types of candidates.
If you can’t afford an absolute top-end salary, don’t panic. Whilst to attract top talent, you should definitely be aiming for at least the top half of the salary scale, ask yourself:
Besides salary, what else can our organization offer to attract good candidates?
You might choose to make up for smaller salaries by offering first-class benefits packages. Good health cover plans are a given, but you could also consider:
- Flexible working hours: a benefit that many people – working parents in particular – would kill for. If you advertise for this, make sure it’s ‘true’ flexible hours. Starting a new position only to find out their flexible working policy really means ‘you have to start between eight and ten and work a standard day otherwise people will question your work ethic’ is beyond disappointing.
- Remote working: the quality of today’s collaboration tools means that software engineers can work very effectively in a team without having to be in the office all the time. Accepting applications from remote candidates widens the options available to you – and depending on location, you might get away with lower salaries too.
Would the position suit an ambitious junior engineer?
If you can’t afford both talent and experience, aim for the talent and let the experience build up. Startups in particular thrive on offering the bright young things of tomorrow the opportunity to create something new, build some experience and fine-tune raw talent into something more refined.
Offer an enticing salary for a first or second-time role, complete with a solid set of benefits and plenty of resources for training and professional development. It’ll cost much less than hiring someone more seasoned, and you’ll still end up with a great software engineer – just one that’s a little less experienced.
2. Writing your job advert
There are thousands of generic job adverts out there. Sure, job-hunters will apply. They won’t necessarily get that excited about them though, and that’s where you can start to stand out.
Here are a few things you can do to make your ad a diamond amongst the coal of endless, repetitive postings on job boards:
- Be as specific as you can about what your software engineers will be working on. What sort of exciting new projects do you have coming up? Are you hiring as part of an expansion into new markets? Obviously there’s a limit to what you can say here without giving sensitive information away to your competitors, but there’s a happy middle ground between under-revealing and over-revealing.
- Don’t be afraid to get technical. If your job ad talks about what your software engineers do on a day-to-day basis on their level, they will instantly get a better feel for your organization. It might mean that they decide your position isn’t for them before applying. Don’t be afraid of this – it’ll cut out a lot of work at the interview phase. Get your software engineers to help write the technical stuff if it’s not your area of expertise.
- Show some personality. If you’re not a boring corporate giant (and even if you are!), don’t write like one. Keep your job adverts in your brand’s tone of voice, and don’t be afraid to show a little warmth when writing them. This is (supposedly) a company that you like working for – make it show.
- Play to your strengths. If you’ve got a great company culture with flexible working, competitive PTO, and a family feel, shout about it. Give the reader every reason to want to know more.
3. Your application process
This is a relatively straightforward one.
Your applicant tracking system (ATS) is the first bit of company tech your software engineers will interact with. If it’s slow, unintuitive or otherwise difficult to use, what does that say about how much you care about the technical side of your organization?
Invest in a well-designed ATS, get your existing software engineers to build a custom one, or keep it simple. Doing it all over email isn’t ideal, but it is still leagues ahead of a long, clunky form filling exercise where you have to input your entire employment history manually and then upload a PDF of your resumé (why?).
4. The interview
Once more for those at the back: there is a shortage of software engineers. They can afford to be picky about which jobs they take – doubly so if they’re good.
This is why it’s so, so, so important that you see the interview as your chance to impress them, as well as their chance to impress you. You know the basics – don’t leave them waiting (it’s disappointing how often this happens), make sure they know how to find your office, offer them a drink whilst they wait, and remain professionally friendly, even when you’re asking tough questions.
Here are a few other do’s and don’ts:
- DO have someone in the room who can talk tech. Your candidates will appreciate being able to chat to someone on their level. You’ll really get a sense of their passion for the role by listening to them.
- DO test their technical skills. This could be a pre-interview written test which they discuss with you afterwards, or questions posed face-to-face by your lead engineer (or similar).
- DO look at how they solve problems. Great software engineers should have sound logical thinking skills, so throw in a couple of puzzles and see how they react.
- DON’T ignore soft skills. Asking about how they get on working in large teams isn’t ‘fuzzy’ – it’s essential to the smooth running and harmony of your development function.
- DON’T be afraid to push the limits of their knowledge so long as you remain polite and friendly whilst doing so. The best software engineers love a challenge, and it’s a great opportunity for you to see how they react to unknowns under a bit of pressure.
Finally, it’s absolutely essential that you follow up with feedback within the timeframe that you specify – even if they aren’t the candidate you’re end up hiring.
They might not be a perfect fit for your company right now, but in the future…who knows? Provide them with a good interview experience and show that you valued their time and potential as a software engineer, and they’ll remember you fondly. Never contact them again, and you’ve burned what could have been a useful bridge to keep.