Skip to main content

Your submission was sent successfully! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates from Canonical and upcoming events where you can meet our team.Close

Thank you for contacting us. A member of our team will be in touch shortly. Close

  1. Blog
  2. Article

Matthew Paul Thomas
on 23 November 2012

Solving design problems


Earlier this year, I worked with other Canonical designers on a poster for Ubuntu contributors about how to solve design problems. This poster was shared with participants at the Ubuntu Developer Summit in California.

What’s a design problem?

It’s any situation where

  • you don’t know what design to implement, or
  • your users aren’t satisfied with the design.

Whether you’re designing something new, or redesigning something, even following just one of these steps will help. The more steps you follow, the better the results.

1. Define the target user

  • Who uses (or will use) your software?
  • What will they use it for?
  • How often will they use it?
  • Where will they use it? (What kind of environment?)

Try writing a one-paragraph persona, giving the name, age, occupation, experience, values etc of a target user.

Ideally, personas are based on interviews or surveys. Find out more about personas on usability.gov.

2. Test the existing solution

If you have an existing implementation, what’s good and bad about it?

Is a similar problem addressed in other applications, or on other platforms? You might even do usability testing of the competition.

3. Evaluate alternative solutions

Think of as many alternative solutions as you can. Things to try:

  • removing something
  • combining things
  • rearranging things
  • rewording things
  • adding something.

Then, compare your alternative solutions on the scales that are important to your target users. These might include:

  • learnability — simplicity, lack of jargon
  • efficiency — reduced clicks, keypresses, movement etc
  • forgiveness — the ability to undo mistakes
  • elegance — parsimony, beauty, and alignment.

4. Test with real users

Testing a static design, you can sketch a paper prototype, or use a printed screenshot or mockup to show people.

With something more complex, implement a prototype and get people to try it.

Be clear that you’re testing the software, not the people. And don’t give hints unless someone says they’re completely stuck. 24 Ways has a good guide to fast and simple usability testing.

Related posts


Lyubomir Popov
23 June 2025

Revolutionizing Web Page Creation: How Structured Content is Slashing Design and Development Time

Ubuntu Article

Co-authored with Julie Muzina A year ago, during our Madrid Engineering Sprint, we challenged ourselves to dramatically reduce, or even eliminate, the need for constant design involvement in the day-to-day creation of web pages. Our strategy for achieving this is based on a smarter, more structured approach to content. The Challenge: Brid ...


Leia Ruffini
14 April 2025

How we ran an effective sprint to refresh our website, Part 1

Design Article

Part 1 of how we ran a design sprint to refresh our website. Sharing what worked, what didn’t, and lessons from designing for open source in mind. ...


Lyubomir Popov
17 February 2025

A deep dive into our grid system and typography for the A4 format

Ubuntu Article

We recently redesigned our whitepapers as part of our broader rebranding project. Let’s look at some of the ideas behind our approach to layout and typography. The goal? A reliable, accessible modular system that communicates with clarity, purpose and precision across mediums — qualities that tie directly back to our brand values. Context ...