I believe it's impossible to succeed without failing.
Not anymore.
OP overlooks the key to avoiding failure: release early and often. Customer feedback during development, not afterwards, is the rudder that keeps your project from going down the abyss. Unless you're an ocean liner. Like Microsoft.