Design to Delight: Raising the Bar on Software Design

Design to Delight: Raising the Bar on Software Design

New products get launched every day. According to Clayton Christensen, a Harvard Business School professor, there are 30,000 new consumer products released each year. As a consumer, you don’t have time to take a deep dive into every product that comes across your plate. You give them a once over and if it didn’t make an impression on you, then you say, “thank you, next.”

In the software industry, we know this is how consumers think. We must make an impact in a matter of seconds. Once hooked, we need to provide a delightful experience to keep them coming back and using our software. Staying on top of end user expectations is a full-time job. We need to design to delight from our elevator pitch to the daily UX of the users.

The unfortunate part of it all is that you cannot simply meet expectations to delight someone. You have to surpass them. You have to surprise the users so they sit back and think “wow, that was cool!” There are infinite more ways to miss expectations than there are to exceed them, so finding the right way to engage is critical.

Start by Assembling the Right People

You need to be intentional with your design to delight the market. Being intentional involves getting the right people to put their heads together to innovate. You need a group of people who will balance each other out in a sort of checks and balances.

  • **Domain Expert — **Understanding the business problem is the number one factor needed to build delightful software. You need to equip yourself with someone who knows the ins and outs of the business like it was the back of their hand. Someone who breathes the business. You ask them an obscure question and they will rattle off a detailed answer immediately. They will represent the customer and will be your original source of expectations.
  • **UX Designer — **Clearly another important role when building software is the UX designer. You need someone to translate the needs and requirements from the domain expert into a user journey. Their objective is to visualize the problem in a meaningful way. The UX designer will turn ideas into a reality.
  • **Software Developer — **Of course you need someone to build your vision! But just as important as building the software, the developer can also keep the UX designer in check by saying part of the journey is not technically possible given a set of constraints. The developer plays the role of harsh reality in our trio of delighting musketeers.

Clearly Define the Business Problem

There are several questions you must answer before diving into the innovation chamber. Having a clear answer to the following questions will lay out the different ways the problem can be acted upon.

  • Who is your end user? — This is your day to day user. Don’t think about who you’re going to be selling the product to (if you’re a B2B software company) but rather who is going to be using the application every day. When your product is in production, you want your feedback to come from the ground up. Give some depth to the praise and accolades you will inevitably receive.
  • How do your users do it now? — There is more than likely an established process in place already for the business problem you are trying to solve. What is it? You can use that process as a starting ground for your process, or you could use that as the primary example of what not to do. Either way, having an example at the start will not only speed up the development process, but it will also round out your thinking with some outside influence.
  • How many clicks does the current process take? — I cannot emphasize this one enough. Clicks are everything. Clicks are digital currency in the software world. Nobody wants to spend more than they have to. It might sound like a ridiculous measure at first, but this is a true objective way to measure an improvement on a process or set of tasks.
  • What factors influence the workflow? — Are there outside factors that determine the next steps an end user would take? What influences the flow of the business? If you can determine the set of criteria that changes the user experience, you can artfully craft software that guides the users from start to finish.

Whenever possible, it would be worthwhile to walk through how your customers are currently operating. See what you like and dislike about the process. Get some ideas for yourself on how you could improve an area. Figure out what steps aren’t necessary. Take in as much information as you can to get a clear, robust definition of the problem.

Build the Initial Solution

Given your business problem and the exposure you’ve had to the current process, come up with a unique solution that sets you apart from your competitors. Now is the time to innovate. Bring your perspective to the party. Figure out how to qualify what makes your solution better than the rest.

You are going to be building the foundation for your overall solution with this step. Do not go into your initial solution design thinking it’s going to be production ready. It won’t be. What you need to do here is get the first thoughts down so you can see your thought process. Humans are visual creatures, so getting your design in front of you as quickly as possible will speed up the process tremendously.

Try to time box your initial solution to a relatively short time-frame. I would recommend following the techniques described in The 5 W’s of the Rapid Prototype to keep it short and simple. The basic idea here is to get a high-fidelity, functional prototype built in a single sprint.

When you go in to build your initial solution, make your primary focus efficiency. Design your product around the idea of being as efficient as possible. Allow your users to save their precious clicks they are desperate to hold on to. I have found that in long running business processes or workflows, displaying the steps of the workflow visually on the screen helps give the impression you are moving faster. Use any tricks you can to give the impression of being efficient.

Iterate and Improve the Solution

