The biggest problem with "doing it all" is that this only works in relatively small companies. As companies get larger and larger they start segregating the work. IT (i.e. maintenance, installation/etc of the company network and computers) is seen as being totally separate from development and it is this "IT" that gets outsourced. HR, Benefits, all gets outsourced.
The REAL problem is that companies simply do NOT realize that there are substantial benefits to be had from having the people who DESIGN the software to be the same OR VERY CLOSE TO the people who WRITE it. Writing specs that are interpreted by people in India is a recipe for disaster. I have personally seen this fail multiple times, however, the "manager" who started the project had since been promoted for "saving" so much money and the fact that the project went over budget (even over the budget we had when all development was still in the US) gets buried so no one sees it.
This is the reality of business - it's screw everyone else before they can screw you. Pure capitalism at it's finest...
Keep Up with TechRepublic