Good question. I think all important software projects should be done inhouse or with a trusted vendor. Failure for software projects is a subjective term. I think something like 90% slip dates. Some projects are doomed from the start. An executive wants it done, or some company is willing to pay a vendor, the reason being internal political reasons even though they know it's not going to work.. I imagine many of these are offshored. If a project is going to fail you want it done at the cheapest price, right?