> Therefore a lot of undocumented knowledge gets lost which inevitably causes problems when doing maintenance or solving outages. One week you are working with a brilliant person, the next week they are gone.
I had the same experience with outsourced work to India. Like every place, they have many "rockstar" developers, but these guys do not stay in the same company for too long, an even if they do they don't stay in the same hands-on job for too long and as soon as they move up they will not code anymore themselves, because it is below their pay grade. In India particularly hierarchy plays a huge part in culture and once someone is at a level where coding is seen as "too low" there is nothing you can do to get them continue their job. A company I once worked for even offered a pay rise to their Indian rockstar devs, but wanted them to keep coding and they rather refused the pay rise than doing the "low" work again.
> Thirdly, the sales people at many outsourcing companies are brilliant. They promise the world, then for the first three months keep the clients happy. Then there is always a slump in service / performance as the "dream team", the sales people use to wow the clients move onto the next company they are trying to woo.
Same experience.
I think it's better to hire developers directly and employ them rather than hire developers through a big agency. You won't avoid the staff turnover overall, but it will happen at a much slower frequency.