Recruiting in software development is a challenge and trying to hire senior developers is even harder. Due to a talent shortage, senior engineers are few and far between. They are also expensive and are rarely seeking a new job opportunity.
Also, they have learned how to value their time. When recruiting a junior web developer, for instance, you may get hundreds of applications. However, don’t be surprised to receive close to zero applications for senior engineers.
How do I know? I am a senior developer myself. And trust me, in my 15 years of software development I’ve gone through many recruitment processes. As a candidate, and a tech recruiter.
Assume you are lucky. Your job ad was flawless, your hourly rate is compelling and your company is doing interesting stuff. Yet, once you begin the process, candidates are just ghosting you. It’s not because true rockstars and tech ninjas have gigantic egos. Well, sometimes they do. However, it’s more likely that other recruitment processes were better, so they simply gave up on you.
So, how to encourage an experienced developer to take part in your recruitment process in order to hire the most qualified candidates? Let me share my advice from the perspective of the CTO of a tech company.
How to encourage senior developers to participate in recruitment?
Encouraging senior software engineers to take part in your recruitment process, especially coding challenges is…challenging. However, different companies define seniority differently. Also, their attitude towards the recruitment process tells a lot about the candidate themselves.
A senior developer will tend to focus less on technical skill and more on wider technical concepts. On technical solutions, rather than just the technologies they will use. If you appeal to their wider technical knowledge and design your process around problem-solving, you’ll likely attract more senior engineers.
For instance, don’t circle around the version of React or Python you use. Instead, explain how your company is problem-solving using React and Python. By emphasizing the big picture while recruiting, you are more likely to appeal to a senior programmer rather than a junior. On the other hand, if you are focused only on the technologies they will use, you will likely only appeal to the technical interests, of less experienced, more tech-oriented people.
What does it mean to be a senior developer these days?
So, a bunch of people applied to your senior job ad. Congratulations! Sadly, half of them are not worth your time. Many will be underqualified and lacking in the programming skills needed—but decided to take their chance anyway. The number can be more than 50% if your brand is very strong, or if you offer an outstanding salary and benefits. It can be less if your job ad was very specific. But expect to reject some applicants straight away during your hiring process.
On the other hand, you will get at least a few qualified applicants. The problem is, how to distinguish the best software developers from the wannabes? On this level, you must be really careful. Like it or not, one false move and only the most persistent candidates will remain. And believe me, these or not always the best ones.
So you have a very precious asset at hand. Extremely knowledgeable applicants among less experienced ones. By carefully following my advice, you can discover the best developers quickly and painlessly. Let me share a few tips on how to make the recruitment process enjoyable and decisive.
Developers in the IT industry, especially senior developers, hate BS. Don’t lie. Don’t overpromise. Don’t extend the process, hoping to get a better candidate later. Honest communication skills are essential. It’s important everyone is on the same page.
Clearly explain what the process looks like. Especially, by which date they can expect to hear feedback, how many recruitment stages to expect, and who will be in charge of evaluating their skill set.
Being open about the type of work, salary, and work from home policy, should go without saying. Don’t try to lure developers with shiny new technologies. As a matter of fact, you can tell the difference between senior and junior developers, in that the former is usually more interested in the business problems they can solve. They will be more interested in your company’s recent projects and less in the tools you use. Speaking of tools, what should you put in a job ad?
Have a clearly defined job ad
A job advertisement is called this way for a reason. You advertise your company. But expect a senior software engineer to be allergic to false advertising. They won’t be drawn in. However, there are a few key pieces of information that a senior software engineer is looking for in your job description in order to engage with your recruitment process. Here’s what to include:
Salary and benefits
Yes, we work for money. When hiring senior software engineers, it’s better to be open and honest about your budget to avoid disappointment. On the other hand, salary or perks way above the market rate may suggest that either you are burning a ton of investor money or there’s something fishy about the job position. Be prepared to answer questions about such topics.
Working hours, a remote-work policy, business travels, hardware, and office setup. A noisy open space where you must sit from 9 to 5 is rarely appreciated. How much bureaucracy to expect? Will they commit code on the first day?
Shares, health care, education/conference budget. These are the most compelling.
Company culture and values
Are you agile? Do you deploy frequently? Can you contact your customer? Are you dogfooding your project (if applicable)? Honestly explaining the first day at work is a good idea.
Type of work and overview of the whole project
Are you a software house? Are you building a product? What is the industry you work for? Do you provide training? Does your company have a positive impact on the world or operate as a barely legal business?
What is the technology stack?
This one is important. Don’t just enumerate all technologies ever mentioned by your development team and say “you must possess the following required skills…”. There’s no developer, even in your current development team, who will have every requirement within their skill set. Instead, simply say “we use the following…”, a good developer will know how good of a match they are. Including the relevant hard skills they possess and what they want to learn.
On top of that, try to be brief. We live in a Twitter and TikTok era. Walls of text are not appealing and will likely be skipped. Job descriptions should look more like a sleek presentation, not a Word document. If you can come up with an infographic or a short video, it’s definitely something that captures the attention.
Finally, the job ad should explain what the recruitment process will look like:
Have a fast recruitment process
So what should an ideal recruitment process for hiring senior software engineers look like? It should be transparent and fast. Do you know this joke?
A senior developer lost their job and became unemployed. It was the worst 15 minutes of their life.
Of course, this is exaggerated. Some senior software engineers may wait even a few weeks for your final decision. However, this may come down to simple communication skills and needs to be made clear upfront.
Turning a job offer into a successful hire is about more than just listing the hard and soft skills mentioned by your development team. The best job descriptions will explain what the candidate can expect from the process clearly—from the beginning to signing the contract. It should at least contain the following information:
- What are the steps – will there be phone screening and homework? Will there be one interview with HR about soft skills and another with IT about technical skills? How long will the recruitment process take?
- What is the time frame for feedback after each step?
If you need 2 weeks to review homework assignments, that’s bad. But if that is the case, then it’s better to say that upfront. In IT it’s called SLA – Service Level Agreement. You agree to give feedback and proceed in a certain time frame.
- Think about how much time there will be between your senior engineer signing the contract and them actually starting the work. For example, will they need to start at the beginning of the calendar month?
One way to ensure a speedy recruitment process is to automate parts of your screening stage. Freeing up the time of hiring managers to be able to carry out interviews and do the things that actually make your company money.
Offer constructive feedback
Feedback is part of the process. If you simply forget about rejected candidates, they will have very bad memories of your company and they could spread this to colleagues who see your job advertisement. A simple, templated feedback is not much better.
Take your time and prepare constructive feedback when rejecting a candidate. Especially explain why they got rejected and what are the possible next steps.
I’d be fairly happy to hear that If I’m not experienced enough in a certain technology or practice, I can study it and come back in a year. After all, no one can be expected to know everything about the development process.
Moreover, if the engineers can point to the books or materials they found useful, the recruitment process can actually be a fantastic learning experience for them.
Focus your employer branding
Employer branding is a big topic, so I’ll just scratch the surface. Every piece of information that reaches potential candidates apart from the job ad is a bonus.
Conference talks by your developers. Encourage your team to give talks at local user groups or conferences. Give them time to prepare, maybe even invest in training. It’s a long-term investment that pays of later.
Have a tech blog explaining your architecture, and design decisions, but also mistakes. So many companies, particularly major companies, are honest about publishing post mortems. If your developers can publicly admit they made a mistake, how they mitigated the problem and what they learned – it tells a lot about the culture.
Sponsoring events and displaying your logo is slightly less effective, but it’s also the cheapest and easiest way to gain recognition.
How to get senior developers to take a coding test?
I believe homework is a better predictor of future success than whiteboard coding sessions or other types of tests. Candidates can take the project and complete it in the comfort of their own homes. They use their hardware, whenever they want, and can search for solutions to common problems over the internet (this is fine!) That’s right, even seniors look up stuff on Stack Overflow all the time, don’t blame them.
However, poorly designed homework assignments are doomed to fail. At this stage of life, developers may have families and dozens of other job opportunities. Seeing yet another coding project to complete in their spare time, maybe either an exciting challenge or a boring necessity. There is a thin line between continuing the process straight away and forgetting about it forever. So, how do you design the perfect homework assignment?
Of course, all these tips work if you let your candidates know in advance what the homework looks like. And that its purpose is also to save time during the interview process.
Keep it relevant
If your primary business is renting cars and your main technical challenge is the recommendation engine, keep your homework close to that. Don’t come up with abstract algorithmic questions. Of course, you don’t expect candidates to solve your real problems. But make a suggestion it’s the type of challenge they will encounter on a daily basis. Obviously, you must be honest about it.
The candidate may attempt a coding challenge simply to get a taste of what you do at work. You can even build a story around it. Like: “try to beat our engineers”, or “can you think of a better solution than ours?” Creating a task with a backstory sparks interest.
Don’t start from scratch
So-called greenfield projects are sometimes considered an advantage when applying for a job. Although building an application from scratch is fun, it’s problematic for many reasons:
- The initial setup of a new application is a non-trivial task
- Developers rarely start new projects, much more frequently they improve or maintain existing ones
- Reviewing and testing applications created from scratch is harder for your engineers.
For these reasons, it’s much better to provide an existing codebase and require candidates to make some changes to it. If significant maintenance is part of the job, consider troubleshooting or bug fixing an existing application.
Another great type of assignment is code review. Something that senior developers do a lot. You may even consider showcasing your own codebase, of course hiding the important intellectual property. This has yet another benefit – candidates see your coding style.
Make sure it is easy to prepare
If your homework assignment requires a certain version of Python or Node.js, make it clear. Being unable to build and run the assignment is a major stress and frustration point. Also clearly state what type of assignment to expect: algorithmic? Performance or clean-code oriented? Heavily tested or documented? The quality of your homework tells a lot about your own proprietary codebase. If you are preparing candidates for a homework assignment in a long-gone AngularJS framework, don’t expect many applicants.
On the other hand, if you provide candidates with ready-to-use environments like virtual machines or pre-configured IDE, they are much more likely to attempt the challenge.
A sample, non-graded test is great as well. Show your candidates what the assignment looks like more or less. Once they take the sample exam, they might be tempted to approach the real one.
Finally, explain that looking up help on the internet is fine.
If you can apply some gamification techniques, many candidates will find that appealing. For example, create an anonymous leaderboard between candidates or grade homework based on benchmarked performance. Hackathons and coding challenges prove that may developers are willing to spend a significant amount of their spare time coding.
However, gamification is tricky. It’s easy to discourage people. You may even get accused of building a rat race type of environment if you aren’t careful. So this technique works best if your brand is very well established.
Pay attention to feedback you receive
Let candidates know in advance that every part of the homework is subject to detailed, technical feedback from your engineers. If your company has a strong brand in the developers’ community, it’s a fantastic opportunity for candidates. Note that the feedback will be constructive and guaranteed, no matter what the outcome of the process is.
If part of the grading is instantaneous, the feedback is even faster and more agile. For example, you can use automated unit tests.
Also note that the feedback or code review will contain links to further reading and materials, suggestions, etc. Don’t focus on a single aspect like code coverage or performance. You may reject candidates who misunderstood the requirements or don’t focus on the same values as you do.
What not to do in tech recruitment
To sum up, here’s a list of actions during the hiring process that will almost certainly discourage the best-fit candidates from applying and decrease the completion rate of coding tests:
- Don’t write a long job description that’s actually missing valuable information. Or even blatantly lying
- Don’t have a very long hiring process
- Don’t implement assignments that take too long to complete (1-2 hours is a reasonable limit)
- Don’t use technical assessments that have nothing to do with your company’s daily work, routine, and business
- Don’t send out assignments that are too long, boring, or too theoretical
- Don’t forget to offer feedback
As we’ve seen, when it comes to trying to hire senior software developers it’s important to treat them differently to other developers in your approach. Understand that they won’t suffer fools. Make sure to write a succinct and clear job advertisement if you want senior engineers to apply. Also be sure to describe the project and the company, not only the technologies. Be specific about salary, and realistic about your expectations. You also need to communicate how your recruitment process will run, and how long it will take.
Finally, keep coding tests realistic, competitive and fun enough that senior engineers will want to undertake them. They need to be short—a few hours maximum if you want senior developers to complete them. Time is important. Follow these steps for success and you should give yourself at least some chance of success.
For more detailed technical hiring advice, download our complimentary Ebook –
The essential guide to technical hiring success