Have been playing around with various applications (apps) on phones. One big issue that I see is this. The app developer needs to ensure that the user can easily understand the model of the app.
For example; in some screens you have the back button and you go back to the previous screen you came from. in other screens there is no back button and the user needs to remember the circuitous route to follow to go back to the previous screen. This makes the user cringe at using the app and this is a debit for the app. To make up for this debit, the app needs to have other credits. Else the utility to the user is not high and the end result if not pretty for the usage of the app.
Of course, I guess one reason why you violate the above principle of "user should know the model" is when you are developing games.