"If we want users to like our software we should design it to behave like a likeable person: respectful, generous and helpful."
~ Alan Cooper
Have you ever caught yourself talking to your car, swearing at your computer, or even kissing your sexy new smartphone? Even though as humans we logically know that machines are not alive and do not share our emotions, we treat them as though they should understand ours. If it doesn't behave the way we want it to, we become mad at it, maybe thinking that it will respond to anger. And so we should. It should understand us, it should respect us. If you want your users to love your machine, your machine must first love its users.
The user interface is where all of this happens. It doesn't matter how beautifully designed the inner workings of your application are. Of course, it's important that the application works reliably. But if the user experience is shit, your users will leave. Humans are emotional beings; we want to connect.
To ensure that your user interface connects with users on an emotional level, I propose a simple set of principles on which to build your UI. These foundations are intended to create as closely as is mechanically possible an experience that feels like a human experience.
Emotive
Show emotion. It's as simple as that. At any opportunity, let your users know that you're thinking of them and that you understand them.
- Use smiley faces to convey to a user that their action has resulted in a positive outcome.
- Talk to your users. Say 'hello' when they log in. Don't go overboard with this though and end up getting in the way of the user. There is a difference between a friend who phones to see if you want to hang out and a friend who invites themself to everything you do.
Transparent
Users shouldn't feel like they are using a machine. On most applications it is impossible to escape the fact that your UI is stuck inside a box on a screen. Therefore it should be clear what everything does from the get-go. Simplicity is a powerful tool here, but for some applications simplicity is not an option (see my upcoming post on domain specific considerations) and even where it is not, you should give the user as much help as possible from within the application. Don't treat your user like they are supposed to read a 500 page operating manual before they can use your application.
- Tooltips or info-bubbles on everything.
- Take advantage of every form of user-input possible. Don't ask the user to communicate with your application with just mouse clicks. Utilise the scroll wheel and keyboard shortcuts. Provide a quick reference list for keyboard shortcuts.
- Take advantage of touch technology. Tablets provide a very human interaction with an application. Now that the tablet market has finally broken through, it is a great time to make the most of the opportunity.
- Don't get in the way. In showing emotion within your application, you might be tempted jump out at your user at every opportunity. Be sensible with communication without interrupting the user, or you may end up building the next Microsoft Office Paperclip.
Tactile
User's should be able to feel your interface. Obviously, this is impossible on screen and not much better on flat touch surfaces, however there are a few ways to give a similar experience.
- Add depth to elements. Buttons should look they want to be pressed.
- On-screen buttons should actually depress when clicked.
- Create feedback loops. Play (non-obnoxious) sounds when a button is pressed on a touch interface. You may have noticed some Android phones actually vibrate each time the user types a character on the on-screen keyboard. This is a type of feedback loop, a system of approving, confirming or encouraging user behaviour. The user immediately knows that they have successfully typed a character each time they hear a click. I plan to write more on feedback loops in a future post.
Pleasurable
A user should enjoy using your interface, even if for a dry work task. Of course, don't sacrifice usability for pleasure - try to find a great balance between the two. ThinkVitamin has a great article on emotional interface design with a focus on pleasure.
- Reward your users. Treat them, give them status and recognition or just a pat on the back.
- Use humour. Where applicable, show that you have a sense of humour and let your personality shine through. This might be found on error messages, thank you notes, welcome emails etc. Virgin Group companies use humour to portray a more friendly image to customers. Twitter acknowledges their own failure with "Fail Whale" when their service goes offline.
Intelligent
Artificial Intelligence may not be on the level of human intelligence just yet, but you can certainly inject some of your own intelligence into your application.
- Think ahead. Guess what your users want in a given situation.
- Learn. Learn an individual user's behaviour and alter their interface based on this. Observe how the majority of your users interact overall and make tweaks to your interface to improve these interactions.
- Remember. Don't force a user to enter the same data over and over.
- Be selective. Don't ask a user for irrelevant information. Check what information is needed instead of just asking for everything.
At every stage of your design process, think about how you can improve the relationship with your user. Your user may be interacting with a machine, but you are programming that machine, and you can inject your heart into it. Finally, listen to your users. Not only through direct feedback, but also indirectly through the way they use your application.
An Emotional User Interface is a two-way communication, a relationship. Don't neglect it.