Undeniably, hiring senior software engineers is hard. However, I don’t buy into the narrative that the market is completely dried out. Throughout my career, I’ve worked with many different engineering teams, which could all be sorted into two categories: The ones struggling to hire seniors and the ones that had an easy time. In fact, the teams in the latter category were usually full.
There are many reasons why some teams fail to attract good talent. But all the teams that have an easy time have realized a simple fact about our current market situation:
When hiring senior engineers, the company doesn’t choose the candidate, the candidate chooses the company.
Or, put more simply:
When hiring senior engineers, you’re not buying, you’re selling.
If you disagree with the above statement, let me put it into perspective. Some years ago, my resume got into a recruiter network. At the time I had about 3 years of experience as a software engineer in smaller companies. For days my inbox was flooded with recruiter emails. Another time, a few years later, I got unsolicited phone calls from three different recruiters in a single day.
This story doesn’t say anything about my abilities as an engineer. Many of my colleagues with various backgrounds and skill levels have similar stories. In the current market situation, an engineer with a few years of experience under their belt has lots and lots of options.
The funny thing is, while I was employed at both those times, I wasn’t particularly happy with my job. I would’ve been interested in new opportunities, but these recruiters did such a bad job at making the offer sound attractive, I declined even meeting any of them in person. So don’t think that senior engineers aren’t interested in your offer, you just have to make it compelling - you have to sell! Most hiring managers and recruiters I’ve talked to tend to agree with this statement. But if you look at what their company is doing when it comes to hiring, their actions don’t match their words.
In fact, almost everything we do in modern recruiting is bad. It’s bad for all parties involved, but especially for the candidate. Let’s look at a few specific areas.
Your job posting probably sucks
Imagine you’re hiring for a different (non-engineering) position. You have posted your job offer, and now you’ve received more than 200 resumes to read through. How much time would you spend on each individual resume? A minute or two, even less? This is the position a senior engineer is in, when looking for a job.
Your job posting is like a candidate’s resume. They will only spend a few seconds to judge it, and if it doesn’t catch their attention, they’ll leave. Unfortunately, most job postings are awful.
For example, let’s look at an average job posting for a senior engineering position. I went to one of the big job platforms and searched for “Senior Software Engineer”. I picked a random posting and blurred it because I didn’t want to publicly pick on a specific company. The red areas communicate what the employer needs and the green areas communicate what the employer can offer to the candidate.
If you come from a mindset of buying, this is completely fine - you’re saying what you need. But if you come from a mindset of selling, this is insane! You’re used to reading resumes, so imagine how you’d feel about a candidate whose resume is more than 50% information about what they want.
Instead, they’ve probably tried to fill their resume with 100% information about the benefits they can provide for the company. They’ve optimized it to put the most compelling arguments for themselves in the most visible spots.
I’ve compiled the most common mistakes in job descriptions in this post.
In a future post we’re going to look at what the perfect job posting should look like. Sign up for our newsletter bellow to get notified when it comes out.
It’s probably too hard to find information on your company
Going beyond the job posting, most companies make it really hard to find some vital information about them. Be honest, is it easy to find answers to all the following questions that might be super important to prospective hires? Easy as in, max. one click away from your job posting?
- How’s the company organized?
- What management style or development methodology (e.g. Scrum, XP) does the team use? Does management have a technical background?
- How many people are on the team?
- How do you handle working hours? Do you use time tracking?
- Which product/area of the product will I be working on?
- What does the office environment look like? What hardware will I be using?
- How do people usually dress at the office?
- Does the team go out for lunch together?
- …
Of course, different people have different needs. Not everyone will care about all these questions, but to many, your answers will be critically important.
For example, I’ve worked with lots of people who had bad experiences with non-technical management. They categorically won’t work with non-technical managers anymore. So if your team does have a manager with a technical background, make sure that your prospective hires know. For some people it’s a huge selling point!
To look at this from a different perspective, let’s put ourselves into the applicant’s shoes. Imagine you were looking to buy a new computer. You see an ad for one that seems interesting, but you still have more questions. So you go to the seller’s website, but you still can’t find all the answers you want. You keep searching and after a while you finally find a phone number. You call them up and ask all your questions, but unfortunately, the person on the phone doesn’t have all the answers. Instead, they tell you to just send in a letter that says why you want to buy the computer. You should also send them a proof that you have enough money to buy it. After that, they say, they might invite you for a personal meeting, where they will gladly answer all the questions you have about the computer.
Would you really go through this whole process or just find a different computer to buy? This is the experience most applicants have when trying to get answers to the questions above. For most companies, you can’t really get them until you’re interviewing. That’s a big turn-off for most engineers, which brings me to my next point.
Your hiring process/interviewing probably sucks and is too slow
Let’s go back to the example of buying a computer from above. Imagine you went through the whole process, and now you’re at the computer store. You still have all the questions from above and you’re waiting for a store rep to give you some answers. But they don’t show up for half an hour after the agreed time. They proceed to bombard you with questions about why you want to buy their computer. They don’t answer any of yours. When it does come to the point where you’re allowed to ask questions, they tell you they don’t have any more time. Or they say they don’t have answers to these questions, because they don’t know the specifics about this computer. They’re asking you to maybe come back later. Also, you’re supposed to fill out a computer quiz first, to make sure you’re good enough with computers to buy one. After you send in the quiz (which took you more than an hour of your own time to complete), you don’t hear back from them for weeks.
I’ve personally experienced all these things, sometimes all at once.
Let’s break down this scenario into specific points and recommendations. Most of these should be obvious, but a lot of companies still get them wrong.
- Be on time. Don’t let your candidates wait.
- Be well prepared. You should’ve read your candidate’s resume before and have a structure to your interview. You should know as much as possible about the position and be prepared to answer questions.
- Be friendly. This seems so obvious but it’s super important and so many companies get it wrong. It’s a question of mindset. Give the candidate the feeling that you genuinely want to hire them. Don’t ever think they have to prove themselves to you - if anything you have to prove yourself to them. Even if they turn out to be a weak candidate, it’s still better to make a good impression on them. Maybe they’ll tell their friends about their great experience or re-apply in a few years with better skills.
- Be quick with your decisions, without being pushy.
A quick side note about programming assignments
It’s understandable that you want to know if the person you’re hiring can actually do their job and do it well. Going back to the above example of buying a computer, of course the seller wants to verify that you have the funds before you buy. But if they’re smart, they’ll just assume that you have the money. They will only verify that assumption at the very last moment.
You should do the same. Of course, what that moment is, depends a lot on your specific situation and resources. If you have lots of applicants you’re probably going to have to do some kind of pre-assessment of their skills. But whatever you do, do it from the mindset of a seller and try to make the candidate really want the job first. And when it comes to it, you should make your assessment as quick and painless as possible for the candidate.
Opinions differ on this, but if another engineer is doing the interviewing, it might not be necessary to do a formal skill assessment. In my experience, it’s fairly easy to judge technical skill. A friendly conversation about technical interests and recent projects can often be enough. If you decide that a formal assessment is necessary, let the candidate choose between a small take-home project and a time-boxed on-site coding assignment. In any case I recommend making the assessment as close to the real job as possible. Let them use their own laptop, give them internet access, let them ask questions. Make it feel more like you’re working on a challenge together, than it being a test of their skills.
Bad Onboarding and Management
These topics warrant their own post. What happens after the hiring process might be even more important than the hiring itself. I won’t go into too much detail here, but keep in mind that if the processes in your company aren’t as smooth as they could be, you might have difficulties hiring great people, even with the best sales process.
Depending on what your position in the company is, there might not be much you can do about it. But you can at least be aware of the advantages and disadvantages of your company and communicate them clearly to your candidates.
Thankfully, a lot of this is subjective. As I mentioned above, different people want different things in their job. Some people love working from home, others prefer to spend time in an office with a great team around them. It’s important that you talk to your team and know what they prefer and how they currently handle things. This knowledge will enable you to best communicate this to potential applicants.
Likewise, some managers just aren’t comfortable with certain perks, such as home office, or flexible work hours. So sometimes, even when you are in the mindset of selling, you can’t do everything your applicants want, and that’s OK. Just be aware that not offering some perks is a potential weakness of your company when it comes to hiring engineers. It still helps to know these weaknesses of your “product”, since you’ll be able to communicate them better. And it might even be worth openly communicating your weaknesses. It will keep you from hiring candidates who might be a bad fit in the first place.
Conclusion
If you’re coming from recruiting for another industry, it can be difficult to change your mindset. In most industries, the candidate is the seller. And turning this premise around has a lot of implications. All the systems, tools and processes we’ve established for decades are now no longer applicable, or can be vastly improved.
So my advice is to stop fighting this, accept that you’re selling and start to do it well. Whenever you’re doing anything related to hiring, put yourself in the shoes of a candidate who already has 5 offers on the table. Ask yourself: “How can I beat the competition?” Also, make sure everyone who’s involved in the hiring process is on the same page - for example by sharing this post with them! ;-)
Edit: This post sparked some great discussions on Hacker News and /r/programming, feel free to join!
Serious about hiring great software engineers? You might be interested in my book.
About the author
Hi, I'm Alexander, I'm a Senior Software Engineer from Vienna. I have many years of experience in Software Development, Product Management and Project Management. I've worked on exciting software in various industries, including Augmented Reality. Throughout my career, I've helped companies ship more than 25 different products, so I know both sides of the hiring process very well. I now do consulting and workshops on hiring engineers. Do you want to work with me or have any questions about hiring engineers, recruiting, or software engineering in general? Just send me an email, I'd love to hear from you!
Buy the book
More posts: