UPDATE: It's really the developer community that makes the iPhone so cool. I complain below about the lack of multitasking, and then I found out that a third party developer has implemented putting running tasks in the background independently of Apple! Very cool. You still need to jailbreak the phone to get this working, and Apple makes it way too difficult to do that (and shouldn't make you need to do it in the first place).
I've had my iPhone 3G for a few months now, and I think I've finally put my finger on what's wrong with it.
Please understand, it's the best phone I've ever had; definitely a step up from my Treo. It does the phone things well enough, and much more besides. It's probably the most beautiful piece of tech I've ever seen. However, it has intensely frustrated me, and it's taken me a while to figure out why.
Everything it does it only does halfway. For instance:
* It surfs the internet. However, it doesn't play flash, and although it does a pretty good job of rendering large, complicated pages that wouldn't normally be useful on a device of this size, it's still extremely painful to access those types of pages.
* I can type on it, but it's not pleasant to do so. I could easily operate my Treo with one hand; it's much more difficult to do that on the iPhone. So, since the iPhone supports Bluetooth (and USB, I think), it seems the perfect candidate for an external keyboard, but there are none.
* It plays music, and pretty well. However, the music has to be synchronized by iTunes from your computer, and even then it is limited to Apple-vetted formats. Even iTunes on the Mac can use plugins for Ogg, FLAC, etc., but those won't help you on the iPhone.
* It plays movies, beautifully (for a device of this size), but again, only Apple's vetted formats. Even if you want to play an mpeg4 movie file that plays fine on your Mac it probably won't play on the iPhone. And you have to sync the movies to the iPhone through iTunes. I don't want to keep all my movies in iTunes; it's a pain in the butt.
* iTunes on the Mac can play Internet radio streams. iTunes on the iPhone cannot, which leads me to:
* MacOSX can multitask, so why can't the iPhone? On my Treo I could listen to Internet radio in the background while I did other things, but not on the iPhone. Only a few official Apple apps can run in the background on the iPhone; what a waste!
* The iPhone has wonderful networking capabilities, and the UNIX operating system; as a UNIX geek, these things were the reasons I finally made the purchase of the iPhone. All the pieces are there for me to have a portable, networked UNIX computer, and yet Apple goes out of it's way to not only not support that sort of use, but to block others that try to add it. I don't get it.
I could go on and on. Every single feature is implemented well, but with about half of the possible. As an engineer of sorts, it really drives me nuts. Are all of these limitations due to commercial concerns? Sometimes business practices are really painful.