But alas, the sacrifices are frequently worse than the problem.
While it may be cheaper, someone located 12 time zones away who doesn't understand the internal customers you support or even speak your language is really hard to manage. And it is particularly hard to collect and share user community feedback when there are time zone, language and corporate culture differences between you and your outsourcer.
Most companies can't accurately measure the productivity and costs to develop internally. The real costs are more than just wages. Factor in project management fees and resource usage, DBA time (usually at off hours, which has other costs like stress and employee productivity associated with it), bug fixing and the increase in Q&A/testing, both with your outsourcer and your own acceptance testing.
Even costs like telephone and overseas shipping can be a factor. And with off-shore outsourcing, the development cost differential eventually evaporates as we've seen in manufacturing industries as they move from one country to another. Balance those total costs with resource drains like language barriers and end-user feedback integration, as well as flexibility on the project schedule and the end result can make the case for outsourcing much less attractive.
So what is a budget-challenged IT director to do?
The alternative is to keep the work in-house, let software tools do a lot of the heavy lifting for the routine infrastructure programming, and focus developer resources on the unique and career-building code that gives the application personality and dimension. This solution is modern code generation.