As consumers we get more and more demanding, expecting features in everything we use to be perfect. But as developers, we really should be more understanding. Too often, we fail to put ourselves into other developers' shoes. No one is looking to make the consumer's life miserable, there's just some tradeoffs that need to be made. Here are a few examples:
Like most iPhone users, I moved to iOS5 as soon as I could, and yesterday I went off and updated my iPhone. The promise of all those nice features is too much to resist. The whole download-backup-install-restore cycle took a long time. A very long time. But it worked in the end so you've got to hand it to the Apple developers. My phone is still stable, so I'll take the hit on the installation time. If I was developing the feature, I'd rather have people complaining about installation time than tech support queries about bricked iPhones!
One of the features I was looking forward to was location-based reminders, but I've since found that they don't work on my 3GS, but only on iPhone 4/4S. Disappointment, but then I have old hardware, and according to forums that I've looked though the iPhone4 GPS unit takes up less battery. So, you have to look at the bright side - there was a trade off of providing the feature or maintaining a reasonable battery life. Sure, they could have put in an option, where you could make the choice. But is it worth the development cost? The testing? I don't think so. If I was writing software, and had to think about supporting back three generations, I'd make the assumption that most customers would rather the latest hardware too.
While we're on the topic of high expectations, it's worth talking about what we expect of open source software. This is one area that developers should not just complain about. The processes are open and the source is there to go and make the change that improves the software. For years I've been seeing people complain about Eclipse (as an IDE or the frameworks). Don't forget that you get the IDE for free - you pay nothing. Rather than bash the technology, just get on board and help. Or at the very least, consider what you could have done better if it was you who was developing it.
The Eclipse community has some great examples of people who've seen deficiencies and made improvements, or provided alternatives. Graphical editor development projects were dominated by GEF and GMF in the past. However, GMF has a steep learning curve, and ends up being suitable for some, but not all graphical editors. This prompted the contribution of a new approach for graphical editors, build on GEF, called Graphiti.
What I want to say here is, you're a developer, you know how difficult it can be to get everything right. Be tolerant of products, frameworks and tools. There's developers on the other side too!