I like the Android OS and many of the Android phones. I have five in my house, and I use them all. I think it's a good OS and there lots of good apps for free or at a low price. In fact, there are a number of apps that are free for which I would gladly pay. Some of my top picks are listed in "13 Must Have Android Apps For IT."
Like all OS's, Android has its issues. However, the biggest issue Android has is Google. I don't think the search giant is quite in tune with what it takes to successfully run a commercial, consumer driven product like Google, and I think Google is going to kill Android. It's death by a 1000 cuts. There isn't any single problem that is going to kill Android. It's a bunch of little ones that collectively add up to difficult user experience. Here's a few.
Want to both user experience? Don't let the home screen or app drawer rotate to landscape mode. Why would anyone want to rotate the home screen to landscape. I like holding my phone in landscape and, hitting the app drawer or the dialer and reading vertical. Thankfully I am not left handed, but if you are, then no left hand orientation for you, either. But what am I complaining about? Screen rotation on ICS is so slow that I find myself shaking my phone in a vain attempt to get it to rotate.
Come on. I know the screen can rotate to landscape. It works on alternative home screens, after market ROM's, and even my Asus Transformer Prime. The screen won't rotate on handsets running stock Android.
Keep those users on their toes. Randomly move UI components around, end users like that a lot. The upper image is Google's Gmail app in Portrait mode (I edited out the middle to shorten the image). Notice the menu that runs along the bottom? Turn the phone sideways (lower image) and the menu moves to the header bar.
The menu placement isn't consistent even among Google's own apps. On Play Store and Google Docs, the menu is at the top while on Contacts and Voice, the menu is at the bottom in portrait and the top in landscape, like Gmail. On other apps, the menu moves around as well. I am constantly looking for the menu! Gmail takes menu's ridiculousness to new levels with a menu for the app and a menu for each email. Ugh.
Make it really hard to let users tell you about problems. Then when they do, ignore them (or at least seem to). If you want to report a bug on Android, how do you do it? Go ahead, try. I'll wait. Most likely you didn't find it. Try searching for "Android Issues" on Google, that will take you to the Issues list.
There's a lot of them. The image above shows 16206 of issues marked as defects. The theory is that you can star an issue to cast your vote and supposedly the most starred issues get addressed first. Only 432 are marked "Assigned"--meaning someone is working on it leaving 15774 in limbo.
While we are on the topic of support, you might be able to find a phone number to call Google support directly. Hint: the number is here. You'll get a call back from a very nice person who likely won't be able to help you and will have to escalate. I think escalate in Google's dictionary is a euphemism for black hole.
Two emails later and no response. I will be old(er) and grey(er) before I hear back.
So what was that support email about? At some point, probably when Google Play Store went moved to version 3.5.15, the list of purchased but not installed apps disappeared from under the list of Installed apps (left).
Now I can only find them in the list of All apps (right), which includes apps installed onto any Android device I own, which is three. I have a Droid, Galaxy Nexus, and Asus Transformer Prime. The list of all apps is also not sorted or sortable, so I have to scroll through hoping I see the one I want. That is not helpful.
I thought it might have been a bug since I was only seeing it on one device, but now I am seeing it on others. If you are so inclined, go star this issue.
Can I get a consistent UI? Anyone? Granted, Google isn't totally to blame for inconsistent Android UI's. OEM's like Motorola, Samsung, and HTC do customize the Android UI, or in the case of HTC, re-skin it. The openness of Android is a blessing and a curse. Without a consistent UI, it is very hard for developers, users, and organizations, to support multiple devices.
Just take a look at the software and hardware buttons on these home screens. Some of 3 buttons. Some have 4 buttons. I think the symbols were inspired by the Mayan calendar. Worse, the hardware button functions can be re-assigned functions by developers. Isn't that just fun when some well-meaning but woefully misguided developer decides to change how the back button acts for just their app.
Google does have developer guidelines, which they revamped in the last few months, but Google doesn't enforce them. There is some hope. OEM's and Carriers that want to have the Android Market, I mean Play Store, on their devices must support the stock UI. That should save developers from have to write custom layouts for each UI, but it's still a long way from consistent.
Android is not fragmented. Android has a version problem but that more accurate statement doesn't sound as cool nor as dramatic. There is a big difference between fragmentation and versions. If you are stuck on an older version of Android, you have no shortage of places to point your finger like the OEM that made the device, the carrier that blesses updates, or even Google that issues them.
What Google did between versions, however, was pretty bad. Going from 2.x to 3.x and then 4.x, they made some significant changes to Android and notably the UI components. Many apps from earlier versions would run on later versions, but wouldn't look right. Apps written today for ICS require special handling to support previous versions. I haven't dove into multiple version support yet, but it's a pretty nasty mess. Google did create a compatibility API/SDK components which abstracts some of the messiness of supporting many different versions, but it isn't without its quirks, and few developers have re-written their code to support it.
In general, developing for Android is harder than it should be and supporting all of those versions it difficult. If you are developing an app, do you write to the 2.x train which is old or the 3.x or 4.x? Wait, 5.x is coming.
The application stack is Android's method for letting users switch from application to application with ease. It's rather simple in concept. Applications are added to the stack and never fully quit. The apps go through a lifecycle from launch through being in the foreground and background. The idea is that the apps should save state so you can return to them and continue working. It's great in theory but less effective in practice, even with Google's own apps. The responsibility for maintaining state is split between Android which will carry out lifecycle functions like saving and restoring applications, and developers who need to write code to actually save and restore state.
The problem comes in when you are in a task, leave and do a few things, and then return. For example, I could be reading a web page, switch to email, launch a link to read a new page, switch back to email to write a note about the page I was reading, then switch back to the browser and I end up not at the last page I was reading, but the one I started on because the second task in which I was using the browser was taken off the stack. The life cycle is working as designed, but it's a bad design.
If Google doesn't start addressing UI/UX issues, Apple's iOS will continue to dominate and Microsoft's Windows Phone 7 will have a real shot at beating Android. Microsoft in particular has a talent for defeating competition having beaten or fended off Apple, IBM, and Linux on the desktop and Novell and various Unix variants in the server space.
Perhaps rather than giving away Android for free, Google should start licensing the OS to OEM's, create an P&L for Android and treat it like a business. Or maybe Google can take some of its $9,983,000,000 in cash to create an Android support team and start to resolve some of the 16,000+ defects.