We always have to do compromises designing these things. Either we don't have the talents, we disagree on the methods, we ignored a chunk of the problem, we don't have the ressources, we deliberately degrade to please the senders of a letter-we-cant-talk-about... I prefer the approach where we solve problems incrementaly as we discover them because in the long term it addresses all of those shortcomings eventually.