With the initial solution in place, you can start running through your qualifiers to see if you are on the right track. If your main qualifier was to reduce the clicks to get through a workflow by half, count the clicks from the process before, and count them now. Did you do it? Can you make it even better? Sure you can.

Think about the last time you were on a website and were pleasantly surprised about something it did. What was it about that experience that delighted you? Did it abstract away complicated mumbo-jumbo and provide you with a quick and easy experience? Did it handle more than you thought it would with a single click? Did it “just work”? Chances are it did all of these things. Let’s take TurboTax as an example:

User Experience

You are walked through a wizard with simple questions and bright icons. It flows well, you can easily go back if you need to, and if you get stuck they offer live support. When you’re done, you tell it to send your refund to the bank and you go on with your day in 15 minutes. Simple. Easy. Not the nightmare we all associate with taxes.

What it Does Behind the Scenes

As you fill out the questions in the wizard, the software is filling out tax forms with your information. It knows which supplementary forms you need when a specific box is filled out, and it knows where to look on your tax documents for missing information. When you’re done walking through the wizard, it compiles all the tax forms it generated, identifies any missing forms or boxes, and prompts you to fill out any additional information. It then goes and eFiles with your state and handles the money transfers.

You need to put your focus in getting from your initial solution to a solution that makes the workflow as simple as possible to handle a complicated process. Make your screens data dense to reduce clicks. Automate everything you can. If you have to create a small piece of configuration to turn a 6 step process into a 1 step process, then go for it!

People love it when things are just handled for them. Remember, we are stingy with our clicks. We are also always in a hurry. Anything you can do to get your users from point A to point B in the shortest amount of time possible is going to add to their delight.

This is also a great opportunity to identify areas of your software that could be enhanced by machine learning. You might not have time to build it for v1, but you can get feedback and expand on your ideas for ways to make the system smarter and more efficient.

Continue this process over and over. Refactor the solution, run through your qualifier, think about how you can improve your score. We’re building software here, put emphasis on being agile and iterate on your solution.

“It’s not iteration if you only do it once.” — Mark O’Neal

Get Real Feedback Through User Testing

After each iteration of your solution, you can run through a series of user tests to solicit feedback and get varying opinions.

  • Internal tests with domain experts — These are the people that know the area the best. Have them run through your software and give their opinions on what they would expect to happen when a button is pressed or if it makes sense to consolidate these fields into one, etc..
  • **Internal tests with domain strangers **— Get someone who doesn’t know the space to try out the software. Is the product intuitive enough to guide these people through to the end? Getting new people from zero to hero quickly will elicit delight in your users.
  • **Tests with real users **— Be smart about your selection of real users. They need to represent your target well, so get a diverse group. Make sure they know they are participating in user testing, and not using real software yet. These are your most valuable tests. You aren’t going to learn anything until you get it in front of a customer.

You don’t have to run all three types of tests every iteration. Do the tests that make sense given the changes you made. You want to get honest opinions and suggestions on how to make your product better, so you need to be picky when it comes to selecting the right audience.

Figure out what the users like and don’t like about the software. Try to fix things they don’t like with traits from the things they do like. Would it be possible to automate a part they don’t like? If possible try to participate in a collaborative design session in troublesome areas. A collaborative design session involves sitting with your end user and making changes to the code or design while they are offering their input. This can be extremely beneficial, but you also have to watch out as you can get too specific to one user’s needs.


Don’t rush the design process. Rome wasn’t built in a day. Neither is delightful software. Take into considerations things like automating repetitive steps, build screens that are full of data, and don’t forget to count the clicks. Take your feedback wisely, don’t cater to a single individual. Remember to iterate, we are in the era of being agile.

By delighting your user base, you will encourage your product to grow. You will grow your user base, you will continuously evolve your user experience, and you will improve your credibility as a software company.

How has your experience been delighting a customer? What has worked for you in the past? Tell us about it in the comments below.

Allen Helton

About Allen

Allen is an AWS Serverless Hero passionate about educating others about the cloud, serverless, and APIs. He is the host of the Ready, Set, Cloud podcast and creator of this website. More about Allen.

Share on:

Join the Serverless Picks of the Week Newsletter

Stay up to date with the best content serverless has to offer, learn about the latest updates to AWS serverless services, and get to know community superheroes, catered by AWS Serverless Hero Allen Helton. New issue every Monday.
Click here to see past issues.

Join the Serverless Picks of the Week Newsletter

Thank you for subscribing!
View past issues.