Skip to main content
  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


Miguel Divo
22 May 2026

Decoding design: How design and engineering thrive together in open source

Design Design

Open source thrives on engineering-driven processes. Fast feedback loops, terminal tools, Git workflows: they’re the lifeblood of how we build software in the open. But for software to truly excel, we need to create user experiences that empower people to use them. I wanted to bring this conversation into the spotlight as part of Canonica ...


Johann Wolf
27 April 2026

Why Web Engineering is great

Ubuntu Article

Like many software engineers, one of my first software development experiences started with creating my own web page. Since that time 20+ years ago, a lot has changed in the web landscape. Having worked a lot in web since then, I’d like to take a moment to reflect on what I think makes web great! ...


Miguel Divo
13 February 2026

From inspiration to impact: design students from Regent’s University London explore open design for their dissertation projects

Design Article

Last year, we had the opportunity to speak at Regent’s UX Conference (Regent’s University London’s conference to showcase UX work by staff, students, and alumni), where we engaged with students to make them aware of open design and their ability to contribute design skills to open source projects. The talk sparked great discussion, and we ...