Working for a while in a very small team, outsourcing has been discussed a lot.
What stopped us every time was the coding part.
Imagine having perfect business requirements, and preparing perfect acceptance tests. Once your feature is delivered you safely ship, and after a week or two come up with improvements.
You prepare to redo the cycle, except your outsourcing firm is busy and you need to ask elsewhere. They come up for twice the expected price and want to rewrite half of the logic. From there, it will basically cost more and more each time to make the feature evolve, as arguably it will have become complex and touched by many hands.
A solution to that is to keep a stable outsourced team. Except it’s not actually stable, people come and go and quality vary. Either way you keep someone on your team busy making sure you don’t get screwed. More often than not, that person has coding skills, that could be used to actually clean code the feature instead.
Basically, outsourcing only made sense if we had no way to hire more at any reasonable price, or for one-shot project with no future behind.
Why do you think that you can hire stable team in your country, but you can't do that in a distant country? Seems that problem roots in those "outsourcing companies". Avoid those companies then. Hire directly.
Setting up a payroll in a different country is a lot more effort than what most companies want. You can do consulting contracts instead, but it then becomes harder to find people who want long term contracts for single clients (those people need a solid reason to not choose a local company or a bigger global company that has a full payroll in their countries). Not considering you have to do the hiring in the first place.
It’s not intractable, but we wouldn’t have been hiring full remote teams of 10 or 20 people so the effort doesn’t scale much, and the price difference really isn’t worth the hassle.
PS: looking back at the last 2 years, many employees have looked at moving long term to another country while keeping their current jobs. I’m pretty sure even in these cases (= established relationship, proven skillset etc.) most companies bailed on dealing with the international ongoing paperwork.
Difference between 10x $50k/year developers and 10x $150k/year developers is $1m/year. How much money would a company need to actually do an effort? Billion? Are lawyers who can fill some papers that expensive?
Bearing in mind if we’re going for 3x cheaper we’re not getting people that are super competitive on the global market:
Your other costs are not just lawyers: you’ll often need near perfect task definitions and acceptance criteria. That takes time (=money) and it requires a degree of upfront knowledge of the system that is way higher than if you’re working with devs you’re interacting with 6 times a day.
You’ll often realize that you messed up the specs on some edge case or they messed the implementation, and you get a redo a full cycle for the correction. And all that could be opportunity cost as well for your PO dealing with that team.
That remote team also probably won’t have the same access to your production than your local team for many reasons, including legal ones.
You’ll also have to adjust for timezones, regular trips etc. You then factor in the stress on wether your staff wants to babysit a remote team.
All in all, it’s not as clear cut as just stacking salaries, except if you’re IBM or Accenture, where the result doesn’t really matter much and the above quagmire is your core competency.
PS: hiring a $150k/year remote team is another story, of course.
I think that is still a middle layer problem. A root layer problem would be "pay your developers enough they don't leave", but that in general is in conflict with business practices optimized to make as much profit as possible next quarter.
What stopped us every time was the coding part.
Imagine having perfect business requirements, and preparing perfect acceptance tests. Once your feature is delivered you safely ship, and after a week or two come up with improvements.
You prepare to redo the cycle, except your outsourcing firm is busy and you need to ask elsewhere. They come up for twice the expected price and want to rewrite half of the logic. From there, it will basically cost more and more each time to make the feature evolve, as arguably it will have become complex and touched by many hands.
A solution to that is to keep a stable outsourced team. Except it’s not actually stable, people come and go and quality vary. Either way you keep someone on your team busy making sure you don’t get screwed. More often than not, that person has coding skills, that could be used to actually clean code the feature instead.
Basically, outsourcing only made sense if we had no way to hire more at any reasonable price, or for one-shot project with no future behind.