I’ll be discussing specifically in the context of knowledge workers who “think for a living” such as software developers, lawyers, business analysts and the likes. I will use software developers as an example, but it applies to other knowledge workers too.
Outsourcing software development can be a good thing for the business, especially if the area is not within the business’s main area of expertise or requiring too few developers to gather enough brain trust to keep the level of expertise.
If software development is not within the business area of expertise then the area will often be neglected leading to low morale and lack of commitment. It is not seen as an important part of the business, but necessary evil. The developers will not have the best tools possible or access to new knowledge like inspiration at conferences. This is a downwards spiral of developer skills and will lead to failure eventually.
If the business only has a small number of developers with similar skill set, then the ability to share knowledge is impaired. Developers that have no one or less than a handful of coworkers to share knowledge with, will almost never be very skilled. Knowledge workers require peers to stay knowledgeable.
If both scenarios above are combined, then the problems become very evident and will never lead to success.
In either case outsourcing makes sense and will in most cases provide business value.
Outsourcing to low-cost countries aka offshoring complicates things even further and should not be considered before thorough scrutiny of your business. Does the business employ the required competency, are the procedures in place and is the organization mature enough? Due to the magnitude required by preliminary analysis, offshoring only makes economic sense for larger scale operations and is not viable for smaller businesses.
Update Feb 28. 2013: A great blog post Is Offshoring Less Expensive? Exposing Another Management Myth