Creating a user interface that offers a positive user experience (UX) requires a certain level of skill, and admittedly, design is not my primary area of expertise as I am a programmer. Nevertheless, I have gathered some fundamental principles over the years that aid me in delivering a satisfactory user interface.
1. Always respond to user input
Ensure the system always provides a visual response to user input if they click on any clickable or interactive element, such as a button or link, to indicate that their action has been accepted.
2. Immediately respond to user input
The response should be displayed immediately. Not two seconds later. Not one second later. Immediately.
3. Inform the user about background processes
After the user interacts with the interface, they should be notified that the system is processing their request. If the system can track the progress of the computation, displaying a progress bar is preferred. Alternatively, the use of a spinner image is better than nothing.
If processing takes a short amount of time, it may be unnecessary to display a progress bar or spinner to avoid an overly busy interface. However, a small feedback message should still be given to the user.
4. Save the state of the interface
If the user adjusts the default interface by moving a window, resizing an area, or customising the interface in any way, it should remain in the same state after being closed and reopened.
5. Create usable defaults
A programme should function satisfactorily upon the user’s first use. Therefore, configure the options in a way that enables most users to utilise it without worrying about the finer details. If the user becomes more familiar with the interface, then consider detailed customisations.
6. Give advanced users more options
I appreciate software that permits customisation according to my needs and preferences. However, if there are numerous options, it can be challenging to differentiate the essential ones from the unimportant. Therefore, it is advisable to categorise the options into common and advanced features.
7. Do not pamper the user excessively
While protecting new users from unpleasant surprises may seem like a good idea, after becoming familiar with the interface, users may find messages hindering their work flow irritating. Give users the option to suppress messages, preferably for each message individually, so that important information is still displayed.
8. Follow conventions
Every operating system, including the web, has user interface conventions that have evolved over time and that users expect. Try to adhere to these conventions so that they can find their way around quickly.
9. Keep the interface consistent
Don’t change the interface too often. Users build up muscle memory over time and a frequently changing interface will confuse them. Limit major UI changes to major release changes.
10. Enable translations
Although English is the traditional language of computers, there are many users who don’t understand English well or at all. To make it easy for these users to use the interface, make it translatable. Even if you don’t speak another language. In open source projects, there may be volunteer contributors willing to translate. In commercial products, companies should provide translated interfaces anyway, to compete internationally.