Deprecated: Hook elementor/widgets/widgets_registered is deprecated since version 3.5.0! Use elementor/widgets/register instead. in /var/www/html/wp-includes/functions.php on line 5756

Deprecated: Function Elementor\Widgets_Manager::register_widget_type is deprecated since version 3.5.0! Use register instead. in /var/www/html/wp-includes/functions.php on line 5381
How to design apps that solve problems
Deprecated: Function Elementor\DB::is_built_with_elementor is deprecated since version 3.2.0! Use Plugin::$instance->documents->get( $post_id )->is_built_with_elementor() instead. in /var/www/html/wp-includes/functions.php on line 5381

How To Design Apps That Solve Problems

LAST UPDATED: November 12, 2020

Samuel Ogbonyomi


Problems are one of those constants in life, things do not always go as we plan, and over the years, we have come to rely on technology (apps) as a means to problem-solving; with that reliance comes the need to design apps that solve problems, our problems. These are the apps that turn out to be “Successful” and sought after the most.

Think of the applications you use the most (mobile or otherwise) and you’d realize that these applications are significant to you because they solve some of the problems you’re faced with (of course some tackle more significant problems than others).

There’s one more thing though; User Experience, it’s not enough that an app solves a problem, the experience it offers is of great significance as well, if the experience is bad, people will not use the app. 

With this understanding, How then are mobile apps designed and tailored to solve problems? This is where User-Centered Design (a.k.a Human-Centered Design) and Design Thinking come in. 

UCD and Design Thinking are recognized as the major approaches to problem-solving (especially in product design). Truth is, they aren’t so different, in fact, they have more in common than they have differences. This has led many to accept that they’re the same thing, basically. But that’s not entirely the case.


User-Centered Design is an approach to design that places the users as well as their needs at the heart of the design process. It is iterative in nature as it is heavily reliant on user feedback and constant improvement. UCD places the user’s interests at the center of the design process as criteria for decision making to ensure that a better experience is designed with respect to product usability and usefulness; an experience that does not require the user to change their behavior to use the product.

Generally, User-centered design outlines four phases in its process;

  • Understand the context of use- try to understand who the users are, why they’d use the said product, and in what scenarios they’d use the product. Of course, you get all this data by conducting User research.
  • Specify requirements- identify product requirements (business requirements and user goals crucial to the success of the product) 
  • Ideate and develop solutions- ideate, prototype, and develop solutions.
  • Evaluate product- evaluate the solution with respect to the context of use and requirements.

Ideally, the aforementioned phases ought to be carried out step by step and iteratively in order to refine the ‘rough edges’ of the product.

UCD Process


Design thinking on the other hand is an iterative, non-linear approach to problem-solving. Like UCD, Design thinking lays emphasis on placing the users and their interests at the heart of the design process. It seeks to understand problems from the user’s perspective, redefine, and then come up with possible solutions to the said problem. Unlike UCD, the process outlined by Design Thinking facilitates innovation and creativity which is why it is seen as a more suitable approach to solving very challenging problems, otherwise known as Wicked Problems. Design thinking outlines a five-phase process;

  • Empathize- research your users, understand their needs, try to see the problem from their perspective.
  • Define- gather, analyze, and synthesize the user research data to form the problem statement (or Point of view, POV). 
  • Ideate- generate innovative ideas and single out the most suitable by carefully evaluating them (typically based on Feasibility, Viability, Desirability, and set requirements).
  • Prototype- create wireframes to bring your solutions to life (preferably Low or Mid-Fidelity wireframes; you want something you can quickly iterate on). Prototyping & Wireframing tools like Whimsical, Adobe XD, Sketch, Invision Studio, etc will come in handy at this point.
  • Test- Try out the prototype (usually interactive high fidelity wireframes) on real-life users in real-life scenarios. 

Design Thinking Process


Something for you to better understand

A few years ago, I had to travel to Lagos for a job interview. Prior to this, I had not been to Lagos, well, not since I became aware of my environment. Luckily for me, that wasn’t really a problem; I had family in Lagos with whom I could stay. I also knew exactly where I was going so all I needed, basically, was a ride-hailing service (fortunately there was a reliable one at that time).

Now, imagine a scenario where I did not have anyone to stay with or to tell me where I should and shouldn’t go; that’d be a problem, wouldn’t it?

We have a problem to work with now, let’s run it through the Design Thinking process to see how we can come up with an app that would tackle the said problem.


