"If I'm busy testing every single edge case I can think of, who's doing the development?"<p>The edge cases <i>are</i> the development.  In my experience, the core functionality takes less than 10% of the time.  A good programmer should be able to crank out an algorithm in a couple days; the problem comes when that algorithm meets end users and they request features that are completely insane from an engineering perspective, yet necessary for user acceptance.