Four ways to build delightful experiences into your product

Daniel Kerris
Designing Atlassian
10 min readMay 18, 2021

--

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…

Notifications tray message from Citymapper that anticipates a commute

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.

In the home feed of Google Drive, the navigation anticipates user behaviour based on patterns of use

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 allows users to quickly categorise their cards by pressing keyboard shortcuts whilst hovering

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.

The share experience on Google Chrome mobile puts the last used app as a secondary button

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.

In the Jira Cloud app there is a button to copy link to clipboard

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…

The snooze an email options in Google Inbox were dynamic based on email content

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 has a secondary action after tapping the address bar if there is a link on the clipboard

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 offers to mark previous episodes as watched to save the user from manually updating progress

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.

Squidward looking miserable with rose petals being showered on him

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…

The Fitbit app responds to various levels of activity in fitting responses

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 makes heavy use of emotionally resonant characters throughout their experiences

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 ↗.

In Trello, users can specify which lists should be celebrated

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.

--

--

Daniel Kerris
Designing Atlassian

Industrial Designer working in tech. Currently at @Atlassian designing product.