As a recent user who switched to Android, my biggest disappointments were
1) that is wasn't as open as I thought it was and
2) that the basic user experience is lacking in basic functionality.
To elaborate on #1, I often criticized Apple while showing off features that I could only use on a jailbroken iOS device, which I blamed on their restrictive software ecosystem and direct interest in continuing an "upgrade cycle" with arbitrary restrictions. I often told interested people that Android devices could do those very same things without needing to be "hacked." The problem is, the two examples I used were:
SpringFlash + Activator to activate the LED Flash as a torch/flashlight by double-pressing the lock button (even on the lock-screen)
Numeric battery life indicator option disabled by settings app on perfectly capable devices after hardware ID check
I bought a Sony Ericsson Xperia PLAY 4G (R800at) phone with Android 2.3 Gingerbread and soon realized that there was no way to approximate SpringFlash + Activator without a custom ROM on an unlocked or hacked bootloader and that there was no numeric battery option in the base version and approximating it required rooting the phone to replace parts of the OS with customizations from another ODM's Android distro who did Google's work for them.
Both are "hacks" and both are less straight-forward than a typical iOS jailbreak. In fact, one didn't even need to JB to get numeric battery on an iPhone, iPhone 3G, iPod Touch, or iPod Touch 2G: You could enable it on a supported device and load the iTunes backup on the old device and your settings will follow. And, before anyone says anything about notification bar apps that approximate having a numeric battery indicator, any Android Market app doing that requires an active monitoring application that kills battery life and wastes screen real estate (no way to disable the other indicator), so it is not the same thing at all.
Now, to elaborate on #2, watch Mission Impossible IV: Ghost Protocol. They mention how much time they have left, set a count-down timer on their iPhone 4, and go about their business. I used the same feature daily for many small tasks. This BASIC FEATURE does not exist on Google's straight-up Android build. I used it CONSTANTLY. When I have 30 minutes to prepare for something, I have to go create and save an alarm set for the appropriate time to equal the time I have left. Not only does this take 10x longer, if I don't also go delete the last alarm I created for such a temporary thing, I will quickly have a screen full of old useless alarms to manage. You know what else I used daily that doesn't exist on the basic Android distro? Notes. I'm serious. It's missing FREAKING NOTES! There is no notepad. Nothing. You might as well email yourself. Granted, there are many options for both of these on the Android Market, but choosing one is equal to trusting one and that should not be something I need to do for BASIC functionality.
Despite HATING on Apple, I am actually tempted to bring an iPod Touch to work to compensate for my Android phone's lack of basic features. For this to even be a consideration, Google has failed. Yes, your [Insert Manufacturer] [Insert Device Name] may have a notes app or an alarm with a timer, but Google's BASIC platform does not include the functionality and, thus, neither my R800at nor my HP TouchPad running fancy-schmancy CyanogenMod 7 have the basic features of my iPod Touch. That. Is. FAIL.
Now, 1 and 2 aren't the only things. There's also out-right irresponsible and sloppy presentation of their own supporting products, like Google Voice integration. For example, iMessage and SMS GV Extensions on iOS, BBM on BlackBerry, Live Messenger on Windows Phone 7, etc have shown that integrating free messaging services with the native text/SMS on smart phones is not only a feature people are starting to expect, it it becoming an industry STANDARD. Now, I assumed all along that Google Voice could replace the native messaging app. Indeed: If I pick something that would take me to the native Messages app, I get prompted to select between it and Google Voice, but if I replace the app with it and set it as default, I get several problems:
I can't rename it to "SMS" or "Messaging" nor can I have it show only those without voicemail and call history
When someone texts my cell number directly, I can't reply from Google Voice without great effort involving determining the exact number it came from and responding to it from Google Voice
I can't send a message with a poor signal and have it sent later or marked, instead having it held hostage on a screen while it makes a futile attempt to connect to the Internet
Despite consumer expectations of proper free integration like the rest of the smartphone industry has moved to, the settings option to receive incoming messages/notifications "also through the Messages app" actually forwards them as billable SMS messages to your number without warning causing unexpected charges.
Now, I never used iMessage because I never upgraded my iOS device to iOS5, but SMS GV Extensions eliminated the first, second and third issue by integrating transparently with the native app.
The last one is infuriatingly sloppy and unique to Google. There is no way they would allow you to configure SMS forwarding online without telling you of potential fees and explaining that you will be responsible for charges. Also, forwarding them to your number is not the same thing at all as also receiving through the app. This is an inexcusably obvious distinction and heads should roll. I mean, I thought I found exactly the option I was looking for... exactly the option I EXPECTED to find, and even when CAREFULLY reading and determining that it could have meant nothing else, I find that it did mean exactly what I had ruled out. "No, they couldn't be that stupid." YES. THEY. CAN. Hello $30 texting bill for a guy who specifically used it to avoid paying for text messages. *grrrrr*
Now there is no visual voicemail standard for Android but that would be fine if I could use Google Voice properly with voicemail forwarding. Unfortunately, like SMS, which I already pointed out has no way to set up a GV app/icon/shortcut/widget that only presents SMS messages, there is no way to make a "voicemail" GV app/icon/shortcut/wodget. This makes it a poor substitute app for the native messaging and worsens the clusterF$!@# of having all your missed calls and texts messages littering your list of VMs and vice versa. There should be a widget for GV VVM and a widget for GV SMS and a way to make icons linking to them specifically, like Maps, Lattitude, Navigation, etc are all separate but integrated.
Speaking of Maps/Navigation integration with multi-tasking: WORST IMPLEMENTATION EVAR! Let me give you an example. I started driving to a Christmas dinner at my Boss' home on Christmas Eve without actually getting the address. I knew that the subdivision was off of a "Jodeco" road that was about an hour away and that he would get back to me with the actual address when I was about half way there. I started by pulling up Maps, letting GPS get a fix on my location, searching "Jodeco" and finding a "Jodeco Self-Service Gas Station" or something like that in the general area, calculated driving directions, and then tapped the little drop-down that takes me to the navigation app. I did not realize that it was a different app because it is presented the same way as other Maps options. Anyway, when he called with the actual address, I pulled over and carefully entered the address into Maps and generated driving directions almost exactly like before. Once again, I selected "Navigation" from the drop-down. It took me to the navigation app and I began following its instructions. Actually, I thought to check the destination address again but did not see any such option in the Navigation app. I expect it to be displayed front and center at all times. After poking around really quickly, I realized that I didn't have much time and would just have to trust that Maps handed off the address like it should have. Just to make sure that my digging through the Navigation for the destination address didn't change anything important, I actually calculated driving directions to the exact address in Maps and linked back to Navigation a second time (remember: Navigation acts like it's just another "view" within Maps and this is how I was treating it). Sure enough, I'm already late when I "arrive" at Jodeco Gas. #!%@!$#! This was actually VERY far away from my intended destination, and so I was very late upon arriving there. What's worse is that there was no easy way to kill the app and allow Maps to set the destination as it did the first time. It takes WAY too much effort to go through 50+ running apps and background processes to find it and kill it and even that requires knowing where to find the buried application management settings. For most people, it's probably easier just to reboot, especially when driving and being unable to legally poke around through the settings and such.
First of all, there should have been a very obvious app-switching GUI animation to make it clear that it switched to an already-running application. Second, it should have prompted even the first time to accept the destination address passed to it and it should specifically mention overriding it with a list of the two destinations when linked/passed to a second time. Instead, it doesn't even mention a thing about the parameters passed to it that it completely ignored just because it was already running. Despite user and application execution/interaction/management being the very basis of an operating system's function, this is as unrefined as I could possibly expect any OS application management to be. That means if fails at the primary functions of an OS, which is unforgivable.
Remember: I am a recently new Android user. My experience is from someone WILLINGLY leaving Apple to embrace Android. I am sticking with it, but mostly because there is no good alternative that works with my Sony Ericsson MBW-150 Bluetooth watch, Parrot SK4000 Motorcycle kit, and integrated game controls (huge classic gamer) and I am hoping ICS fixes a lot of my concerns. I come from the perspective of an iOS HATER, but even I have to admit where Android fails and iOS excels. Gingerbread seems like something I would not have released in 2008 if I were in charge of the project at Google and yet it was the very latest version for phones back when I got it in November (few months ago). That is truly a sad result for the effort and time invested in beating iOS.