First of all, it’s important to know the difference between outsourcing and outstaffing. Outstaffing is a form of remote collaboration with a hired developer or development team. They perform all tasks for your company, but are officially employed by another company (the development partner). The latter acts as an employer and is therefore responsible for wages, bonuses, equipment awarded to an employee. While you as a customer provide the developer with tasks and assignments.
In this form of service, the development partner is therefore responsible for hiring and maintaining a team that is entirely at your disposal. In fact, you hire your own external employees who are part of your own team. This external development team can be managed by your own people or by external managers.
In case of In-house hiring you’ll most probably have the developers on your own payroll, they’ll work at your office and you’ll provide tasks and assignments.