I'll preface this by admitting that when it comes to cell phones, I am NOT cutting edge. My G2 has never been rooted, and is still Android Gingerbread 2.3 with whatever upgrades T-Mobile has seen fit to send down the line.
I will also admit to being the type of person who has filled up 20 GB of a 32GB microSD Card with free and sometimes not-so-free applications.
Still, I'm running into bugs that bug me, as a user and as a programmer, that I do not believe should exist in a modern operating system regardless of platform, but especially NOT in a ROM/Flash based operating system.
#1. User Input is not given priority. Ok, so while this is a pet peeve of mine in everything from Windows XP to Linux to Android, it's a biggie for me. I don't care what your platform is, User Input should *always* preempt ALL other jobs currently running. When you have a processor running at > 5Mhz (and all of them do, these days) there is absolutely no excuse for not interrupting whatever the processor thinks it is doing to respond to keyboard and touch screen input. None at all. Humans are slow enough that there are plenty of clock cycles behind the scenes to get all other jobs done.
#2. Random Reboots. If I am happily using my phone for a single task, *LIKE A PHONE CALL*, hold off on that upgrade reboot until you have *NO* user interaction for at least 5 minutes. Or at least give me a warning so that I can say to the guy I'm talking to that I'll call him back. Once again, this is about proper prioritization of jobs. The machine exists to serve the user, not the user to serve the machine.
#3. The weird thing I just noticed that prompted me to finally write this, and certainly a low priority item. In the Call log, if I leave it on that screen, at least update the times in the list every hour or so, especially if there is no user input (see #1) for a long period. I just glanced at my screen and saw a call I know I made two hours ago labeled as being made 2 minutes ago. The screen had not updated in that long.