This shouldn't come as a surprise to anybody, but it's shocked enough of my clients that it bears stating clearly. As an interaction designer, my job isn't (or at least, it shouldn't be) always to optimize everything exactly for the end user. There are several reasons for this.
The Best Thing For the User May Be Bad for Business
One of my favorite Dilbert cartoons explained that what users really want is "better stuff for free." As much as I dearly love to help the end user, my clients would quickly go broke if I gave users everything they wanted. A big part of the UX job should be balancing what is best for the user with what is best for the business. Sadly, those aren't always the same thing.What does this mean in reality? It means that every time you see a banner on a free site, some UX designer accepted the necessary evil of showing an advertisement for acai berry in return for offering content for free. It means that sometimes a pricing page will be designed to showcase a more expensive option than the user might otherwise have chosen. It also means we have to work extra hard to identify features that are good for both users and the business (for example, features that make current paying users happy and thereby increase retention), so that we don't always feel like we have to sacrifice either revenue or customer happiness.
Caution! This can go too far in the other direction. I would argue that a lot of Facebook's recent privacy debacles have been driven by optimizing too much for the business and not enough for the end user experience. The result of this, of course, can be losing end users, which can end up being bad for business in the long run.
Getting It Out There May Be Better Than Getting It Perfect
Nothing is perfect the first time it's released. If it is, you probably spent too much time on it. And sometimes the very best solution for the user is impractical for a lot of other reasons.What does this mean in reality? Well, it means that if the absolute optimal solution for end users will take 6 years and a team of 20 geniuses to implement, I will try my hardest to find the next best alternative. I'm not saying I'm going to settle for a bad user experience. I'm just saying that there are a lot of different ways of making the user happy, and if it can be done without killing the engineering department, that's a bonus.
Caution! This does not mean that you get to ship a bunch of crappy features and then never touch them again. If I give you a pass to deliver a suboptimal first version to the user in the interest of time and engineering effort, I expect that it will be iterated upon and improved in the very near future. It may never be perfect, but it had better improve!