Images from GUI Bloopers, by Jeff Johnson. Used without permission.
What's wrong with this?
How does the user move something from one list to the other? Developers sometimes make the mistake of making some functions only accessible through key combinations, gestures, or context-sensitive pop-up menus. These functions are not displayed explicitly anywhere in the application, such as in a menu or button. To use these functions, a user has to know that they exist and know how to invoke them. Unfortunately, this can't be learned simply by using the software, they have to find out from an external source such as a manual or another person.
An improvement on the figure above is shown below.
Application functionality should be accessible by seeing and pointing, not remembering and typing. In the second figure, "Add" and "Delete" buttons provide a visible means of adding and deleting items from the list on the right. Hidden UIs are ok, as long as there is another way to invoke functionality besides key combinations, gestures, or context-sensitive pop-up menus.