Question: I keep hearing that **users are stupid idiots** alot, and that being said it is also used as a reason to have everyone's experience crap now and in the future.

For example: not enough options for things that would enhance the overall user experience, because it might allow stupid users to do stupid things.

**Is user stupidity a reason for bad UX?**

*(Tried not to influence this question with my own thoughts too much, but: I've seen usability testing results in my days, and must say that sometimes the "stupid users" seem pretty damn smart when they nail/fail using a piece of software that's been designed by morons... ;)*

Answer: 
"Users are stupid" is a programmer's mantra. I think it has persisted because it inspires [defensive programming](http://en.wikipedia.org/wiki/Defensive_programming) and defensive design, which is usually a good route to take. However, **it's not true**, and it's a little bit harmful. I think the sentiment should be broken up into the following better notions:

* **Always *assume* that users won't understand.** This inspires interfaces that are safe, and cannot be used to break stuff accidentally. Don't call them stupid, though, that's just unpleasant.
* **Things that are simple to you aren't simple to your user.** This doesn't mean the user is stupid, they may just have a different zone of comfort. I know of a physics Nobel prize winner who needed help to turn on his MacBook's "find my mac" feature. And even if they aren't smart, that's no reason to look down on them.

It can be really harmful to disrespect your users. It may stay hidden if you're a backend programmer, but if you design the frontend, that stuff has a way of coming out. 

A good interface does the following:

* Make correct use easy
* Make incorrect use hard
* Make common use-cases simple
* Make less common use-cases possible

The last point is where modern UX design often falls down, and what your question is really about, I think. We strive for simplicity only, when we should be striving for a good power-to-weight ratio. It's nothing to do with smart or stupid. Some users are willing to invest time in your app in order to get more out of it. They should be catered for, but not at the expense of users that want to do simple things. Just like the users with common use cases should not become aware of the complexity until they need it.
Following the "users aren't stupid" crowd, I'll add this "but very many UX coders are quite stupid".

Programmers write interfaces they are comfortable with because they often have little evidence to the contrary. This implies "If they are too busy to understand the entire system as well as I do, they're ignorable insignificants". I've actually entered a group which actively held that belief "What do you mean a customer can't understand what 'Manifold Reset Override' is for? Why not?" After beating such folks about the facce and neck, there is *some* hope of reforming them.