This seems like a broad question, so I'll outline my specific example.
I support an old Windows program. And I mean OLD. It originated as a 1997 rewrite of ever older software. It's a kind of diagnostics and monitoring software for a network of devices. In one central part of the app, these devices are organized in a tree. It's essentially an MFC Single-Document Interface wherein users select a "document" (a device) from their current network. This works well, and users are used to this interface.
However, there is one small annoyance that has existed for some time in this interface. To open a context menu on an item in this tree, that item must first be selected by left-clicking it, before right-clicking it. I've recently corrected it by making it so that, on a right-click, the tree control will assume you want to select the object you right-clicked on, then it will bring up the context menu for it, and so forth.
- Optimistically, this corrects the old annoyance, and users greet the change with an "Oh, isn't that nice. I don't have to left-click before right-clicking anymore!"
- Pessimistically, this introduces a new annoyance--the key word being new. They were used to the old way, and this change makes them adjust again. "Arrgh," the user says, "it used to be I could right-click anywhere, now I have to make sure I'm pointing at the right thing!"
This wouldn't be a concern if this was done right from the beginning. But even if it's wrong now, is it better to correct a clunky UI or avoid painful changes?