One very old and yet hot question about the product release cycle (or project implementation cycle) is "when should we release the product?".
It reminds me of the story of Netscape Navigator. Though Netscape got great market share at the beginning, its market share has dropped greatly since Netscape 3. Of course the emergence of IE had a great impact, but in the book Coders at Work, the author mentions that Netscape just wasted too much time in the release of Netscape 3, and missed chance to hold the market share. It should be released, even if it's not fully ready.
Nowadays, if the someone wants to spend two years to build an incredibly good mobile app, it will be outdated as soon as it's released. The technology and the toolbox changes every single day. For example, the effort you put into optimizing or working around the system and its limitations during app developement may be automatically solved by a new version of the SDK.
That’s why instead of perfecting the app, we recommend reducing the scope of the app and releasing it early. You can always improve your app afterward through updates.