Inhouse development vs outsourcing

Choose the best format for your business
If you decide to launch a web service or application, but you do not have developers, then you will inevitably face the question: to hire them on staff or find an outsourcing partner.
Challenges of hiring an inhouse development team
There are several complexities, mostly affecting small and medium-sized businesses.
  • It takes a long time to close a vacancy. It is up to 3-4 months. If you have the task to gather a team for a project with three developers in three months, it is impossible to find that many people you need in such a short time.

    You also can't assemble a team for a short project. For a project that lasts 4-12 months, good specialists will not go, they are interested in stable and long-term work. Unless, of course, you are a startup and pay a salary four times higher than the market.
  • Lack of competent specialists. You need them to evaluate new employees. If a company has no experience in development but wants to gather a team of developers, you need at least one good specialist who will evaluate the candidates. Finding one and correctly assessing his level at the interview if you don't understand development is like winning the lottery.

    Also, proper management of employees is necessary. It is not enough to assemble an inhouse team: you need a manager or a team leader who can manage it competently so as not to lose efficiency.
  • Hidden costs. Your own team means not only salaries, but also sick pay, vacations, insurance, pension contributions, taxes. Each employee must be given a laptop, a monitor, a table, and a chair. Don't forget the space to put it all in.

    Additional staffing burden. This problem occurs in large companies, too, when an unplanned project is launched or when there is not enough capacity for the current one. It is necessary to hire new specialists, but the staffing load is agreed for a year in advance, so it's not possible to get new full-time employees in the middle of the year.
  • Team responsibility. At the beginning of a project, the key risk lies in the product itself. Does the world need a social network for artists? Or a new cab order aggregator? You won't know until you make the product and try it out. In the case of outsourced development, if it doesn't work out, the team will simply switch to another project. By assembling your own team, you partially take responsibility for the future of your teammates. So when a project doesn't rocket, not only you suffer, but also the team that lost the job.
  • Human factor. It may affect the timing of project completion and quality. For example, if the project must be implemented within six months, and you have gathered a team for it, downtime can occur during the work process: someone gets sick, changes his mind, quits. Because of this, deadlines can be disrupted. With an outsourced external team there will be no such problems: if someone falls ill or refuses to work, he will be replaced by a new one.
  • Distractions when communicating in person. Off-line communication is smoother and more accessible, but it can be detrimental to productivity. There's room for non-business conversations near the coffee machine. There are more distractions in the form of colleagues talking around. That being said, you are responsible for the team's bottom line, not the outsourcer.
But of course, if you have gathered an appropriate inhouse team you receive the following benefits:

  • Internal expertise. During the development of the application, the team gets its own knocks but also builds up its own expertise. This works on the principle of a flywheel. At first, it takes a gigantic effort to move the flywheel. But after it has been moved, it builds up potential and gives the growth. It takes 3 months for the team to get used to each other and the product. And then when the product is up and running, the team is already "up and running" and it takes much less time to refine than before.
  • Quick bugfixes after release. A month after release, when roughly 1000 users arrive, bugs may appear. The outsourced team will be busy with another project by then. And even taking into account the flexibility of outsourced development, you can't get a new outsourced developer on board any faster than 2-3 days. All this time the application or site will be idle. When you already have your own team after the release, it's much easier to come running with the words "our site is down" and the guys will immediately get to work.
  • Team involvement. There are more personal points of contact with the internal team, no matter how you look at it: corporate events, team building, etc. This improves corporate culture and team cohesion, which has a direct impact on teammate mood and engagement.
  • Transparent communication. Communicating offline with people who speak your native language is simple and straightforward. If necessary, you can approach a colleague and quickly discuss working points. There is no need to waste time on docking schedules.
When do you need to outsource development?

1) When you do not have enough specialists. That is, your employees are fully loaded, but the project is growing, and you need to hire additional staff. Or when you launch new projects, you need new specialists, but it is impossible to hire them quickly. Hiring one developer can take 3-4 months, sometimes it is too long.
2) When there is a lack of expertise within the company. In this case it is better to resort to outsourcing, so as not to experiment and not to pick up on your own mistakes. For example, you start a new project, but it is on a different technology stack. Or your project has grown so much that it has become very high-loaded, you need to redesign the site, and your programmers did not work with such large-scale tasks.
3) When web development in your company is a non-core service. This mostly applies to small businesses. For example, the company is engaged in the design, promotion and advertising of websites. Here it is easier to outsource development than to hire programmers on staff.
startup robot
The advantages of working with an outsourcing company:

  • The cost is 2 times lower. Hourly rates of US and Eastern European/Balkans developers differ almost 2.5 times. The average hourly rate for a senior developer in the U.S. is $78-125, and in Eastern Europe or the Balkans, it is $30-59.

  • The outsourcing company takes full responsibility for the development (if you need to change the developer, they do it, not you). Maintaining a busy schedule can lead to setbacks, burnout, and costly mistakes. By outsourcing a project, the client knows that the company will keep them informed of the process on a regular basis, recording the results of the work on a daily basis. The outsourcing company will take care of everything from setting deadlines for developers to assigning tasks to developers.

  • There are people within the company who are familiar with the necessary technology, and it is always possible to consult with colleagues and find out how best to solve a particular problem. An outsourcing company already knows the strengths and weaknesses of its employees and distributes projects with these points in mind. Since the employees know each other for more than a day, the mutual understanding within the team is at a high level. The absence of organizational and communication problems is necessary for the timely completion of the project and effective cooperation.

  • The money/risk ratio; very often outsourcing companies offer a Middle developer (who does 70% of the application), but at some points, he needs help from a Senior. In such an option, the company's check for services can be much smaller. (For example, Middle will cost $4000 and a supervisor from the company another $1000.) Whereas a cool inhouse developer will cost $6000-6500 per month. So you can lose this way not only on money but also on risk (if the developer is supervised by someone experienced, the risks that he will do something wrong are reduced);

  • Outsourcing reduces risks. If a company is not sure about a project but wants to test an idea, it's better to outsource it. In this case, hiring your own team is too risky. The outsourcing team will provide a working prototype in time for the client to test the idea and the mechanism.

  • There are no resource "drawdowns" on the project. Outsourced development is a more flexible approach in terms of team composition. For example, a teamlead, backender, frontender and QA worked on a project for 3 months. After the release, such a large team is no longer needed. A backender and frontender for 20 hours and QA for 5 hours per week are enough. Outsourced development has that option. And if the guys are on staff, you have to look for additional tasks or pay for part-time specialists.

  • Outsourcing companies value their reputation, they have other clients and references, and the company will not leave you for no reason;

  • you can take a break (to look for investments, and so on).
