Anything that an average user (not necessarily a tech-savvy person) types into or clicks around that causes a program to act in response is a user interface. In general, the goal of any decent user interface should be to provide an effective, intuitive means for a user to achieve their objectives within a program without having to worry about the underlying mechanics. There are many philosophical ideas surrounding more specific ways to construct a successful user interface.
A user interface could be anything from an OS to the controls for a crane, but all user interfaces revolve around a cycle of input from the user and feedback from the program. It can include both hard- and software components and, on a computer, be either textual like the terminal or a full-blown graphical user interface (GUI, pronounced 'gooey') like that of Microsoft Word. New development initiatives are even looking toward tactile user interfaces that respond to bending or folding in certain ways, and that heat up or poke the user as means of feedback.
Key concepts in designing a user interface include:
- minimizing useless or incorrect output
- de-cluttering the options and menus
- allowing the user both access to the state of the system (consider how you can review the text of a Word document as you write by scrolling, or with the crane example, simply look out the windshield at the position of the machine) as well as control over it
- help options available
- good performance, not one weighed down by a necessarily heavy graphical component
- intuitive or easy-to-learn tools
- real-time feedback (as little lag as possible)
- avoiding features known to annoy users like automatically playing music, pop ups or patronizing 'advice mascots'
Icon photo credit Intel Free Press