Design Thinking: A Framework for Creating Human-Centered Products
September 16, 2024
With over 10 years of experience in mobile gaming, I’ve been part of the creation and development of more than 20 games, including one that crossed the billion-dollar mark in lifetime revenues—yes, one of those unicorns you hear about but rarely see up close 😄.
A concept that has completely changed how I approach product development is Design Thinking. Whether you’re in the early stages of ideating a brand-new product, brainstorming features for an existing one, or even pivoting a project entirely, Design Thinking offers a flexible yet structured approach to solving real problems by keeping the focus on the user.
Diego Barragán, our Head of Studio —and hands down the most remarkable leader I’ve worked with— introduced me to this framework many years ago. His leadership pulled me, a well-established and recognized programmer, out of my comfort zone and into the streets to conduct random interviews with strangers. This raw, unfiltered feedback was eye-opening, and I quickly realized how essential user insight is to solving real-world problems.
Design Thinking isn’t just a framework; it’s a way of continuously refining solutions, whether you’re brainstorming, building features, or pivoting an idea. Let’s break down the six stages—Reframe, Empathize, Define, Ideate, Prototype, and Test—and explore how they drive meaningful, human-centered solutions.
Reframe: Shifting the Focus
Design Thinking often begins with Reframing the problem. Instead of jumping straight into solutions based on assumptions, reframing allows us to pause, step back, and reconsider the challenge from different perspectives. This step is crucial for breaking away from cognitive biases, like anchoring, which can trap us in the first idea we think is “worthy.”
If you’re unfamiliar with this, think of it as a way to rethink the challenge from new angles. By shifting focus, you can identify the real problem and not just its symptoms.
For example, imagine you’re working on an app designed to help people stay active. Initially, the question might be, “How can we get users to exercise more frequently?” While this sounds reasonable, it assumes motivation is the main issue. By reframing, you could ask, “How can we make it easier for users to fit exercise into their daily routines?” This slight shift leads to entirely different possibilities, like offering short, efficient workouts or even encouraging movement while waiting for coffee to brew.
This shift in perspective is not just about changing the question—it’s about systematically reinterpreting the challenge from different angles. You begin to explore how each stakeholder involved (users, coaches, fitness experts) has explicit needs, and how the solution can address those needs in a way that feels natural and aligned with their routines. Reframing allows you to look beyond obvious solutions and discover opportunities for more meaningful innovation.
By focusing on the core challenge and expanding the dimensions of the problem, you can generate a wider array of solutions that go beyond the surface, helping you design experiences that better fit the users’ lives.
Empathize: Understanding Your Users
Once you’ve reframed the problem, the next step is to truly empathize with the people who will be using your product. Empathy isn’t just about gathering data—it’s about understanding the user’s emotional landscape, their day-to-day challenges, and their deeper needs. This requires more than just surveys or metrics; it involves real, human connection.
To develop this understanding, it’s helpful to use a mix of empathy methods—from interviews and observation, to more creative techniques like metaphor elicitation or shadowing. For instance, if you’re designing an app for elderly users to manage medications, you might spend time observing how they go through their daily routines, talking to their caregivers, and even living through some of their typical day-to-day tasks. This uncovers nuances that data alone can’t capture, such as difficulty reading small text or forgetting to open the app altogether.
A key part of empathizing is understanding that it’s not about sympathizing, but rather about seeing the world from their perspective. Through this, you’ll uncover latent knowledge—the unspoken challenges and needs users may not even realize they have. It’s not just about what users say or do; it’s also about noticing what they don’t say, what they feel, dream, or think, often unconsciously.
To structure these insights, teams often use personas, which represent real, extreme users. Personas help guide empathy by focusing on actual behaviors and needs rather than hypothetical assumptions. Defining these personas based on dimensions like age, habits, or conditions allows you to better understand different user groups and the specific challenges they face. These personas are not stereotypes but detailed, research-driven profiles that help ground the design process in reality.
The empathy phase is where you’ll start asking why—repeatedly. For instance, you might find that a user has difficulty managing their medications. But why? Is it because they don’t understand the instructions? Or is it a deeper issue, like difficulty concentrating or anxiety around their health? By continuously asking “why,” you begin to uncover the true motivations, frustrations, and desires that will drive your design.
This deeper understanding of your users is what sets the foundation for creating solutions that not only address their explicit needs but also their unspoken, emotional drivers.
Define: Clarifying the Problem
After gathering insights, the next step is to define the problem clearly. This is where the team aligns on what the actual challenge is, ensuring that the focus stays on solving the real issue rather than getting lost in unnecessary features. Defining the problem properly lays the foundation for everything that follows.
Instead of jumping straight into brainstorming, it helps to take a step back and look at the problem through narratives, storytelling, and empathy maps. For example, after spending time with elderly users and caregivers, the challenge might shift from “How can we make a medication app?” to something more meaningful like “Elderly users need a simple and accessible way to track their medications because managing multiple prescriptions can be overwhelming and stressful.”
Tools like empathy maps can help identify what users say, do, think, and feel, shedding light on hidden needs and frustrations. Maybe a user says they “don’t mind managing prescriptions,” but their actions show hesitation when using the app, or they feel anxious about missing doses. These insights often reveal contradictions that help shape a clearer, user-centered problem statement.
By distilling these insights into a concise point of view, the whole team stays aligned and can move forward with a deep understanding of the problem they’re solving. This clarity ensures that when it’s time to ideate and prototype, the solutions are genuinely solving user pain points, not just adding more features for the sake of it.
Ideate: Generating Creative Solutions
Now that you’ve clearly defined the problem, it’s time to dive into Ideation. This stage is all about unleashing creativity, brainstorming as many ideas as possible without worrying about whether they’re perfect or even feasible right away. The goal is to open up possibilities and explore a wide range of solutions because, as Linus Pauling famously said, “The best way to have good ideas is to create many and eliminate the bad ones”.
Ideation often starts with a divergent thinking approach, where the focus is on generating quantity rather than quality. The more ideas you generate, the more likely you are to hit on something truly innovative. Later, convergent thinking comes into play, where you filter, prioritize, and refine the ideas, leading to the development of more concrete concepts.
One method that can help spark creativity is SCAMPER, a technique that encourages you to ask specific types of questions to push your thinking further. SCAMPER stands for Substitute, Combine, Adapt, Modify, Put to Another Use, Eliminate, and Rearrange. Let’s say you’re developing a meal-planning app for families. You might ask: “How can we combine meal planning with grocery delivery to streamline the process?” or “What can we eliminate from the current process to make it faster and less stressful for busy parents?”
In this stage, it’s important to foster an environment that encourages wild ideas and lateral thinking. Here are some tips to keep in mind during brainstorming sessions:
- Go for quantity – The more ideas, the better. Even the absurd ones can lead to inspired solutions.
- No blocking or judging – Ideas should flow freely without criticism.
- “Yes, and…” mindset – Build on the ideas of others rather than shutting them down.
- Be visual – Sometimes sketching out ideas or mapping them visually can trigger new perspectives.
- Embrace cognitive stress – The best ideas often come after the obvious ones have been exhausted.
Once you’ve generated a wide range of ideas, the next step is to begin filtering them. A useful way to do this is by grouping ideas into single-dimensional concepts first, where each idea addresses a specific aspect of the problem. After this, you can merge these ideas into multi-dimensional concepts that offer more robust solutions by combining different aspects into a cohesive whole.
An important part of this phase is to stay conscious of the prioritization process. You’ll need to evaluate ideas based on their feasibility, potential impact, and how well they align with your user’s needs. One effective way to do this is through inductive questioning, where you take each idea and ask “How might we…?” questions to explore its full potential. For example, “How might we help users plan meals with minimal ingredients?” or “How might we adapt the meal-planning process for users with dietary restrictions?”
Prototype: Building to Learn
The next step is to Prototype. Prototyping is about creating a simple, low-cost version of your solution to test with users. It’s not about building something polished or perfect; instead, the goal is to learn quickly and make adjustments based on feedback. By testing early and often, you can identify problems, refine your ideas, and iterate without investing too much time or resources.
There are different types of prototypes depending on what you’re trying to learn. Low-fidelity prototypes, like sketches or paper mockups, allow you to experiment and explore ideas cheaply and quickly. These are especially useful in the early stages when you’re looking to test assumptions and gather broad feedback. On the other hand, high-fidelity prototypes, such as clickable mockups or working models, offer more detail and can be used to validate specific interactions or features.
For example, in the medication management app, an initial prototype could be a basic, clickable mockup that demonstrates how the reminder system works. This could help you quickly see if users understand how to set and manage reminders, without having to develop the entire app. By observing how users interact with your prototype, you’ll gain insights into what works and what needs improvement.
The key to successful prototyping is understanding that failure is part of the process. A prototype allows you to test different approaches and fail fast—so you can learn what doesn’t work and improve before committing to larger investments in development.
Prototyping is an ongoing process of experimentation. You might start with a low-fidelity prototype to test broad concepts, then move to a higher-fidelity version to fine-tune specific interactions. The ultimate goal is not just to create a prototype, but to iterate based on real user feedback until you have a solution that truly meets their needs.
Test: Learning Through Feedback
The Test phase is where you take your prototype and put it in front of real users to gather valuable feedback. The objective here isn’t to confirm that everything works perfectly; rather, it’s to learn what works, what doesn’t, and where improvements are needed. Testing is about real-world interactions—it’s the ultimate reality check.
During testing, you can use a feedback matrix to categorize user input into four areas:
- What users liked (The Good): These are the aspects of your prototype that users found helpful or enjoyable. You can build on these strengths in future iterations.
- Questions and doubts: Any uncertainties or confusion that users express. These need clarification in the next version.
- Wishes and critiques: Feedback about features users would like to see or aspects they didn’t like. This helps guide what to improve or eliminate.
- New ideas: Testing often sparks new ideas. These suggestions can offer fresh perspectives and sometimes lead to even better solutions.
For example, imagine you test the medication management app with elderly users. While they may appreciate the reminders, they might struggle with adjusting the settings. This type of feedback is incredibly valuable—it reveals where the design is falling short and highlights areas for improvement. Instead of guessing or assuming, real-world testing shows you how users actually interact with your product, guiding your next steps.
The process doesn’t end after one round of testing. Iterating based on feedback is key to refining the solution. Each test is a learning experience that brings you closer to a design that truly works for your users. Lean development encourages this mindset: it’s not about pass or fail; it’s about continuous improvement. The best ideas often evolve through multiple cycles of testing and refinement, helping you create a more polished and user-friendly solution.