@simulo A couple of things that I've found related to better, more consistent UIs...if the underlying business logic was built from Command pattern first, possibly in cli/repl and then later have a gui put on it, and 2, that the GUI is written for a specific user or role. That is, it's not just an aggregation of widgets. And then within the context of serving that user/role, that menus, actions, gestures, etc do similar things in similar contexts makes the learning transferrable across contexts.
Maybe another way of stating the above is to have a quality UI, it's much easier if it starts from quality foundation of understanding the problem domain and understanding the solution for that domain. It seems many UIs are the evolution of the developer learning about the domain.