A practical, step-by-step guide to hiring software engineers and growing software engineering teams effectively
Hiring software engineers is hard work. Whichever way you look at it, hiring the right person for your team — in terms of hard skills as well as culture — is complicated, time-consuming, and expensive. Throw in the fact that demand for engineers is at an all-time high, and your budget as a startup is small... and you have a recipe for a nightmare.
I get it. I’ve been there, and I made plenty of mistakes before learning how to source the right people effectively. I wrote this article to help you if you’re a startup looking to hire developers on a budget. In it, I’ll outline the approach I’ve developed that’s helped me hire engineers twice as fast as I used to and cut my hiring costs by 30%. There will also be many examples throughout the article so that you can better fit this guide to your particular case.
In this article, you’ll learn a whole lot of “how-tos”:
- How to create a candidate profile.
- How to analyze a candidate market to make data-driven hiring decisions.
- How analyzing salaries helps to determine the hiring budget.
- How to select the best markets to hire based on talent availability.
- How to build an effective hiring process.
- How to avoid the most common hiring pitfalls.
- How to do all of this without breaking the bank in terms of time or money.
But let’s start at the beginning.
Who do you want to hire?
Step 1: Identify your hiring requirements and candidate profile
The more time you give to prepare for your hire, the higher your chances of success. The first step is to build a candidate profile. So you’ll have to clearly outline the skills, knowledge, and experience needed from your candidate. For example, think about:
- Your goal for hire (what you expect your new developer to do).
- Crucial technology knowledge.
- Optional technical skills.
- Level of seniority.
At this stage, let’s focus on hard skills. For example, let’s say your goal as a startup is to build an MVP for a web project. This will require both backend and frontend development.
Since this is a web project, you can use one of the popular technologies such as Angular, React.js, or Vue.js for frontend development. For the backend, any of the popular languages and frameworks such as Node.js, Django, Ruby on Rails, or even Golang will work. This means that you have two options: hire one backend and one frontend engineer, or hire a full-stack engineer who can do both front and backend development.
Hiring two engineers to build a small MVP might be overkill because a frontend engineer might get stuck waiting for a backend engineer to produce an API. Believe me, at this stage, it’s more reasonable to have one person who can do both.
You also want to hire a senior engineer. Why senior? First, because you want to build a product fast, you'll need someone who knows how to build end-to-end solutions. Second, you expect them to be proactive and comfortable at suggesting technologies and architecture. Finally — and most importantly — they need to have knowledge of cloud services like AWS or GCP, where you will be hosting your web app.
Once you’ve established a basic profile like this, think about the successful outcomes you expect from the position. This will help you define additional skills needed to achieve that outcome.
To determine successful project outcomes and requirements for the role, ask yourself:
- What results do I expect to achieve with someone who is successful in this position? For example, “I expect that by hiring a full-stack engineer, we’ll be able to build the web service MVP in four months.”
- What impact will the role have on the team, the project, or the company as a whole? For example, “I expect that by hiring a full-stack engineer, my project will be headed by a technical leader while I will have more time to focus on other aspects of building the company."
Step 1 wrap-up
The outcome of this step will be a detailed picture of the candidate you want to hire in terms of tech competencies, experience, and responsibilities. You’ll also be clearer on the concrete goals you aim to achieve through the hire. The more time and effort you put into this stage, the better your chances of getting a good hire.
Once you’re done, it’s time to see how the software engineer job market looks.
Step 2: Analyze the engineering landscape
As long as finding a good engineer is as hard as finding a good pizza, the next step will help you at least to decide which part of the haystack you’ll focus on. Our goal at this stage is to analyze the job market and levels of technology adoption to get a better idea of market demand, how many engineers are available, and how hard it will be to hire.
Study market trends
An overview of market trends will key you into the demand for specific technologies. The greater the demand, the more competition there is for candidates, which pushes up salary levels.
The best place to get started with studying the software engineer job market is to review some recent research. Most big tech industry players put out research and reports like this each year. For example, here are some insights from the 2021 State of Software Engineers report from hiring platform Hired.com:
- Demand for engineers is at an all-time high. Despite the COVID-19 pandemic, 2020 saw steady growth in software development.
- Most employers were able to find talents outside large IT hubs and hired them to work remotely instead of relocating them.
- 54% of remote software engineers were more productive than in-house teams.
- Diplomas, certificates, and credentials continued to lose importance throughout 2020. Skills and candidate-company fit have become more relevant for evaluating a potential hire.
Recent reports on diversity in tech hiring, such as this data, show that men represent 91.5% of the software development community, while women make up just 8.5% of IT staff.
Job sites such as Glassdoor and LinkedIn, as well as business reviews, also publish overviews of market data, such as this Glassdoor report on how more than three in four people consider diversity important when deciding where to work. This Forbes article also reports that diversity can drive growth.
Based on this analysis, we can see that
- Hiring software engineers remotely, which was not always preferred before the pandemic hit, has become a much more natural choice in 2021.
- Building a diverse team isn’t easy, but definitely worth investing.
Compare technology adoption levels
Technology adoption levels give you an idea of how difficult it will be to find a software developer with experience in a particular technology. This can influence the tech decisions you make for your hiring project based on your budget.
Here again, industry reports are a great resource. Let’s use the 2020 Developer Survey from Stack Overflow as an example. In our hypothetical hiring case, you’ve decided that you could go with Angular, React.js, or Vue.js for your frontend.
From this chart, we can see that finding a Vue.js engineer will be twice as difficult as finding a React.js engineer and 1.5 times more difficult than finding an engineer with knowledge of Angular.
Now let’s look at the trends for specific technologies and levels of technology adoption.
According to the report, the demand for specific frontend engineers is growing. For example, the demand for React.js, Express.js, Angular, and Typescript has more than doubled. The same goes for DevOps engineers, which have seen a 2.7x growth in demand for Google Cloud and AWS, and 2.2x for Terraform. This indicates that the competition for engineers with frontend and DevOps skills is higher. As a result, it will be harder to find a software developer with these skills, and salaries will be higher.
Given all this, it makes sense to go for React.js for your frontend, as it fits your project goals, and skills are more available than others, so it will be easier and cheaper to find a React engineer. As for the backend, Node.js makes sense as it’s widely adopted.
In general, aim to avoid new or trendy technologies, especially if you’re building an MVP. This is good practice because:
- New technologies often have a lower adoption rate and fewer engineers for hire.
- Solutions to common problems — such as a library to integrate an important service — may not yet be available. You’ll have to develop them yourself, which will slow down your project.
- New frameworks can present bugs and security vulnerabilities.
Step 2 wrap-up
A bit of market research can go a long way to narrowing down your candidate profile. By now, you have a better idea of what your hiring approach could be and how hard it will be to hire for different skills. Stats show that the demand for skills we are looking for has more than doubled, so we should expect higher competition this year.
Step 3: Compare salaries
Steps 1 and 2 have narrowed down your search to a developer with React.js and Node.js skills. Market research shows a general trend toward hiring remote workers outside the main tech hubs, though you might not be sure yet that it’s the right choice for you. The next step aims to scope salary expectations in different locations to find out where your ideal candidate could be located.
The annual Hired State of Software Engineers report we saw in Step 2 includes an overview of salaries offered to top talent in different roles and markets, based on data from hundreds of thousands of interview requests and job offers. The 2021 report also reveals the impacts of the COVID-19 pandemic on the engineering community and analyses which skills and roles have seen higher demand as a result.
In this hiring example, you’re looking for a senior full-stack software engineer with five or more years of experience. Here’s what the report has to say about the average salaries in the most popular tech hubs:
- The average annual salary for top software engineering roles in the San Francisco Bay Area is around $157,000, followed closely by New York, where it’s about $148,000.
- Software engineers in Seattle get on average $145,000 a year, and in LA $143,000.
- In London, software engineers earn on average $98,000 a year.
What’s more, in 2020, average payrolls for software engineers rose by 5-7% in major IT hubs like the Bay Area, Boston, New York, and London, making hiring software developers even harder there.
Let’s say that hiring at these prices is beyond your budget, and you need another option. A quick internet search will show several destination options like South America, Europe, India, and Southeast Asia. India and Southeast Asia won’t suit because of the time zone. Let’s have a closer look at remaining South America and Europe and analyze the salaries on the market.
For country-specific searches, local job portals are a good place to start. Let’s take Ukraine, Poland, and Argentina as an example:
- The average software developer salary in Kyiv, Ukraine, is $40,000, based on data from Ukraine’s Djinni portal.
The same salary in Warsaw, Poland, is $56,000 based on results from nofluffjobs.
With this data in mind, hiring a remote senior engineer in Eastern Europe is a cost-efficient option. Working with a full-stack software engineer in Eastern Europe will cost you between $40,000 and $56,000 per year.
Lower software developer salaries in Eastern Europe can be particularly attractive if you’re a startup founder looking for specialists to build your first MVP on a limited budget. And Eastern Europe is a proven destination with highly skilled experts.
Step 3 wrap-up
Researching current salary offers will help you decide whether your budget is reasonable and how many developers you can afford to hire. Talent outside the major hubs is obviously cheaper. When considering alternatives, look at country-specific hiring portals to better understand what expectations could be. This is tedious, so I’ll save you some time by listing the most trusted resources for each country respectively.
You can read our detailed guides on developers salary in the US, the UK, and Europe.
Step 4: Check talent availability
So let’s imagine you’ve opted for a remote hire in Eastern Europe and have narrowed down your search to Ukraine and Poland as possible choices. Which country should you choose?
One way to decide is just to find the biggest talent pool for your job profile, which means looking at the number of engineers available in each location. You can do this by researching market reports and statistics or using a general recruitment resource like LinkedIn.
Searching for “software developer” in People on LinkedIn and using a country filter gives some rough statistics:
- There are around 102,000 software developers in Poland.
- In Ukraine, the number is around 83,000.
Next, let’s see the availability of engineers with specific skills using LinkedIn. This tells us:
- There are around 21,000 Node.js developers in Ukraine, compared to 16,000 in Poland.
- There are around 25,000 React.js developers in Ukraine, compared to 23,000 in Poland.
One more thing before making a final decision is to look at the level of competition for talent. It’s better to hire in locations with more talents as this increases your chances of hiring. If you want to hire in locations where there’s a high demand for engineering roles and not enough talent available, you’ll most likely have to offer a bigger salary. For example, in places like San Francisco, there’s a huge demand for engineers from startups. You’ll also have to compete with big players like FAANG, which provide high salaries and benefits.
Based on this data, both countries have a large pool of tech talent, which will allow us to hire fast and grow the team in the specific location later. In this case, our choice will come down to Ukraine because of the large number of React.js developers to select from.
Step 4 wrap-up
This step helped you decide where to hire an engineer based on the number of workers available, competition for talent, and expected salary level. This is also the time to factor in any other things that could be important for you, such as time difference and cultural fit.
By now, it should be clear where you’ll be focusing your job search, and you’ll be ready to post your job. Once you’ve done that, the next step is to outline your hiring process.
Step 5: Build your hiring funnel
It’s time to look at what the hiring process looks like. We know how badly you want all your hiring efforts to be rewarded by success. But there is no other way than to take your time and use a comprehensive approach to build this process correctly.
At this stage, we’ll show you how to determine your hiring funnel, what are the main elements of the hiring process, and how to measure their effectiveness.
A basic hiring funnel
A hiring funnel represents the hiring process in the form of the series of stages through which your candidates pass as the employment progresses.
The funnel might look different from company to company and even candidate to candidate, but generally, there are five main stages:
- Sourcing and selecting. Once the job requirements are settled, and the vacancy is published on job portals, you can form a list of potential fits and select the most promising ones from the pool of applicants.
- Screening. This is an initial assessment on a call with the recruitment or HR specialist to see which candidates meet the role requirements well.
- Interviewing. This is usually carried out by HR and an in-house field expert to further evaluate the personality and technical background of a candidate. Depending on the job, it might include a test assignment.
Tip: Many companies do a technical assessment first and then a culture fit interview at the end. I would recommend to do a general screening first to assess if there’s a mutual fit with the company and set up a technical interview if it is. This is because a technical interview is the most complex part and usually takes up valuable engineer’s time. General screening, on the other hand, can be done by HR.
- Making an offer… or not. Based on the outcomes of the interview and the test task, you might decide to offer the candidate to join your team — or part ways.
- Negotiating the deal. Sometimes, a candidate might want to reconsider the paycheck or ask for extra benefits — or you might decide to add some sweeteners to seal the deal.
Once you have an understanding of your funnel, it’s a good idea to add information on who is responsible for each stage or decision and how long you expect each stage to take. Anyone on your team looking at this funnel should understand how your recruitment process works. This helps to align your team on the hiring process.
Recruitment metrics
Now you’ve created your funnel, the question becomes: does it work? In other words, how can you know that your hiring process is effective?
There are several important metrics you can track:
- Conversion rate (pass-through rate). This measures the percentage of candidates who move from one stage to the next.
- Offer acceptance rate. This represents the percentage of candidates who accept an offer of employment from your company, whether before or after negotiating your terms.
- Cost per hire. This is the financial expenditure required to fill an open position.
- Time to hire. This is how long the process takes and how fast you can hire for a particular role.
You can calculate the cost per hire with some simple math. Imagine you’ve calculated the following time estimates for your funnel:
- 2-3 hours of recruitment admin per candidate (sourcing, sending messages, doing initial screening).
- 30 minutes of your people ops/HR and your engineer manager’s time for motivation and cultural check.
- 30 minutes of your engineer’s time to review the CV and validate tech skills during the interview.
Step 5 wrap-up
A basic recruitment funnel monitored with some simple metrics saves you time and gets you clear on whether your recruitment process is working efficiently. Formalizing your funnel as a roadmap with clear responsibilities and time/cost expectations will keep everyone in your company on the same page when it comes to hiring processes and success.
Once your funnel is in place, you can look at optimizing it to get even more cost and time savings.
Step 6: Optimize your hiring process
This step aims to discover how to hire effectively and optimize hiring costs, which often appear to be too heavy.
As a general rule, unless you’re Google and have the luxury of developing a long and multi-step hiring process, short and simple is best. If your recruitment process is slow, you risk losing candidates, as the demand for engineers is always high, and candidates usually have multiple interviews on the go.
Ask yourself:
- Do you really need to go through five levels of interviews, or are three rounds enough?
- Would you prefer a two-hour interview (in terms of your valuable time) or instead have things wrapped up in half an hour?
- How long do you want to wait for a decision?
Factor in that a longer process creates more hours of work for your engineers and people ops — and therefore costs you more — and you can see why a shorter process makes sense.
Here are some tips to optimize your recruitment funnel and keep things on track:
Have a clear budget with a contingency plan for over-the-budget hire.
I recommend you plan for one over-the-budget hire and decide how much you’re prepared to spend. For example, if your budget is $4000-5000/month, you could allow for one engineer to go over that up to an extra $1000 a month.
Alternatively, you can distribute any over-the-budget hires between the remaining hires. As an example, imagine you’re recruiting a team of five engineers with the same budget as above. If you hire one engineer for $6000, you’ll need to spread the extra $1000 expense between the other four hires. $1000/4 = $250, so the budget for the other four hires becomes $3750-$4750.
Timebox the interview session and prepare questions in advance.
Don’t spend two hours talking when 30 minutes is enough to evaluate your candidate. Be consistent with your recruitment process and avoid creating extra steps or sessions.
Decide quickly.
I recommend to decide on the next steps within a day. This is not just about giving candidates a quick response: as time passes, memories of the interview fade, and you become less able to make a confident decision. It’s also important for the next point.
Close fast.
If all goes well and you think the engineer would be a great fit, send an offer as quickly as possible. Always remember that the candidate is probably going through other interviews, and while you’re thinking about things, another company may be making a better offer. Expect a reasonably fast decision time from your candidate too: state that the offer is valid for 1-2 days if you haven’t already done so.
Step 6 wrap-up
The basic strategy is to keep things short, know who is responsible for each step, have a budget, and a well-defined plan for acting in exceptional situations, like going over the budget. If you do go over budget, plan how you’ll compensate in the budget for any other hires.
Avoid common pitfalls
These six steps are the basic process I use for efficient hiring. This process didn’t come about without a lot of mistakes and scraped knees along the way. Here are some common recruitment pitfalls, along with how to avoid them.
Trying to find the perfect candidate
Don’t try to get a 100% match with your candidate profile, as this can really slow you down, and the perfect candidate may not even exist. What’s more, by focusing on getting a perfect match, you might be passing over relatively good matches that would become a great fit with time.
Decide which skills are critical from day one and which skills could probably be learned fast on the job.
Not assessing for culture fit and motivation
To become a valuable member of your team, the candidate has to share your company’s philosophy, and your goals must align. During the hiring process, make sure that you have a conversation with the candidate to check for culture and company fit.
Basically, you need to consider candidate motivators such as challenges, growth opportunities, and status alongside your company’s motivators, such as what you’re building and what you need. A good starting point is the list of hiring outcomes you outlined in Step 1.
If you do end up hiring someone with great technical skills but poor culture fit, consider saying goodbye to them pretty fast. A proper fit will get you a lot further as a company.
Focusing on years of experience
Just because a candidate has many years of experience doesn’t mean that those years are particularly rich. For example, a candidate with ten years of experience in working with Python on a single project might have been doing support and minor bug fixes with little skills development, while on the other hand, a candidate with just three years of experience might have worked on multiple projects and gained a broader and deeper skill set.
Hiring only by reference
It's a mistake to only hire people who are referred to you. It might feel safer, but it can create problems down the line if the person doesn’t fit. It may be difficult to let the person go because you risk damaging a relationship with the person who gave you this reference. By focusing only on referrals, you also miss the opportunity to see what others can offer you, and you aren’t able to see the bigger picture.
Review of the hiring process
This article looked at six steps to hiring a software developer effectively. These are:
- Establish the candidate profile: who you need to hire, and the necessary skills.
- Scope market trends to get an idea of hiring difficulty and see where your efforts will be best focused.
- Compare salaries for similar positions to establish a realistic hiring budget.
- Look at viable locations based on your budget and the availability of tech talent.
- Build an effective hiring funnel that outlines the stages of your hiring process.
- Optimize your funnel to keep costs down and your hiring on track.
If that seems like a lot of work… well, it is. If you’re a startup founder or CTO, CPO, or engineering manager focused on building a product, it’s normal if you don’t have time to cover all the bases. This is where outsourcing some or all of the steps can make sense.
There are basically three alternatives to doing all the work yourself:
- Hiring a recruiter to help you source candidates that you can interview yourself.
- Hiring a recruitment agency to help you close vacancies.
- Working with a local hiring partner. I think it’s the best option, and below I’ll explain myself.
The benefits of working with a local hiring partner
I recommend working with a local hiring partner as the best way to mitigate the risks and overcome the challenges of hiring a software engineer. Call me biased — obviously, I am! —
but this is exactly what we are doing at Altigee, helping startups and companies with their hiring needs.
Just think about how a local partner can help you with:
- Recruitment. A partner will usually have their own recruiters and network of recruiting partners, which allows them to source the right talent fast.
- Administration. A partner will employ engineers on your behalf and take care of the day-to-day administration routine such as payroll, employee benefits, equipment, and a comfortable working environment.
- Management. A partner will help you manage your developers and ensure that your team is 100% dedicated to your project.
- Talent retention. A local partner understands the local market, which means they know what your developers want. This helps you reduce remote employee turnover and retain the talent you need, saving you the costs of repeat hires.
- A jump start. A good partner will often have a SWAT team of lead engineers that can join a project right away or have a pool of available talent that you can choose from right at the start. This dramatically reduces the time and efforts needed to hire software engineers for your project.
At Altigee, we specialize in extending in-house teams with remote talent or building an engineering team from scratch. We have the power and daring to take on your next project fast.
Sounds good? Let’s talk!