The Empathize Stage: Our primary goal in this stage is to gain an empathic understanding of our users with respect to their problems through research. Typically, we’d have our own assumptions about what it is users pass through in scenarios like this, it’s important that we abandon these assumptions but document them first before we proceed with our research.

There are many ways to go about user research and interviews, but true empathy is in feeling and goes beyond just interviews; we may need to place ourselves in scenarios that expose the said problem or observe people facing the problem. After conducting our ‘empathic’ research, we’re left with invaluable data; data that will validate or invalidate our assumptions with better insight and help us draft our user persona(s).


The Define Stage: Here we want to redefine the problem to form our Problem Statement. We do this by analyzing and synthesizing the data from the Empathize stage. The ideal problem statement ought to be human-centered and actionable (actionable in the sense that it should facilitate ideation). It should comprise three main elements; user, need, and insight. With our hypothetical problem in mind, this is what our problem statement would look like;

Jackson Doe (user), a businessman, needs a guide and a safe & affordable place to stay in Lagos (need)… because he is to attend a two-week business conference in the city; a city he has never been to and is sort of on a tight budget (insight).

From the above problem statement, we can begin to understand what sort of app this could be and what features the app could wear. 


The Ideate Stage: After we’ve formulated our problem statement, we can now begin ideation. Here we want to come up with innovative, outside-the-box ideas to tackle the problem at hand. One very effective way to kick off this stage is to wrap the problem statement in ‘How Might We?’ questions. 

‘How Might We?’ questions are particularly effective because they break down the problem statement into even more actionable chunks, this makes it easier to come up with possible solutions/features. If we were to do this, we’d have questions like these;

  • How might we help Jackson find a safe place to say?
  • How might we help Jackson find his way around town?
  • How might we make Jackson’s stay in City X a stress-free one?
  • How might we digitize the experience of having a guide?

There are numerous ideation techniques out there, ranging from Brainstorming, Braindump, Brainwalk, Sketching, to the Seven Thinking Hats. I’m not going to elaborate on any of them but it’s important to note that at this point the goal is to generate as many ideas as possible (Quantity before Quality).

So let’s say we go with Brainstorming (hypothetically) and we’ve been able to come up with a significant amount of ideas for features the app could wear and if possible how the app could look. Surely, not all of these ideas would fly; as such, we’re required to do some evaluation based on Usability, Desirability, Feasibility, and the set requirements. 


The Prototype Stage: After we must have evaluated our ideas, we’re left with usable, feasible, and desirable features for an app that would tackle our problem. Unlike other products, applications are prototyped using Wireframes. There are three categories of wireframes; Low-Fidelity, Mid-Fidelity, and High-Fidelity. Low-Fidelity wireframes are the quickest to create. As a result, they are most suitable in situations where time is a scarce commodity. Basically, the higher you go, the more the detail and cost of creating one. Find out more about Wireframes & Prototypes here. 

The main purpose of creating these wireframes is to bring our ideas to life and test them (on people and in real-life scenarios). There are a plethora of wireframing/prototyping tools to choose from depending on the level of detail you wish to achieve. Some of these tools include; Whimsical, Adobe XD, Figma, Sketch, Invision Studio, etc. Amongst the aforementioned, Whimsical is particularly good for Low-Fidelity and Mid-Fidelity Wireframing as it offers a plethora of components to aid you in the process.


Finally, The Test Stage: At this point, we must have created our wireframes and it is now time to observe how our design fares in real-life situations that expose the problem we’re trying to solve. But first, we have to turn our wireframes into test-ready Prototypes; we do this by adding some interactions and animations. These types of tests will often expose certain shortcomings which surface as a result of details we may have missed.

Test ready High Fidelity Prototype.

Now we have conducted our tests and some flaws in our design have been exposed. In Design Thinking, these flaws are seen as new insights; insights that we will run through the Design Thinking process again, basically to further refine our app’s design until we can confidently say it is ready for development.

Remember I defined Design Thinking as a non-linear approach, what that means is, when we decide to run our newly discovered insights through the design thinking process, we do not necessarily have to start from the first stage (Empathize). Where we start depends entirely on the insights we get from our tests; sometimes we may be required to start from the Empathize stage, other times, the Define stage.

In conclusion, I’d like to reiterate the two important things required to design an app that solves problems which are also emphasized in the aforementioned design approaches. First, we have to make sure that the said problem is in fact a problem people are facing. Second, we have to make sure that the solution we have come up with is in fact usable and offers a positive experience to users.

About the Author

Let's connect


Message Sent