I've done outsourced IT work for a bunch of small companies. What I've seen so often was something like "we had a very talented programming intern who built this whole thing and then (went back to college | got a new job | accidentally deleted the codebase). So this time we went with an agency, but they called all the code garbage and said we need a complete re-write so now we have two systems we're moving between".