I'm going to make a simple point. And because people that know me think I'm a "unfair-Google-aficionado-that-doesn't-see-how-evil-Google-is", I'm going to use Android as victim here.
Other OS? I'm not even taking into consideration old stuff like Symbian: is just too easy to trash it now-days (Qt is a whole different story though). <!--more-->
Android is great... for developersI was in Symbian and when the SDK and few details of Android were released, I saw straightaway how GOOD and EASY and WELL THOUGHT the Android development framework was.
The app Lifecycle is just "right" for Mobile, and suites multiple needs in a very elegant way. And, to do so, everything is wrapped into the Dalvik VM, making it also very rock-solid.
Android is geeky... too much
Android is too geeky. I have to admit it. As an example, take a look to the article just posted on the Android Developers Blog about the modifications to the Service API introduced in 2.0. In all the explanation and rationale of the article, one last bit bitted me in the face:
For most users, this new user interface should be a much more effective way to manage the background applications on their device than the existing "task killer" applications. In the vast majority of cases the reason for a slow running device is too many services trying to run. This prevents the system from being able to run any background processes (which speed up app switching), and ultimately can result in thrashing through the services when not even they can all be kept running. The Running Services UI is intended to provide very specific information about the services that are running, to help make a good decision about what should be stopped. It also does not use the API to force stop an application, which can unintentionally break applications in numerous ways.
Can you spot where the problem is here? Yes, exactly. Why the hell in the world a normal human being, a human being with a proper social life, that is still able to interpret technology as a commodity, and not as a life, should spend time thinking of "task killers", "background applications" and "managing apps". Is that much complex to realize that USERS DON'T WANT TO DEAL WITH THOSE CONCEPTS? And shouldn't neither.
Of course, as a developer, again, the Service management of Android is such a dream, and I believe that is possible to NEVER SHOW SUCH INFORMATIONS TO THE USER AT ALL. But you should see the UI of some Android apps for "explaining to the User that activating the Background notifications drains the battery": it's just so rationale-less.
That's why iPhone ruleZ: the User is in control of it, and it doesn't have to "understand" or "study" it to use it. Yes, people could still argue that the keyboard need "training", but in the last 3 years I saw SO MANY people turning from iPhone-haters to iPhone-lovers... that it's just being a pleasure feeling "that I was right" (yes, I admit it: I'm happy that I was right).
Apple never asks to the User to understand complex things. iPhone doesn't have background apps, and is still giving me a better overall performance than my latest gift Nexus One. And there is no Google that counts there: Usability is such powerful thing when you have it always in your pocket.
Ah, and by the way, my iPhone is still have a 3G. In the face of who talked of "fragmentation" when the 3GS was launched :-P .