Unbelievable, another software house is writing an article to compare hiring in-house developers and outsourcing.
But before you click that close button – wait a second.
Yes, you’re right:
- there is an obvious conflict of interest
- tens of companies have covered that topic (and it’s always terrible)
- my first draft was equally terrible
That’s why I decided to take a different path.
Follow the rule of data, forget assumptions, and wishful thinking. Give honest, brutal truth, provide evidence, and real-life examples.
After all, if you decide for hiring in-house, we wouldn’t be a good fit anyway. This article just saves us both time and money.
It took me 10 hours to write, and it’s based on 6 industry reports, 3 whitepapers, 3 pieces of research (links at the bottom and in the article) lots of statistics, and my own experience of working with 60+ companies of different compositions in the last 10 years.
Hope you’ll learn something from it.
# Time to recruit
On average, it takes around 40 days to recruit an in-house developer, and you have to take on recruitment-related expenses.
It takes about 1-4 weeks to find an outsourcing company (depends on your requirements and engagement). The biggest expense here is related to your time.
# Cost of development
The average European developer’s salary oscillates around €50K (annually). In the United States, according to Glassdoor, it’s around $90K.
Additional costs increase this number by 2.7x (according to Joe Hadzima, MIT). These costs can pay off in time (especially while software will be the core of your business).
The average rate in outsourcing is $50-100 per hour, per person (in Europe & the USA, the rate depends on the country). Any additional costs are minimal.
# Expertise & availability
The number of developers working locally is limited. The level of experience is highly dependent on the person. Your location is also the key here.
Outsourcing grants access to a global pool of talents. Companies are more likely to have extensive experience with various projects. Outsourcing providers with experience and talents will offer higher rates.
# Flexibility of scaling
Hiring & firing people is not an easy task, and it consumes time. Some skills are almost impossible to find locally. Also, it can be hard to find developers eager to join short-term projects.
Outsourcing to a software development company resembles an on-demand service – you can adjust the contract freely. The flexibility of scaling is one of the biggest advantages of outsourcing.
# Speed of development
The speed of building things in-house is limited by the number of people on board and time to recruit.
Temporary teams can be quickly set up with outsourcing, which might translate into faster development.
Face-to-face communication is smoother and easier, but more prone to de-focusing and unnecessary chit-chat. In-house development ensures better language and cultural fit.
Online communication creates more friction and is less natural but limits distractions. Outsourcing to other countries may cause language and cultural problems. Finding high-quality partners is crucial here.
Onboarding in-house employees requires an introduction and training. It takes time and effort but is very rewarding. You need someone to manage the team. With an in-house team, there will be no time zone differences.
Outsourcing teams have experience in getting onboard quickly, are self-organized and independent, but are less likely to treat your project as their own. Finding an engaged partner may take some time. Time zone differences may require special workflow organization.
Both solutions require Intellectual Property protection measures.
Software houses are usually more anxious about neglecting security than single developers.
# Building a team in-house might distract you from the core business
You need to choose between investing 100% of your time and effort into the core business activities and spending a part of those resources on building and managing a software development team.
If building this software is a core of your business, time and money investment may pay off. Otherwise, consider that carefully.
So, how to approach the decision-making process?
At the very broad level there are three paths you can take:
- Hire and grow your in-house development team
- Outsource the whole process to a software development company
- Do the mix of both (to speed up your project or add something new to the product)
The decision depends on your project, location, goals.
Sometimes building an in-house team will be a better option for you – we’re ok with that and we won’t try to convince you that it’s different. On the other hand, in some cases outsourcing allows you to solve a bunch of problems.
It all comes up to analyzing 8 aspects.
I will present various points of view here. At the end of each passage, you will find consideration points and the overall winner. Take some time to analyze each aspect and refer it to your project.
Many articles analysing the viability of hiring and outsourcing point to the fact that the process of hiring a new developer is long-lasting and fairly expensive.
Considering that true, will it ever be profitable to hire a new employee?
The devil lies in the details. First, let’s look at the data:
- Indeed, based on a study from DevSkiller, it takes around 43 days to fill a position (in general, data from the U.S.).
- Similar data was brought by the Sparks Group, (U.S., 2018). They point out that it takes on average 51 days to fill the position in the IT field – there are 24 qualified candidates and 15 interviews needed for each hire.
- Also, according to the Society for Human Resource Management (2016), the global average time to fill any position is 42 days. What is more, to fill an engineering role the average is 59 days.
- The research presented by Statista in March 2019, presents similar data: to fill the position in the IT industry we need about 42 days, globally.
What about Europe? Workable compares the average time to fill various positions in the US, UK, rest of Europe, and the rest of the world:
Well, the data differs depending on the research. However, you can assume that the hiring process will take at least a month, and probably even around 2.
But, remember about the period of notice. It often takes 3 months before developers leave their previous companies (although this period varies depending on a region and a developer’s contract).
Why does it take so long to find a good employee? The “2019 State of the Workplace” report mentions top reasons organizations struggle to hire perfect candidates:
Costs of recruiting a new employee
According to the previously mentioned Glassdoor analysis, the average company in the United States spends about $4,000 to hire a new employee. According to the Human Capital Benchmarking Report, the average cost-per-hire in the United States is $4,129.
Recruitment costs can be related to:
- external/internal HR team (interview expenses, recruiting),
- job board fees’
- the cost of training and onboarding.
According to the State of Software Development 2020 report, hiring talents is the 2nd biggest challenge managers face. The lack of workforce is an industry-wide issue for a few years.
A word of advice: Recruitment takes time, which generates costs you may not expect. Will they pay off?
Yes, if you look for a developer for a longer, core project. If you need developers only for a limited time or your demand will be decreasing, efforts related to recruitment and office settlement may not pay off.
How long does it take to find an outsourcing provider? There’s no simple answer to this question.
Most often, companies research for a few best candidates. The selection stage can include at least a few calls with the best ones. If you’re highly motivated, it can take a week. Most often it takes a few. After all, the decision is crucial.
Also, while looking for an outsourcing provider the main resource you use is time. Hours spent on research and meetings are your price. There are no costs connected to workplace integration or training.
Although, you have to consider the cost of knowledge transfer.
When external developers join your team, you also need to spend some time on knowledge transfer before they start to work effectively (the cost of transition is around 2-3% of the overall cost of the project). Of course, this factor applies also to hiring.
In general, outsourcing means a quicker start and less money spent before you kick off the project.
What to consider:
- How long will the project last?
- For how long will you need the development team?
- Will your demand change with time?
- How quickly do you want to start?
It’s really tough to determine the winner here. Objectively outsourcing has more advantages. It’s easier and cheaper to find and contract a company than to hire developers in-house.
2. In-house vs outsourcing: costs comparison
Let’s dive into the most contentious topic, shall we?
The salary you need to pay to your developers depends on your location, industry, project you want them for, and of course – their experience.
Let’s look at some data.
Annual salaries of IT experts in the United States, according to Glassdoor, in 2020 shape as follows:
In the case of European developers, the average annual salaries (2019, Glassdoor) look like this:
What is more, there are employee-related costs you need to remember:
- employee training
- software licenses
- equipment, furniture, office supplies
- non-billable hours (organization, meetings, training, business trips, team integration events)
Based on research from Joe Hadzima, a senior lecturer from MIT, the true cost of a new in-house developer could be 2.7x the base salary because of employment taxes, benefits, office space, and equipment needed (data from the United States).
A word of advice: Hiring comes with many additional expenses. They will pay off with time. Spending a lot of money to equip the office or rent additional space for your team won’t pay off if your project will last a year and then your demand will decrease.
In outsourcing, you clearly know your total cost upfront. The hourly rate of a single developer varies from region to region.
So what is this true, total costs?
Toptal made a tool to calculate the true cost of an in-house employee and an outsourced one.
Based on their research, while the hourly rate for an internal employee per hour will double if you add up all the costs, the total cost of an hour of work of an outsourced developer will increase by about 20% of his base salary.
Existek presents the in-house vs outsourcing cost comparison like that:
However, the forgotten cost of outsourcing is connected to creating the contract (checking or co-creating a contract with an expert). You also have to pay the cost of server management.
What to consider:
- For how long do you want to hire an in-house team?
- Is this development project the core activity of your business?
The average total cost per hour of an outsourced developer is lower than the total cost per hour of an in-house developer.
Similarly to recruitment costs (but on a bigger scale) additional costs will pay off in time.
3. The talent pool
Finding specialists locally might be a challenge, especially when you don’t know the technology yourself, and thus have little to no idea how to verify their expertise. What is more, your location may come up crucial in that case.
Note: some technologies can be considered niche and may be unavailable locally.
Take a look at the map below. Did you notice how the number of developers varies from country to country?
Outsourcing becomes handy especially for locations:
- with a small number of developers,
- where big companies offering competitive conditions operate,
- and where developer’s wages are generally high.
In the case of outsourcing, when you need new competencies, you simply contract them for the desired scope or period. If a single agency doesn’t offer all of the skills you require, you can pick and choose people from various companies to build one team.
A word of advice: the fewer the technologies the company works with, the more likely it is that they have real experience and expertise.
They’ve probably used those technologies on multiple projects with different profiles, and they may have already built apps/features similar to yours.
What to consider:
- What’s your location and what are the chances you’ll find experienced talents to hire here?
- What are the average rates in your location?
- Are the technologies you want to use popular in your location or are there any niches?
Outsourcing grants access to a global pool of talents; developers working for software houses usually have more extensive experience. It might be hard to find experienced talents to hire in some locations.
4. Flexibility & speed
It can be difficult to start a new project quickly, while your in-house team is scheduled for a few months in advance.
What’s more, the flexibility of an in-house team is also limited.
You need time to hire and onboard people in order to increase the size of the team. And when the number of people becomes too high for a specific set of tasks, it would be wise to reduce it. But, as we all know it, downscaling an in-house team is painful, as you’re forced to dismiss your co-workers.
Thing to remember: flexibility of an in-house team and speed of in-house development start are limited.
In comparison, once you decide to start development and find an outsourcing agency, you simply contract them, and later can upscale and downscale the number of outsourced people. You can change that flexibly as if you were using an on-demand service.
Of course, it may take a while (sometimes you can make a change right away, other times it will take a few weeks), but it’s typically a faster and cheaper solution.
That’s the undoubtful advantage of outsourcing over hiring – when time is precious and you want to start fast, hiring will slow you down.
Also, developers often don’t join companies for short-term and unstable projects very eagerly.
What to consider:
- How fast do you want to start?
- Will you have any free resources or will you need to hire an entirely new team?
- Will your demand change in the nearest future?
Outsourcing wins undoubtedly in that case. It’s faster to set up an outsourced team than the inhouse one, it’s also easier to adjust team volume and development speed.
Let’s look for the most frictionless solution and find out which option promotes productivity.
Great language and culture fit
Hiring people locally means they will most likely communicate in your native language and have a similar culture. When you outsource (depending on where you outsource to), you’re more likely to cooperate with people who don’t speak your native language and have different customs.
If English is your native language, or you feel completely comfortable speaking it, you’re lucky. Most reputable providers are fluent in English and you won’t find it problematic. However, their culture may be far different from yours.
Tips if you’d like to outsource:
- Communication is the key to success. Friction may cause unexpected problems.
- If you’re looking for an outsourcing partner, check their English fluency.
- Cultural differences may result in misunderstandings. It may be better to choose an outsourcing provider from a not-so-distant, culturally-similar location.
Also, in terms of internal culture, hiring allows you to find people who fit your company’s culture. With outsourcing, it should be the same. Note, that companies differ in terms of culture: shared values, goals, attitude, and best practices.
Remember about that while looking for your perfect match.
What to consider:
- Are you comfortable while communicating in English?
- Would it be a problem for you to communicate only in that language?
- How unique is your culture?
- Do you spot any major differences between particular countries and yours?
There are rarely any noticeable language or cultural differences within an in-house team. Finding an outsourcing partner who provides English fluency and cultural understanding is more challenging.
Prone to de-focusing
One of the main reasons companies stick to in-house development is the fear of communicating with and managing remote teams.
How is communication different when we talk about in-house vs outsourcing?
Talking face-to-face is always easier and smoother. When your developers are in the office, you can talk to them at any time. It’s easy to micromanage if you want.
However, this form of communication is more prone to off-topic chit-chat. It can be de-focusing, might distract people, make them less productive. On the other hand, it’s easier to build relations between colleagues, as well as between you and the team.
When working with an outsourced team, you typically communicate online. Online communication, in general, generates more issues. Although, the coronavirus crisis forced almost every one of us to learn how to cooperate remotely. In most cases, it comes down to proper tools and discipline.
Key take-away: talking face-to-face is easier, but more prone to de-focusing.
There are plenty of online communicators on the market and everyone can pick the solution they find most fitting. But it’s still harder to build natural, personal relationships between team members.
On the other hand, the advantage of talking online is increased productivity. Coworkers communicating online in most cases won’t call each other specifically to talk about things unrelated to their work.
Although your outsourced development team will most likely work in their office, so the problems with defocusing will be applicable to them, too.
Again, it all comes down to the quality of the team and the level of their engagement.
What to consider:
- Are face-to-face interactions essential to you?
- How do you feel about remote cooperation and online communication?
- Would you like to micromanage the team?
- What’s more important for you: maximizing productivity or keeping close, friendly relations within the team?
If you want close relations and a natural atmosphere, in-house will be better. If your focus is on productivity, outsourcing will be a good fit.
6. Process management
By that, I understand team management and workflow organization.
You are the caretaker
When you hire people in-house, your responsibilities don’t end at hiring. You need to:
- onboard them,
- train them,
- introduce them to the company’s values and culture,
- define their responsibilities,
- answer their needs,
- keep them happy and occupied.
You’re the manager and they look up to you.
However, this effort comes with a reward. If you take care of your team well, it will be loyal and will treat your project as its own, and do what it can to help it succeed.
When you outsource, the external team becomes your partner, it’s their job to get on board quickly. Their responsibilities were defined upfront, their direct employers keep them happy and their needs satisfied. And it’s their task to help you, so in most cases, they will self-organize and be proactive. Holding their hands every step of the way won’t be necessary.
It’s less likely that outsourced developers will treat your project as their own, and get as involved as in-house employees. Although it depends on the potential partner and your relation.
What to consider:
- Employees require more attention and management from you. You need time and resources for that.
- Finding a trustworthy, reliable, and engaged outsourcing partner is possible but it will require time and effort.
Although employees require more attention, they usually are more loyal and personally involved in the project.
Time zones can bite
Working from one place/time zone has surefire advantages. Your employees are available at the same time as you. They get up, start work, drink coffee, eat lunch, and finish their work at hours similar to yours.
In the case of outsourcing, it depends. You can work with a foreign company and still operate in similar hours, but you can also deal with a 10-hour time difference and operate completely unsynchronised.
Does that mean you’re destined to fail?
Of course not. It’s your software provider’s job to run procedures that will ease cooperation. What’s important to note is that you don’t need to communicate all the time to get great results.
A word of advice: While dealing with large time zone differences, the proven way to maintain efficient workflow is to set up regular meetings at times most suitable for both parties.
The goal is to gather all the necessary information about the task and requirements. Then, your outsourced development team will be able to basically get the job done while you will be sleeping.
Remember that not all companies have the same approach, and working with some might be problematic.
A word of advice: Ask your potential partner how they organize workflow with clients from different time zones. How will they do it with you? Details are crucial.
What to consider:
- Would it be ok for you to cooperate in different time zones? The work may be done while you sleep, but you won’t get answers immediately.
- Are you able to set it all up with the company from a different time zone?
There are no time zone differences, and communication is smoother.
Let’s talk about security for a moment.
When hiring employees, most companies sign contracts and agreements to stop people from giving sensitive information away. They usually include annotations about high financial penalties.
The procedure is pretty similar when starting cooperation with an outsourcing company. Usually, the scope of the agreement is wider and penalties even higher.
What about being deceived or scammed?
Both individuals and companies can be dishonest about their skills and experience. Triple checking your potential employee or partner will protect you from that.
What about stealing intellectual property or money?
It’s easier to get away with this kind of fraud when you’re just one individual. Companies can’t disappear as easily, have the well-being of dozens of people at stake, and are usually easier to hold accountable.
Remember: both individuals and companies can lie about skills or experience. Always triple check your potential employee or partner.
What to consider:
- There’s no perfect solution here. You need to protect yourself in both cases.
- Objectively the risk is similar.
Both solutions come with a certain risk.
8. Business focus
I hesitated to include this part earlier in the article, as it may not be relevant for everyone. However, if software development isn’t a part of your core business, read on.
So here’s the first thing you should consider when thinking about hiring developers in-house:
Will your business benefit from building an in-house team?
If building software isn’t a core of your business, it might become an unnecessary burden.
Building a software development department in your company is like building a company inside a company. It’s arduous and time-consuming and might distract you from what’s really important in your company.
Always consider the potential gains and losses.
And the winner is…
There’s no black-and-white answer to this, as I said in the beginning.
In-house development teams may have a full and exact understanding of your project, values, and culture, but may also lack specific skills in unexpected situations. It may be harder to find talents and start the project quickly.
Meanwhile, a software agency you outsource to may work in a different time zone and speak a different language. You will communicate with them remotely.
However, they will provide valuable expertise in addressing current needs, be more flexible and cost-effective. You will get access to experienced talents even in niche technologies and start the project quickly.
What’s my advice?
Consider hiring people in-house if:
- Software development is the core of your business
- Close relations between team members are important to you
- You foresee a stable level of work and task loads
- There are plenty of developers in your area
- You have a large budget
- You’re not in a rush
Consider contracting an external provider if:
- Software development isn’t the core of your business
- Your workload is unpredictable or fluctuates a lot
- It’s difficult to find developers in your area
- You’re looking for expertise in the field
- You have a limited budget
- Speed is key
- “Global Software Development Rates 2020” by Existek
- “2020 Guide to Global Outsourcing Rates” by Accelerance
- “Software Development Trends 2020: Latest Research and Data” by CodingSans
- “2016 Human Capital Benchmarking Report” by SHRM
- “2019 State of the Workplace” by SHRM
- “The New Talent Landscape: Recruiting Difficulty and Skills Shortages” by SHRM
- “The Real Cost of Outsourcing” by OSF Global Services
- “Digital Transformation Is the Goal, It Outsourcing Is a Strategic Means” by REALDOLMEN
- “The Ultimate Guide to Hiring Software Developers” by STX Next
This article is a part of Handbook:The Complete Guide to Software Development Outsourcing
Don't miss new chapters.
We'll be adding new in-depth content to this handbook very soon. Get it straight to your inbox.
The Complete Guide to Software Development OutsourcingFollow handbook