Others may refer to this problem as the Make or Buy dilemma.
Assigning the work to a third party is your 'Buy' option, and finding staff and doing it in -house is your 'Make' option.
- You get what you want and it's done the way you want it
- You gain knowledge about the internal workings of the product
- You won't need to pay for features or development not required
- Time, cost, effort: you might have the budget but it's going to cost you time in finding the right people and managing them
- You might not be able to find the right people with the desired level of experience and ability
- You might not have enough internal capability to support the development and ongoing maintenance of the work
- Possibly reduced time to implement, if the 3rd party has done something similar before and has a base product/system/process to work from
- Possibly lower overall acquisition costs: less project management, human resource, and other 'overhead' costs that can come with hiring people
- Higher application quality (hopefully the bugs have already been ironed out on previous work)
- Reduced need for internal resources: so you can concentrate on your core business
- Infusion of external expertise
- Time needed to find and assess the 3rd party you want to work with
- Initial and ongoing dependencies on the 3rd party
- Risks due to lack of package knowledge of what is being handed to you
- Risks due to process changes (either you or them)
- Customizing of certain features may be difficult or impossible if the 3rd party is bringing in their platform
- Possible communication, cultural or language difficulties if outsourcing to foreigners
- Possible legal issues such as copyrights and IP ownership
One of the pieces of advice we follow, and teach our own customers is to outsource anything not in your core business that you can't make a profit on. Some people go further and suggest outsource everything outside your core business.