You can have flexability, or you can have reliability. You can't have both.
I used to have an iPhone, but not being able to do what I wanted with it pissed me off.
So I switched to Android. Only to find out that while yes, I have fantastic control over the device, I can't rely on it for even the most basic functions. Battery life is a write-off as soon as I do anything more than basic functions that even a dumb-phone can accomplish. And the build in tools are so crap that you *have* to get external stuff in order to use the phone properly (Android *still* doesn't do native carddav/caldav? Seriously?)
So I've gone back to iOS. No, I can't do everything I could do with Android. The build in keyboard is idiotic. Why Apple won't let you do bluetooth file transfers, is beyond my comprehension. The list goes on. But I don't have to worry about it suddenly not doing stuff that was working just fine the day before. I don't have to worry about my brand new device suddenly only getting 4 hours of battery life.
It boils down to what you're willing to put up with. I have too many other things to do in my life, and I am not willing to detour those things in order to do performance profiling on my mobile device just to find out why it suddenly decided to go haywire. I'm perfectly happy to do less things, as long as it does those things well.