The risks of outsourcing development:

  • Low price ≠ high quality. There are no miracles: choosing an outsourcer for $20/hour is naive to expect $70 results. You have to pay for a quality product. In order to avoid getting a badly written code at the end, you should turn to companies in the middle of the price fork or slightly higher.
  • Not the best stack, but what it is. An outsourcer may not offer the most appropriate tools, but what he has experience with. And here it is important that the guys offering outsourced development can give an objective assessment of whether they can really help or not.
  • The contractor doesn't understand the complexity of the task. Young outsourcing companies lack experience and want to close the deal quickly, following the logic: "sell it now, we'll figure it out later". This is an inefficient process because it is difficult to predict the timing and create expectations for the client. This is why we offer analytics and prototyping services for complex projects where the initial information is lacking and the business requirements for the application are unclear. Then the customer can see how the application will work and what kind of product he needs. And we can give an accurate estimate for development.
  • Barriers: language, online, time zones. You are very lucky if the outsourcer speaks the same language as you and works in the same time zone. But, more often than not, the situation is different: you have to communicate in English and there is a time difference.
  • Quite often, the outsourcing company does not get as deep into your project. Yes, they will understand the task and start writing the code, fulfilling your wishes and instructions. But the product approach will not be applied. They do not need to understand your product comprehensively and fully. At HF-Solution we pay special attention to product management because we understand how important it is not just to write a good code, but to do it with maximum benefit for your product and company.
We share our expertise in this area in the following articles:
Three formats of work in the development outsourcing market.
Time & Material model
Time & Material
T&M (time and material) - payment for actual time spent. Everything is transparent and clear for a client. The drawback is that the outsourcer can only give an approximate estimate of the work cost. In fact, it may take less or more time to complete the task than it was estimated at the beginning and, correspondingly, the cost varies up or down.

The advantage of T&M is that the cost of outsourcing is cheaper compared to fixed. But it can be that the manager is too lazy to draw up the requirements specification for the developer, he explains the task in words, so the specialist's time is not spent on development but on conversations with the manager.
Fix Price cooperation model
Fix Price
Fixed - when tasks have a fixed cost. You outsource the task, and the outsourcers calculate the price before the work begins. The advantage is that the cost is known right away, it cannot change. As a rule, if the outsourcer does not calculate it correctly, or take something into account, this is his problem.

Minus of the fixed-approach - the cost includes risks, so it is usually 10-30% higher than the hourly rate. Also before the start of work, time is spent on evaluation: the task is divided into subtasks, the responsible experts determine how long it will take, what kind of expertise is needed, then managers estimate the cost. If you send tasks to outsourcers in a stack of 20-30, the time losses can be large.

There is also no way to choose the level of specialist, his or her qualifications are determined by the outsourcer. This is not a drawback, just a little nuance, because in this case, you pay for the result, no matter who will do the task.
Dedicated Team cooperation model illustration
Outstaff or Dedicated Team
Outstaff - a complete buyout of specialists. A programmer of a certain level (junior, middle, senior) from an outstaffer company starts to work as a staff unit of the customer. If a purchased employee falls ill or quits, the company is obliged to find a replacement, usually within a very short period of time - 1-5 days, in order to avoid downtime.

The disadvantage may be that if you bought a middle, and for some tasks you need a senior, you will have to hire an additional specialist. It is also desirable for a manager or team leader to set tasks because it is not enough to have a programmer - he must be properly managed, it must be done by a person who knows how to set tasks and monitor their implementation.

In addition, there may be no testing. Of course, the developer will check for himself, but it is better when there is an additional check, so as not to miss errors. This requires a tester or manager.
startup robot
The main stages of integrating a development team into a client’s business:

1. Assembling the team depending on the client's project.
2. Making a team integration map, a plan for integrating the team into the client's business processes.
3. Defining KPIs and deadlines for the team.
4. Communication decisions - there are different CRM systems and task managers, it is important that the integrated team works in the same way as all the employees of the client.

The good news is that now you can outsource everything. There has never been a better time to collaborate remotely with partners. Today, we all work from remote offices, where outsourced employees can be as connected as any other team member. Communication with a good IT-team does not need additional knowledge - they themselves will tell you about the process of work and explain any questions on every stage of development.

Need consultation on your project?