This article by Jeff Patton explains two easy ways to successfully develop software. So simple you can't fail.
Two secrets to success in software development are:
1. Start sooner
2. Build less software
This is sadly simple advice.
Agile development does try to short-circuit elongated research and design phases in favor of beginning sooner and continuing active research and design throughout the development cycle.
Unfortunately reality doesn't usually allow for this well maybe point number two.