Four ways to build delightful experiences into your product
Delight has a somewhat wobbly boundary of meaning in the product design community, yet we all understand it on some level. We know that to be delighted is to take great pleasure from something, to be charmed and surprised.
From a user’s perspective, to be delighted is to be deeply understood. To be seen and acknowledged. To have some piece of your individualism catered for.
My goal here is to share four ways of framing and breaking down delight in the context of product design. For each category, I will unpack what goes into making it a successfully delightful experience along with some concrete examples.
How might you use what you’re about to read? I recommend reading through and digesting the content, then ultimately using these as framing devices in a brainstorming session with your product team.
Here are four ways to frame delight:
1. Anticipation
Could the system anticipate the users need in some way?
Anticipation means the system takes the first step in the journey without the user initiating it themselves. The less accurate your predictions here, the higher the risk of annoying users, however, this can be mitigated by making these anticipations optional, easy to dismiss or ignore entirely.
Anticipation can be delightful in both open-ended states — when the user is at crossroads of potential journeys or has just finished one, or more daringly, before they have started engaging with the system.
Based on what we know about a user historically, are we able to offer them a direct shortcut to something at a predictable time or place? Can we show how deeply we understand the user, the way a barista might decide one day to start preparing a regular customer’s ‘usual’ before they’ve reached the counter? The more historical interactions the barista has had with the customer, the higher the likelihood this will be seen as delightful, rather than as a misunderstanding. In a similar way, you’ll likely find that your ideas here will work better with returning users with whom some familiarity has been built.
Some examples…
Citymapper
Once you’ve taken a few trips to places that you’ve defined as work and home, you’ll begin to get a push notification to start your commute when it’s your typical morning or afternoon commute time, taking into account traffic conditions and detours.
Google Drive
Your files are rearranged on the home screen depending on different factors, including showing files that ‘You often open around this time’ which anticipates what you will open based on the time of day and your prior interactions
2. Efficiency
Could the system save the user a small amount of time on an action that they do with high frequency?
Think about the essential flows that a user travels down in your system. What are the common end-points that users – perhaps the most active users – are doing repetitively within that flow? Is there a way to accelerate how fast these can be reached? How might you reduce the effort it takes to do them? How can the interface get out of the way sooner and deliver users to their goals faster?
Efficiency and mastery often go hand-in-hand. There is delight in hitting the right keyboard shortcuts or performing the right touch gestures to achieve what used to involve multiple steps of interaction.
Personalisation can also be used to serve efficiency. Remembering the previous choices of users in highly trafficked flows can go a long way to increasing efficiency. Be a delightful listener and apply what you know.
You may find that efficient methods of doing things may be less intuitive than their more effortful counterparts. Think about typical cursor-driven interactions — with all their dropdown lists and multiple steps — as opposed to many keyboard shortcuts that can perform actions immediately… as long as you know about them.
It’s crucial to think about the educational side of efficiency, and not just the interaction itself. Whenever you ask yourself: ‘How can users do this more efficiently?’ make sure to pair it with: ‘How will users learn how to do this more efficiently?’
Have you ever had a friend point out a keyboard shortcut to you that then goes on to save you bucket-loads of time? Why couldn’t the product itself have told you about it when the moment was right? After all, it was standing by as you did something the long way around again and again. It’s almost cruel.
Consider how you might delight masterful users, and how you might gradually educate newcomers into becoming efficient masters.
Some examples…
Trello
In Trello, there are multiple keyboard shortcuts that allow you to add or remove information on a card without ever opening it. For example, you can simply hover a card and hit space, or a number key to change its data.
Google Chrome Mobile
The ‘share…’ experience in Chrome on mobile will show a shortcut to the last used app that a link was shared with, completely bypassing the flow where you need to pick which app you want to share with. This allows for an efficient repetition of sharing to the same destination app.
Jira
Links to Jira issues are very often copied and pasted around in day-to-day work. Instead of relying on the address bar, or the right-click and ‘Copy link address…’ interaction, there is a handy little button that allows users to instantly copy the URL to their clipboard. This tiny little efficiency feature quickly became one of the most highly used actions. Don’t underestimate small and simple!
3. Understanding intent
Could the system save the user a decent amount of time and effort comparatively to their expectations?
Someone is using your software in order to try and do something, this is their intent. Users need to interact with the system until their intent is fully understood, then it can be realised by some output. Every interaction in a flow is the product asking the user to further specify their intent.
Ask yourself: How far can we carry a user towards that final output with minimal input of intent?
Once a user has started rendering their intent in a certain direction — and given all information we have at this point in time — how far can we get them towards fully realising that intent before we ask for their input again?
By considering a users direction in the system alongside information being held in memory, the current context, relevant historical data about the users' behaviour or even just their previous location in the system, can we provide fast-forward paths that take them to a likely outcome?
The key to this one is really understanding your users' behaviour en masse and identifying what are the most likely end-points for this total journey when surrounding information is considered. Then take that likely-end-point and place it somewhere along a critical path, sometimes called a red-route, in an optional or suggestive way.
The opportunities to delightfully understand intent are expanded with richer understanding of context. Not just context of the users' goal, but the context and meaning of the information the user is interacting with and has interacted with prior. Think about the kinds of things you might be tracking already, or that can be easily calculated or inferred. What time of day is it? What device is the user on right now? What is the nature of the data they are trying to work with?
Some examples…
Google Inbox
Back when Google Inbox was still with us, emails could be ‘snoozed’ to reappear in the inbox at a future time, which is basic functionality in Gmail now. But what made it magical was that when snoozing an email for an event, flight or delivery, the options in the list are enhanced to try and predict your full intent. There would be an option to snooze until “day before…” whatever the thing is. This effectively provides a fast-fowarded version of the “Pick date and time” flow, where a user would have to manually select the date and time, remember the event details in their head. Instead they get a delightful single tap experience.
Google Chrome Mobile
When you have a link copied in your clipboard on Android, and you open chrome to paste it into the address bar, there is an option directly below that will bypass the long-press then paste interaction.
TV Time app
In TV Time app, when marking an episode as watched when there are prior unwatched episodes, it asks the user if they’d like to mark everything as watched up until that point. If the user has already seen the first few seasons of a show and want to update my tracker to this episode in the show, this little popup understands that intent, and seems to only popup in situations where there is a considerable backlog that would need to be manually checked otherwise.
4. Emotional resonance
Could the system respond in a way that matches the users emotion?
All of the above sections require understanding users, what they are trying to do and how they expect to be able to do it, but this delight of the emotionally resonant variety goes deeper into how people feel in pursuing or achieving their goals. It’s also the kind of delight we can fail at the hardest.
Imagine a team using an agile development tool has just finished a sprint’s worth of work and we think that is worth celebrating? We could have the UI react in a celebratory way when the user tells the product the week’s work is done.
But does it always feel good to finish a sprint? What if the team failed to deliver any of the things that they planned on… maybe that confetti takes on an unintentionally sarcastic tone.
To mitigate the risk of emotional dissonance, look for ways to build in some variance in the UI-response that is based on other factors. In our example above, the lack of progress on the work inside the sprint opens the door to a different kind of UI reaction and an opportunity to empathise with users in a different tone altogether: To help them plan, or adjust, or maybe to just get out of the way and move on without mention. Another way to avoid dissonance is to find a natural way for the user to define what celebration is for them, which removes the risk of poor assumptions, but does shift the burden (however small) onto the user.
Ultimately, there is always going to be risk in trying to match the emotion of your users. There is a risk that the response feels condescending, or tone-deaf, if we are imposing a feeling rather than resonating with their actual emotion. This is terribly hard to do, of course. If in doubt, keep it neutral.
If we build in some variance to respond to other factors, then we might avoid awkward situations — and celebrate even harder when things have gone well! Keep it simple, contextual and think about how the UI might come across when things aren’t going well for the person using your product or service.
Some examples…
Fitbit
Fitbit is loaded with UI that celebrates user activity. Post-exercise messages will change depending on the length of the work-out. If a workout is started and then fairly immediately completed, the message will reflect that, with phrasing like “Fastest exercise. Evah!” or “Are you testing me?”
Duolingo
In Duolingo, the onscreen avatars react emotionally to your progress, whether you get questions right or wrong. The emotionally resonant owl — for better or worse — has struck enough of a chord to inspire a few memes ↗.
Trello
Trello manages to allow users to define what success means for them, by interpreting certain emoji (for example 🎉) within a list title to mean “let’s celebrate”. When cards are dragged into lists with these emoji, the UI erupts with some fun confetti. Whilst slightly less discoverable, the beauty of this approach is that it moulds itself to the users definition of success and doesn’t impose any definition from a product-perspective.
There you have it 🧁
Try brainstorming with your team in the context of your core user journeys, using each of the above as a jumping-off-point.
I hope you generate some ideas that delight users and that your team will be proud to ship.