Although it's difficult to create good UI, it doesn't mean that bad UI is easy - in fact some people go to great lengths to produce bad UI.
That said, good UI simply boils down to:
Intuitive, Pretty and Performant - in a combination that targets the intended user.
eg. A programmer is going to prefer performance over pretty, and a hairdresser might prefer pretty over intuitive... but you still need all three for a good user experience.
If you don't have access to your user (and that's generally the case), just pretend that you are the user.
If you wouldn't use your own app; that's a good sign of bad UI.
In the end, you can't please everyone - so please yourself, then at least one person is happy.