These days, no matter which conversations about hiring talent in tech you start, the destination your train of thought inevitably reaches is – you guessed it – talent shortage.
There are so many statistics showing how the situation is already dire and how it will continue to get worse until, presumably, there will be more openings than jobs (and that supposedly leads to some crisis/catastrophe).
As concerned recruiters write long LinkedIn rants on how hard it is to hire a coder or retain tech talent and how developers became spoiled and bratty, it’s easy for business owners to think: “Welp, I’m never filling an opening again”.
Let me get things straight by saying that this is an illusion that quickly dissipates when you read a Reddit post like this. It got over 200 upvotes so the author might be on to something. The user points out that, despite being a skilled engineer, it’s not that easy to find a job in the industry. Where’s the culprit? Narrow, one-sided recruiting strategies.
One of the commenters made a brilliant analogy:
“The endless search by employers for the purple squirrel: an incredibly rare species that works for peanuts. There aren’t enough purple squirrels, so there must be a shortage.”.
Thus, as a business owner, you should have no problems when you hire engineer professionals unless you spend too much time looking for “purple squirrels”. Sharing tips on building a recruiting campaign that’s not too specific but gets you the skills you need is, in a nutshell, the goal of today’s post.
On The Journey to Hire Software Developers: Skills You Are Looking For
If anything, a surgically precise list of criteria is nothing to be proud of – it simply narrows your field of vision. Rather than letting the rut of looking for specific skill sets, set the radar to find people with good-developer-like minds. A few suggestions:
1. Strong understanding of fundamentals.
Languages grow obsolete, technologies change, trends die but fundamentals keep on living. An engineer who knows what makes a good design, a scalable architecture will over time simply change tools that help accomplish these goals better.
For a good programmer, the usability of the product is always the priority and the stack follows the goals.
It’s a cliche you hear in all recruiting manuals, and there is a good reason. The problem is that most team-building strategies don’t work that well on developers. Most see Scrum as limiting and deadlines as a way to put a collar around a developer’s neck. A Stack Overflow user wrote:
“Developers who think they are under pressure) will do a crappy job in any development methodology”.
As you hire an engineer, redefining the idea of teamwork might be a game-changer you never knew you needed. At our team, we use (and recommend) an approach that’s a mix of personal freedom and moderate oversight. In candidates we look for:
- Willingness to use Slack – there are no plans to switch solutions so a developer should be fully comfortable with the platform.
- Understanding of Github and readiness to upload code to a shared repository – otherwise, how is a manager supposed to know what a programmer is doing?
- Readiness to comply with style guides – “free spirits” who code the way they please will, at the end of the day, get in the way of scaling on multiple occasions.
That said, personality traits are the area we are not picky in. Recruiting a developer is not about whether or not you’d hang out with them after work, it’s about workplace efficiency. Besides, there’s beauty to having a quirky team – business owners and recruiters should learn to acknowledge it.
3. Passion for technology
Let’s clear the use of the term “passionate programmers”, as it’s one of the most misused concepts developers have to deal with.
What being passionate about technology means:
- Following industry-specific blogs and articles on software development.
- Coding as a hobby (non-work-related projects).
- Engaging in discussions on Reddit and other social media.
- Identifying with software development as a career and not planning on switching fields.
What being passionate about technology DOES NOT mean:
- Working crazy hours.
- Always feeling passionate about routine, monotonous tasks (I’d argue feeling bored when your work is not fulfilling is actually a marker for passion).
- Thinking about software development as an ultimate hobby, art, and whatnot – at the end of the day, engineering is a rigid, strictly protocoled industry, so it’s normal to not be head-over-heels all the time.
The takeaway? Do look for people who want to progress in the field and are ready to keep up with technology trends. Don’t try to find candidates who leave and breathe coding – it’s not impossible but you will have a harder time.
One of the worst decisions to make when you hire engineers is looking for candidates who fit a specific project. The reason? Over years of running a team, you might change the number of people working on a project and want to engage more engineers in a new one.
To that end, you want to make sure that a developer can readapt and follow, learn new tools, and quickly get up to speed. What are the markers of engineers who are interdependent?
- Familiarity with different project management styles – Agile, Scrum, Waterfall, you name it.
- Understanding the differences and the key concepts of object-oriented, functional, and procedural programming.
- Familiarity with test-driven development.
- Knowing the differences between strongly and weakly typed languages and the applications of both.
- Good command of MVC.
- Understanding of RAD and loose coupling.
This is not a definitive list but checking how well a developer is versed in high-level concepts, asking a few questions on the arguments above is a good place to start.
5 Steps to Hire Software Developers
After giving it some thought, the range of criteria for hiring software developers is pretty manageable and universal. That is a good thing because it broadens your talent pool and helps make sure you are not missing out on a brilliant engineer just because he doesn’t know how to use a highly specific tool you think you need.
What now? Aiming to help business owners and recruiters run effective and easy-to-plan developer recruitment campaigns, we penned down 5 steps that will guide you as you hire software engineer professionals.
Warning: Five is a small number but it’s not like recruiting will be quick and easy. There’s a lot of work going into each of these steps so brace yourselves.
Step #1. Write job openings people actually read
On average, a job opening is only 250-300 words long so taking some time to write a good one shouldn’t be that hard. However, the more I see listings like the one below, the more I change my mind.
The truth is, unless you know engineers really well, it’s hard to tell what spikes interest in a job applicant. Through years of non-stop hiring and by analyzing empirical evidence in the form of Reddit threads, we would suggest sticking to these hefty practices:
- Choose the right platform. Most developers don’t use LinkedIn to apply for jobs and prefer recruiters to reach out instead. Since that sounds like a lot of time for talent managers, consider using hiring platforms developers swear by – such as Triplebyte or Hired (we also covered a few strategies on choosing where to hire developers).
- Be explicit about job responsibilities. In a job listing, programmers want a glimpse of what their workday will look like. Instead of focusing on skills and technologies, a programmer needs to have, elaborate on day-to-day tasks and responsibilities.
- Avoid using titles like Junior, Middle, Senior because they are not objective. It’s better to use more descriptive adjectives like “experienced” or “entry-level” since they give candidates a clearer understanding of whether or not they are fit for the opening.
- Emphasize perks (especially job flexibility). A good job listing gives a candidate an insider view of the company. You want to make sure that, after reading yours, a programmer goes “Oh, it’s nice to have all-team lunch breaks” or “Great, they have a flexible schedule”. Thus, don’t hold back on describing the good aspects of the company even when it’s tempting to take them for granted.
Step #2. Screen CVs
After you published a job listing, the next thing you’ll see is dozens of CVs flooding in. That’s no reason to rejoice – unfortunately, most candidates blind-shoot resumes left and right without reading the opening properly. Thus, talent managers need to weed out offers from people who have no technical aptitude for the project.
Here’s how to do to hire programmers online:
- Prefer candidates who write cover letters. CVs are too structured to let the candidate’s personality come through – cover letters are more insightful in this regard. Look for candidates who know how to communicate succinctly, show the understanding of your project and appear to have read the job opening.
- Check if candidates add links to GitHub or Stack Overflow. If they do, it’s already a good sign since, at least, it means they use both and have a priority of keeping up with industry trends.
- Prefer candidates who share links to projects. Of course, it’s not a given that a programmer actually contributed to an application on the CV – that is a concern to address at a job interview.
- When in doubt, prefer people with degrees over those with no degrees as you hire developers. It’s a controversial one – some of the best developers on our team didn’t get formal STEM education – however, when you are not sure about two similar candidates, choosing the one with a University degree puts business owners in a safer zone.
Step #3. Run a job interview
Interviewing software developers is no walk in the park for a talent manager or a business owner. You might be thinking: “I know nothing about development so what do I do?”, “How do I not make it obvious that the candidate is smarter than me?”.
These are valid (albeit irrational) concerns – the good news is, research and preparation in advance can help you overcome them and have a smooth, insightful talk with a candidate.
For different teams, there are different ways to deal with the pressure of interviewing app and web developers for hire – we use these:
- Have a predefined recruitment workflow. Typically, it is a call with an HR manager, an interview round with a talent manager (around 45 minutes), and an interview with a senior developer (45 minutes – 1 hour).
- Set goals for the interview. You only have a limited time with the candidate – try to make the most out of it. A good place to start is by writing a list of hire and not-hire criteria that will later help you make a decision. Also, it’s a good idea to plan the flow of the conversation, for example, briefly describing the company, asking a candidate general questions, assessing technical skills, and answering a candidate’s questions.
- Write out the main bias points and catch yourself on leaning towards them during the interview. It’s more common for interviewers to discriminate female coders as shallow or younger coders as unreliable – an extra layer of awareness will come in handy.
A note on using canned interview questions
If anything, we are proponents of having a predefined list of questions. However, they can become dangerous when interviewers see different answers as wrong. Keep in mind that, unless a candidate has read the list before, you need to make room for flexibility and cut an engineer some slack.
Other than that, canned interview questions are decent ice-breakers and give business owners and talent managers a direction for steering the conversation. Here are our lists of top software engineer interview questions:
- Machine learning interview questions
- Mobile application developer interview questions
- Python interview questions
- Software engineering manager interview questions
- React interview questions
- Node.js interview questions
- Scala developer interview questions
- Web developer interview questions
- ASP.NET interview questions
- iOS developer interview questions
- PHP developer interview questions
- Elixir developer interview questions
- Android and Kotlin interview questions
- Magento developer interview questions
Step #4. Make a decision
When all is said and done, it’s time to sort through your impressions and opinions and make a hiring decision. The easiest way to determine how well a candidate did on the job interview is by ticking (or not) the following boxes:
- Good communication skills – a candidate doesn’t dodge questions, communicates thoughts clearly, doesn’t feel threatened or intimidated when asked provocative questions.
- Analytical – in most cases, an analytical candidate is the one who analyzes the problem before writing a solution, not the one jumping in single-mindedly.
- Motivated – a good candidate will be curious about the next steps. Such engineers will think as a part of the team, offering long-term solutions and strategies even without knowing if they get to execute them on your team.
- Detail-orientedness – a skilled programmer has an eye for edge cases and appreciation (not pedanticism) for conventions.
- Ability to prioritize functional solutions over complex ones. The time needed to complete an assignment is a factor you need to consider when interviewing candidates. In the future, engineers who struggle to act quickly will inevitably lag behind the rest of the team.
Step #5. Make an offer
Congrats, you found the one, an engineer that fits your team like a glove. It’s about time for a “Yay” – almost. Now, the ball is in your court – make sure that candidates resonate with the company as well as you do with them.
- Be the first on the ball. Don’t drag the decision-making process for too long. Keep in mind that, until they get an offer, most developers are considering 2-3 concurrent opportunities. You want to make sure to grab a hold of a good engineer before a faster team beats you to it.
- Solidify the benefits – make extra emphasis on corporate culture perks, job flexibility, and other things that help candidates lean towards accepting your offer.
- Leave room for negotiation – if you don’t want to lose skilled developers, let them know that it’s never too late to voice salary or other concerns. Encouraging an open discussion is a way to, at the end of the day, work out a solution both an employer and an employee are comfortable with.
- Let the candidate know what’s next. Before accepting a new job, we are often anxious and impatient – it’s good when employees remember to ease that anxiety. Outlining the next steps to take is a way to offer candidates clarity and peace of mind before they embark on a new professional journey.
The Bottom Line
If you go deeper into the horrors of tech recruiting, it seems like hiring a good developer is hands-down impossible. However, with a little bit of consideration to a candidate’s needs, the state of hiring might not be as hopeless as it seems.
The key takeaway from this post is: don’t approach the steps of recruitment superficially because programmers actually care. Another one we barely mentioned is looking outside of the box – both metaphorical (skill set) and literal (a single location). Hiring development talent abroad is a powerful antidote to the talent shortage poison.
Find out how you can quickly close job openings and connect with skilled programmers in Ukraine, Argentina, or Mexico. Get in touch with the team!