Why programmers create bad UI? They do, you do, I do it too. We all do. It's inevitable. The reason is the curse of knowledge.
You create a code and know all the corner cases or the nifty things that user can set to optimize it. You know it all, it's obvious to you.
So you want to be a good guy and let the user decide, right? Users are smart like you, they know what to do and they will happily jump to modify their settings and customize their application.
WRONG!
Actually your job is other way around. You know all the details and you should hide them at all cost. You musn't be afraid of having some defaults and guessing some things. As long as your app works in most cases for most users.
You need to hide all options that are usually not needed. Only leave those that are crucial and often customized by users.
Remember that allowing users to customize your app is like shooting yourself in the leg - since you allow them, they will do it, and if something goes wrong they blame you.
Unless your business model is around providing consultancy (like SAP) you need to remove all unnecessary clutter to make your app the simplest one to use even if it means some people will choose different one because of the missing feature XYZ.
Apple's great on removing features, not adding. And that's their success story.
And the worse examples you can usually find in tools for developers (see screenshots), because developers are smart and want to control their environment, right?

