A user's frustration level does not usually correspond directly to the number of difficult features in an application. Frustration can actually increase exponentially. For every additional feature, there is more to learn, more to tweak and configure, more to customize, more to read about in the help documentation, and more that can go wrong.
For you, it's one more feature. For users, it's one more thing that adds to the already long list of frustrating things to deal with while using a computer. It's not just your applicationit's everything else, too.
It's the operating system, which hides files away in obscure file-system directories and is constantly popping up little dialog boxes and error messages that you are forced to address so you can get on with your real work.
It's the browser, which has no graceful way of indicating whether or not the link you just clicked is going to show you what you want to see.
It's the email client, which offers no insights into how long it will take for the message you just wrote, with the rather large photo of your cat, to be sent to your grandmother.
Users contend with all these things and more during the same stretch of time they try to deal with your Web application. And the frustrations add up quickly.
I know, I knownone of these things bother you at all. They don't really bother me either. But that's a sad fact. It means we've become desensitized to things that are otherwise maddening. It means we've gone numb.
In short, we've become "computer-savvy."
So what's a Geek to do?
You have to have killer features or your application won't be able to stand up to its competitors. You have to keep adding things to new versions or no one will purchase upgrades (assuming your Web application requires periodic upgrades). And you have to match the competition one-for-one so no one will ever say your application is light where the other guy's is robust.
To paraphrase Alan Cooper, however, trying to match competing products feature for feature is like running through a battleground under cover fire. You can run all you want, but you have to keep shooting to get anywhere. Dishing out cover fire keeps you alive for a few minutes at a time. Long enough to hide. Companies that fight all the time to stay ahead fall into the endless cycle of trying to outdo the enemy (if the enemy has a big gun, you need a bigger gun). This goes on and on until someone falls. It's not a fun way to do things. It's a method that works only as long as the people fighting the battle continue to come up with bigger guns. They spend all their time spraying out cover fire while they run three feet to the next safe position.
Many companies live and die this way. To get into the fight, you have to stock up on venture capital, go into major debt, hire a bunch of rock star developers, go straight to code because there's no time to plan or design anything, and rush, rush, rush to market with a 27-page list of features. And if the enemy starts to catch up, you have to add more features, call the next version "the most robust release ever," and try to maintain your market share. Until, of course, the enemy puts out a new version with even more features.
It's also exhausting for users. The more features you offer, the more the user has to learn. The more options you provide, the more users have to do to get anything done. The more you allow customization, the more users have to fidget and tweak and manipulate your application. They spend more time configuring the tool than using it. As a result of fighting the fight, complicated applications often end up much less usable than one would hope.
To stay alive, you eventually have to get out of the line of fire. It's the only real option.