Еще немного диссонирую.
Почему-то программисты легко могут представить свою работу на расстоянии от работодателя.
Предполагается, что работодатель предоставит хорошо разжеванное ТЗ, прилично заплатит, да еще и сможет квалифицированно принять работу.
Но это значит, что со стороны работодателя для взаимодействия с удаленно работающим программистом должен быть целый штат квалифицированного "обслуживающего" персонала.
По крайней мере должен быть интегратор и владелец программного продукта. Который в свою очередь тоже не отказался бы удаленно работать.
Удаленный работник воспринимается мной, как работник (возможно, профессионал) с пониженной степенью лояльности и низким уровнем ответственности.
Это значит, что в случае возникновения форс-мажорной ситуации, такой работник с высокой степенью вероятности "отвалится".
Поэтому для работодателя на аутсорсинг становится рациональным отдать только ограниченный круг задач с низкими рисками.
Еще один аспект.
Сколько работодателей готовы отдать свой программный код целиком незнакомому разработчику?
Для такого действия должны быть веские основания, для работодателя это большой риск, особенно если продукт скрывает его конкурентные преимущества.
Если отдавать не все, а только часть, то возвращаемся к необходимости иметь локального специалиста высокой квалификации для интеграции всего продукта.
Кроме всего прочего должно быть просто физическое место, где складируются все наработки.
Это место кто-то должен администрировать, технически поддерживать в работоспособном состоянии.
Отдельный удаленный работник воспринимает себя как независимую часть чего-то (минимум лояльности и ответственности), а работодателю хотелось бы, чтобы он воспринимал себя как одну из частей в общем механизме организации (максимум лояльности и ответственности).
В настоящее время мы работаем с удаленными группами разработчиков, но именно с группами, а не отдельными программистами.
Это позволяет снизить некоторые риски, но не ликвидировать их полностью.