mcdonalds had to invest a lot in systems to normalise the burger production process in order to widen their hiring pool sufficiently so they can pay people $5 an hour to make burgers. the same is possible with programming, especially when coding becomes as common as reading

then if 3 of them don't succeed, you've still got 6/9 of the work done and you can get 3 of your guys that did do the work, to complete those three units. so you lose a little schedule, but it's far less 'binary' in terms of the way it fails

some percentage of the time, the dev will have gotten it wrong, but that's okay. your tests aren't there to stop all bugs, they're just there to reduce the cost of qa. qa is responsible for finding bugs

tests are automated, and test for regressions. when a developer completes work and before pushing to the master repo, they can run tests. if something breaks, they can fix it right away. this incurs the minimum cost

isaacs: when you're ready to do some sort of release, you *should* also do QA - that means using your application. outsourcing has a dramatic effect on the ecomonics of this. the job of QA is to catch bugs. this is the most expensive way to fix bugs