Smart. Open. Grounded. Inventive. Read our Ideas Made to Matter.

Which program is right for you?

MIT Sloan Campus life

Through intellectual rigor and experiential learning, this full-time, two-year MBA program develops leaders who make a difference in the world.

A rigorous, hands-on program that prepares adaptive problem solvers for premier finance careers.

A 12-month program focused on applying the tools of modern data science, optimization and machine learning to solve real-world business problems.

Earn your MBA and SM in engineering with this transformative two-year program.

Combine an international MBA with a deep dive into management science. A special opportunity for partner and affiliate schools only.

A doctoral program that produces outstanding scholars who are leading in their fields of research.

Bring a business perspective to your technical and quantitative expertise with a bachelor’s degree in management, business analytics, or finance.

A joint program for mid-career professionals that integrates engineering and systems thinking. Earn your master’s degree in engineering and management.

An interdisciplinary program that combines engineering, management, and design, leading to a master’s degree in engineering and management.

Executive Programs

A full-time MBA program for mid-career leaders eager to dedicate one year of discovery for a lifetime of impact.

This 20-month MBA program equips experienced executives to enhance their impact on their organizations and the world.

Non-degree programs for senior executives and high-potential managers.

A non-degree, customizable program for mid-career professionals.

Making generative AI work in the enterprise: New from MIT SMR

How to tap AI’s potential while avoiding its pitfalls

Banks’ climate pledges don’t add up to change, research finds

Credit: Mimi Phan

Ideas Made to Matter

Design thinking, explained

Rebecca Linke

Sep 14, 2017

What is design thinking?

Design thinking is an innovative problem-solving process rooted in a set of skills.The approach has been around for decades, but it only started gaining traction outside of the design community after the 2008 Harvard Business Review article [subscription required] titled “Design Thinking” by Tim Brown, CEO and president of design company IDEO.

Since then, the design thinking process has been applied to developing new products and services, and to a whole range of problems, from creating a business model for selling solar panels in Africa to the operation of Airbnb .

At a high level, the steps involved in the design thinking process are simple: first, fully understand the problem; second, explore a wide range of possible solutions; third, iterate extensively through prototyping and testing; and finally, implement through the customary deployment mechanisms. 

The skills associated with these steps help people apply creativity to effectively solve real-world problems better than they otherwise would. They can be readily learned, but take effort. For instance, when trying to understand a problem, setting aside your own preconceptions is vital, but it’s hard.

Creative brainstorming is necessary for developing possible solutions, but many people don’t do it particularly well. And throughout the process it is critical to engage in modeling, analysis, prototyping, and testing, and to really learn from these many iterations.

Once you master the skills central to the design thinking approach, they can be applied to solve problems in daily life and any industry.

Here’s what you need to know to get started.

Infographic of the design thinking process

Understand the problem 

The first step in design thinking is to understand the problem you are trying to solve before searching for solutions. Sometimes, the problem you need to address is not the one you originally set out to tackle.

“Most people don’t make much of an effort to explore the problem space before exploring the solution space,” said MIT Sloan professor Steve Eppinger. The mistake they make is to try and empathize, connecting the stated problem only to their own experiences. This falsely leads to the belief that you completely understand the situation. But the actual problem is always broader, more nuanced, or different than people originally assume.

Take the example of a meal delivery service in Holstebro, Denmark. When a team first began looking at the problem of poor nutrition and malnourishment among the elderly in the city, many of whom received meals from the service, it thought that simply updating the menu options would be a sufficient solution. But after closer observation, the team realized the scope of the problem was much larger , and that they would need to redesign the entire experience, not only for those receiving the meals, but for those preparing the meals as well. While the company changed almost everything about itself, including rebranding as The Good Kitchen, the most important change the company made when rethinking its business model was shifting how employees viewed themselves and their work. That, in turn, helped them create better meals (which were also drastically changed), yielding happier, better nourished customers.

Involve users

Imagine you are designing a new walker for rehabilitation patients and the elderly, but you have never used one. Could you fully understand what customers need? Certainly not, if you haven’t extensively observed and spoken with real customers. There is a reason that design thinking is often referred to as human-centered design.

“You have to immerse yourself in the problem,” Eppinger said.

How do you start to understand how to build a better walker? When a team from MIT’s Integrated Design and Management program together with the design firm Altitude took on that task, they met with walker users to interview them, observe them, and understand their experiences.  

“We center the design process on human beings by understanding their needs at the beginning, and then include them throughout the development and testing process,” Eppinger said.

Central to the design thinking process is prototyping and testing (more on that later) which allows designers to try, to fail, and to learn what works. Testing also involves customers, and that continued involvement provides essential user feedback on potential designs and use cases. If the MIT-Altitude team studying walkers had ended user involvement after its initial interviews, it would likely have ended up with a walker that didn’t work very well for customers. 

It is also important to interview and understand other stakeholders, like people selling the product, or those who are supporting the users throughout the product life cycle.

The second phase of design thinking is developing solutions to the problem (which you now fully understand). This begins with what most people know as brainstorming.

Hold nothing back during brainstorming sessions — except criticism. Infeasible ideas can generate useful solutions, but you’d never get there if you shoot down every impractical idea from the start.

“One of the key principles of brainstorming is to suspend judgment,” Eppinger said. “When we're exploring the solution space, we first broaden the search and generate lots of possibilities, including the wild and crazy ideas. Of course, the only way we're going to build on the wild and crazy ideas is if we consider them in the first place.”

That doesn’t mean you never judge the ideas, Eppinger said. That part comes later, in downselection. “But if we want 100 ideas to choose from, we can’t be very critical.”

In the case of The Good Kitchen, the kitchen employees were given new uniforms. Why? Uniforms don’t directly affect the competence of the cooks or the taste of the food.

But during interviews conducted with kitchen employees, designers realized that morale was low, in part because employees were bored preparing the same dishes over and over again, in part because they felt that others had a poor perception of them. The new, chef-style uniforms gave the cooks a greater sense of pride. It was only part of the solution, but if the idea had been rejected outright, or perhaps not even suggested, the company would have missed an important aspect of the solution.

Prototype and test. Repeat.

You’ve defined the problem. You’ve spoken to customers. You’ve brainstormed, come up with all sorts of ideas, and worked with your team to boil those ideas down to the ones you think may actually solve the problem you’ve defined.

“We don’t develop a good solution just by thinking about a list of ideas, bullet points and rough sketches,” Eppinger said. “We explore potential solutions through modeling and prototyping. We design, we build, we test, and repeat — this design iteration process is absolutely critical to effective design thinking.”

Repeating this loop of prototyping, testing, and gathering user feedback is crucial for making sure the design is right — that is, it works for customers, you can build it, and you can support it.

“After several iterations, we might get something that works, we validate it with real customers, and we often find that what we thought was a great solution is actually only just OK. But then we can make it a lot better through even just a few more iterations,” Eppinger said.


The goal of all the steps that come before this is to have the best possible solution before you move into implementing the design. Your team will spend most of its time, its money, and its energy on this stage.

“Implementation involves detailed design, training, tooling, and ramping up. It is a huge amount of effort, so get it right before you expend that effort,” said Eppinger.

Design thinking isn’t just for “things.” If you are only applying the approach to physical products, you aren’t getting the most out of it. Design thinking can be applied to any problem that needs a creative solution. When Eppinger ran into a primary school educator who told him design thinking was big in his school, Eppinger thought he meant that they were teaching students the tenets of design thinking.

“It turns out they meant they were using design thinking in running their operations and improving the school programs. It’s being applied everywhere these days,” Eppinger said.

In another example from the education field, Peruvian entrepreneur Carlos Rodriguez-Pastor hired design consulting firm IDEO to redesign every aspect of the learning experience in a network of schools in Peru. The ultimate goal? To elevate Peru’s middle class.

As you’d expect, many large corporations have also adopted design thinking. IBM has adopted it at a company-wide level, training many of its nearly 400,000 employees in design thinking principles .

What can design thinking do for your business?

The impact of all the buzz around design thinking today is that people are realizing that “anybody who has a challenge that needs creative problem solving could benefit from this approach,” Eppinger said. That means that managers can use it, not only to design a new product or service, “but anytime they’ve got a challenge, a problem to solve.”

Applying design thinking techniques to business problems can help executives across industries rethink their product offerings, grow their markets, offer greater value to customers, or innovate and stay relevant. “I don’t know industries that can’t use design thinking,” said Eppinger.

Ready to go deeper?

Read “ The Designful Company ” by Marty Neumeier, a book that focuses on how businesses can benefit from design thinking, and “ Product Design and Development ,” co-authored by Eppinger, to better understand the detailed methods.

Register for an MIT Sloan Executive Education course:

Systematic Innovation of Products, Processes, and Services , a five-day course taught by Eppinger and other MIT professors.

  • Leadership by Design: Innovation Process and Culture , a two-day course taught by MIT Integrated Design and Management director Matthew Kressy.
  • Managing Complex Technical Projects , a two-day course taught by Eppinger.
  • Apply for M astering Design Thinking , a 3-month online certificate course taught by Eppinger and MIT Sloan senior lecturers Renée Richardson Gosline and David Robertson.

Steve Eppinger is a professor of management science and innovation at MIT Sloan. He holds the General Motors Leaders for Global Operations Chair and has a PhD from MIT in engineering. He is the faculty co-director of MIT's System Design and Management program and Integrated Design and Management program, both master’s degrees joint between the MIT Sloan and Engineering schools. His research focuses on product development and technical project management, and has been applied to improving complex engineering processes in many industries.

Read next: 10 agile ideas worth sharing

Related Articles

A robot hand holds a brush on top of a collage of illustrated motor vehicles

How to solve problems with design thinking

May 18, 2023 Is it time to throw out the standard playbook when it comes to problem solving? Uniquely challenging times call for unique approaches, write Michael Birshan , Ben Sheppard , and coauthors in a recent article , and design thinking offers a much-needed fresh perspective for leaders navigating volatility. Design thinking is a systemic, intuitive, customer-focused problem-solving approach that can create significant value and boost organizational resilience. The proof is in the pudding: From 2013 to 2018, companies that embraced the business value of design had TSR that were 56 percentage points higher than that of their industry peers. Check out these insights to understand how to use design thinking to unleash the power of creativity in strategy and problem solving.

Designing out of difficult times

What is design thinking?

The power of design thinking

Leading by design

Author Talks: Don Norman designs a better world

Are you asking enough from your design leaders?

Tapping into the business value of design

Redesigning the design department

Author Talks: Design your future

A design-led approach to embracing an ecosystem strategy

More than a feeling: Ten design practices to deliver business value


How design helps incumbents build new businesses

  • Reviews / Why join our community?
  • For companies
  • Frequently asked questions

Design Thinking (DT)

What is design thinking (dt).

Design thinking is a non-linear, iterative process that teams use to understand users, challenge assumptions, redefine problems and create innovative solutions to prototype and test. It is most useful to tackle ill-defined or unknown problems and involves five phases: Empathize, Define, Ideate, Prototype and Test.

  • Transcript loading…

Why Is Design Thinking so Important?

“Design thinking is a human-centered approach to innovation that draws from the designer's toolkit to integrate the needs of people, the possibilities of technology, and the requirements for business success.”

— Tim Brown, CEO of IDEO

Design thinking fosters innovation . Companies must innovate to survive and remain competitive in a rapidly changing environment. In design thinking, cross-functional teams work together to understand user needs and create solutions that address those needs. Moreover, the design thinking process helps unearth creative solutions.

Design teams use design thinking to tackle ill-defined/unknown problems (aka wicked problems ). Alan Dix, Professor of Human-Computer Interaction, explains what wicked problems are in this video.

Wicked problems demand teams to think outside the box, take action immediately, and constantly iterate—all hallmarks of design thinking.

Don Norman, a pioneer of user experience design, explains why the designer’s way of thinking is so powerful when it comes to such complex problems.

Design thinking offers practical methods and tools that major companies like Google, Apple and Airbnb use to drive innovation. From architecture and engineering to technology and services, companies across industries have embraced the methodology to drive innovation and address complex problems. 

The End Goal of Design Thinking: Be Desirable, Feasible and Viable

Three Lenses of Design Thinking.

The design thinking process aims to satisfy three criteria: desirability (what do people desire?), feasibility (is it technically possible to build the solution?) and viability (can the company profit from the solution?). Teams begin with desirability and then bring in the other two lenses.

© Interaction Design Foundation, CC BY-SA 4.0

Desirability: Meet People’s Needs

The design thinking process starts by looking at the needs, dreams and behaviors of people—the end users. The team listens with empathy to understand what people want, not what the organization thinks they want or need. The team then thinks about solutions to satisfy these needs from the end user’s point of view.

Feasibility: Be Technologically Possible

Once the team identifies one or more solutions, they determine whether the organization can implement them. In theory, any solution is feasible if the organization has infinite resources and time to develop the solution. However, given the team’s current (or future resources), the team evaluates if the solution is worth pursuing. The team may iterate on the solution to make it more feasible or plan to increase its resources (say, hire more people or acquire specialized machinery).

At the beginning of the design thinking process, teams should not get too caught up in the technical implementation. If teams begin with technical constraints, they might restrict innovation.

Viability: Generate Profits

A desirable and technically feasible product isn’t enough. The organization must be able to generate revenues and profits from the solution. The viability lens is essential not only for commercial organizations but also for non-profits. 

Traditionally, companies begin with feasibility or viability and then try to find a problem to fit the solution and push it to the market. Design thinking reverses this process and advocates that teams begin with desirability and bring in the other two lenses later.

The Five Stages of Design Thinking

Stanford University’s Hasso Plattner Institute of Design, commonly known as the, is renowned for its pioneering approach to design thinking. Their design process has five phases: Empathize, Define, Ideate, Prototype, and Test. These stages are not always sequential. Teams often run them in parallel, out of order, and repeat them as needed.

Stage 1: Empathize —Research Users' Needs

The team aims to understand the problem, typically through user research. Empathy is crucial to design thinking because it allows designers to set aside your assumptions about the world and gain insight into users and their needs.

Stage 2: Define—State Users' Needs and Problems

Once the team accumulates the information, they analyze the observations and synthesize them to define the core problems. These definitions are called problem statements . The team may create personas to help keep efforts human-centered.

Stage 3: Ideate—Challenge Assumptions and Create Ideas

With the foundation ready, teams gear up to “think outside the box.” They brainstorm alternative ways to view the problem and identify innovative solutions to the problem statement.

Stage 4: Prototype—Start to Create Solutions

This is an experimental phase. The aim is to identify the best possible solution for each problem. The team produces inexpensive, scaled-down versions of the product (or specific features found within the product) to investigate the ideas. This may be as simple as paper prototypes .

Stage 5: Test—Try the Solutions Out

The team tests these prototypes with real users to evaluate if they solve the problem. The test might throw up new insights, based on which the team might refine the prototype or even go back to the Define stage to revisit the problem.

These stages are different modes that contribute to the entire design project rather than sequential steps. The goal is to gain a deep understanding of the users and their ideal solution/product.

Design Thinking: A Non-Linear Process

Design Thinking Frameworks

There is no single definition or process for design thinking. The five-stage design thinking methodology described above is just one of several frameworks.

Hasso-Platner Institute Panorama

Ludwig Wilhelm Wall, CC BY-SA 3.0 , via Wikimedia Commons

Innovation doesn’t follow a linear path or have a clear-cut formula. Global design leaders and consultants have interpreted the abstract design process in different ways and have proposed other frameworks of design thinking.

Head, Heart and Hand by the American Institution of Graphic Arts (AIGA)

The Head, Heart, and Hand approach by AIGA (American Institute of Graphic Arts) is a holistic perspective on design. It integrates the intellectual, emotional, and practical aspects of the creative process.

problem solving and system design

More than a process, the Head, Heart and Hand framework outlines the different roles that designers must perform to create great results.

© American Institute of Graphic Arts, Fair Use

“ Head ” symbolizes the intellectual component. The team focuses on strategic thinking, problem-solving and the cognitive aspects of design. It involves research and analytical thinking to ensure that design decisions are purposeful.

“ Heart ” represents the emotional dimension. It emphasizes empathy, passion, and human-centeredness. This aspect is crucial in understanding the users’ needs, desires, and experiences to ensure that designs resonate on a deeper, more personal level.

“ Hand ” signifies the practical execution of ideas, the craftsmanship, and the skills necessary to turn concepts into tangible solutions. This includes the mastery of tools, techniques, and materials, as well as the ability to implement and execute design ideas effectively.

Inspire, Ideate, Implement by IDEO

IDEO is a leading design consultancy and has developed its own version of the design thinking framework.

The 3 core activities of deisgn thinking, by IDEO.

IDEO’s design thinking process is a cyclical three-step process that involves Inspiration, Ideation and Implementation.

© IDEO, Public License

In the “ Inspire ” phase, the team focuses on understanding users’ needs, behaviors, and motivations. The team empathizes with people through observation and user interviews to gather deep insights.

In the “ Ideate ” phase, the team synthesizes the insights gained to brainstorm a wide array of creative solutions. This stage encourages divergent thinking, where teams focus on quantity and variety of ideas over immediate practicality. The goal is to explore as many possibilities as possible without constraints.

In the “ Implement ” phase, the team brings these ideas to life through prototypes. The team tests, iterates and refines these ideas based on user feedback. This stage is crucial for translating abstract concepts into tangible, viable products, services, or experiences.

The methodology emphasizes collaboration and a multidisciplinary approach throughout each phase to ensure solutions are innovative and deeply rooted in real human needs and contexts.

The Double Diamond by the Design Council

In the book Designing Social Systems in a Changing World , Béla Heinrich Bánáthy, Professor at San Jose State University and UC Berkeley, created a “divergence-convergence model” diagram. The British Design Council interpreted this diagram to create the Double Diamond design process model.

Design Council's Double Diamond

As the name suggests, the double diamond model consists of two diamonds—one for the problem space and the other for the solution space. The model uses diamonds to represent the alternating diverging and converging activities.

© Design Council, CC BY 4.0

In the diverging “ Discover ” phase, designers gather insights and empathize with users’ needs. The team then converges in the “ Define ” phase to identify the problem.

The second, solution-related diamond, begins with “ Develop ,” where the team brainstorms ideas. The final stage is “ Deliver ,” where the team tests the concepts and implements the most viable solution.

This model balances expansive thinking with focused execution to ensure that design solutions are both creative and practical. It underscores the importance of understanding the problem thoroughly and carefully crafting the solution, making it a staple in many design and innovation processes.

problem solving and system design

With the widespread adoption of the double diamond framework, Design Council’s simple visual evolved.

In this expanded and annotated version, the framework emphasizes four design principles:

Be people-centered.

Communicate (visually and inclusively).

Collaborate and co-create.

Iterate, iterate, iterate!

The updated version also highlights the importance of leadership (to create an environment that allows innovation) and engagement (to connect with different stakeholders and involve them in the design process).

Common Elements of Design Thinking Frameworks

On the surface, design thinking frameworks look very different—they use alternative names and have different numbers of steps. However, at a fundamental level, they share several common traits.

problem solving and system design

Start with empathy . Focus on the people to come up with solutions that work best for individuals, business, and society.

Reframe the problem or challenge at hand . Don’t rush into a solution. Explore the problem space and look at the issue through multiple perspectives to gain a more holistic, nuanced understanding.

Initially, employ a divergent style of thinking (analyze) . In the problem space, gather as many insights as possible. In the solution space, encourage team members to generate and explore as many solutions as possible in an open, judgment-free ideation space.

Later, employ a convergent style of thinking (synthesize) . In the problem space, synthesize all data points to define the problem. In the solution space, whittle down all the ideas—isolate, combine and refine potential solutions to create more mature ideas.

Create and test prototypes . Solutions that make it through the previous stages get tested further to remove potential issues.

Iterate . As the team progresses through the various stages, they revisit different stages and may redefine the challenge based on new insights.

Five stages in the design thinking process.

Design thinking is a non-linear process. For example, teams may jump from the test stage to the define stage if the tests reveal insights that redefine the problem. Or, a prototype might spark a new idea, prompting the team to step back into the ideate stage. Tests may also create new ideas for projects or reveal insights about users.

Design Thinking Mindsets: More than a Process

problem solving and system design

A mindset is a characteristic mental attitude that determines how one interprets and responds to situations . Design thinking mindsets are how individuals think , feel and express themselves during design thinking activities. It includes people’s expectations and orientations during a design project.

Without the right mindset, it can be very challenging to change how we work and think.

The key mindsets that ensure a team can successfully implement design thinking are.

Be empathetic: Empathy is the ability to place yourself, your thinking and feelings in another person’s shoes. Design thinking begins from a deep understanding of the needs and motivations of people—the parents, neighbors, children, colleagues, and strangers who make up a community. 

Be collaborative: No one person is responsible for the outcome when you work in a team. Several great minds are always stronger than just one. Design thinking benefits from the views of multiple perspectives and lets others’ creativity bolster your own.

Be optimistic: Be confident about achieving favorable outcomes. Design thinking is the fundamental belief that we can all create change—no matter how big a problem, how little time, or how small a budget. Designing can be a powerful process no matter what constraints exist around you.

Embrace ambiguity: Get comfortable with ambiguous and complex situations. If you expect perfection, it is difficult to take risks, which limits your ability to create radical change. Design thinking is all about experimenting and learning by doing. It gives you the confidence to believe that new, better things are possible and that you can help make them a reality. 

Be curious: Be open to different ideas. Recognize that you are not the user.

Reframe: Challenge and reframe assumptions associated with a given situation or problem. Don’t take problems at face value. Humans are primed to look for patterns. The unfortunate side effect of these patterns is that we form (often false and sometimes dangerous) stereotypes and assumptions. Design thinking aims to help you break through any preconceived notions and biases and reframe challenges.

Embrace diversity: Work with and engage people with different cultural backgrounds, experiences, and ways of thinking and working. Everyone brings a unique perspective to the team. When you include diverse voices in a team, you learn from each other’s experiences, further helping you break through your assumptions.

Make tangible: When you make ideas tangible, it is faster and easier for everyone on the team to be on the same page. For example, sketching an idea or enacting a scenario is far more convenient and easy to interpret than an elaborate presentation or document.

Take action: Run experiments and learn from them.

Design Thinking vs Agile Methodology

Teams often use design thinking and agile methodologies in project management, product development, and software development. These methodologies have distinct approaches but share some common principles.

Similarities between Design Thinking and Agile

Iterative process.

Both methodologies emphasize iterative development. In design thinking, teams may jump from one phase to another, not necessarily in a set cyclical or linear order. For example, on testing a prototype, teams may discover something new about their users and realize that they must redefine the problem. Agile teams iterate through development sprints.


The agile and design thinking methodologies focus on the end user. All design thinking activities—from empathizing to prototyping and testing—keep the end users front and center. Agile teams continually integrate user feedback into development cycles.

Collaboration and Teamwork

Both methodologies rely heavily on collaboration among cross-functional teams and encourage diverse perspectives and expertise.

Flexibility and Adaptability

With its focus on user research, prototyping and testing, design thinking ensures teams remain in touch with users and get continuous feedback. Similarly, agile teams monitor user feedback and refine the product in a reasonably quick time.

problem solving and system design

In this video, Laura Klein, author of Build Better Products , describes a typical challenge designers face on agile teams. She encourages designers to get comfortable with the idea of a design not being perfect. Notice the many parallels between Laura’s advice for designers on agile teams and the mindsets of design thinking.

Differences between Design Thinking and Agile

While design thinking and agile teams share principles like iteration, user focus, and collaboration, they are neither interchangeable nor mutually exclusive. A team can apply both methodologies without any conflict.

From a user experience design perspective, design thinking applies to the more abstract elements of strategy and scope. At the same time, agile is more relevant to the more concrete elements of UX: structure, skeleton and surface. For quick reference, here’s an overview of the five elements of user experience.

Design thinking is more about exploring and defining the right problem and solution, whereas agile is about efficiently executing and delivering a product.

Here are the key differences between design thinking and agile.

Design Thinking

It primarily originates in design and borrows from multiple disciplines, including psychology, systems thinking, and business strategy.

It primarily originates from software development and borrows from disciplines such as manufacturing and project management.

Primary Focus

Problem-solving and innovative solutions.

Efficient product delivery.

Phase of Application

Usually, toward the beginning of a project. Aims to define the problem and test and pick a solution.

Usually, after teams have a clear solution. Aims to deliver that solution and continuously iterate on the live product.

Structure and Documentation

Fluid process, less formal and relatively lesser documentation.

Structured and formal process with extensive documentation.

End product

An idea or solution, usually with a prototype, may not be tangible.

Tangible, working product (usually software) shipped to end users.

Design Sprint: A Condensed Version of Design Thinking

A design sprint is a 5-day intensive workshop where cross-functional teams aim to develop innovative solutions.

The design sprint is a very structured version of design thinking that fits into the timeline of a sprint (a sprint is a short timeframe in which agile teams work to produce deliverables). Developed by Google Ventures, the design sprint seeks to fast-track innovation.

In this video, user researcher Ditte Hvas Mortensen explains the design sprint in detail.

Learn More about Design Thinking

Design consultancy IDEO’s designkit is an excellent repository of design thinking tools and case studies.

To keep up with recent developments in design thinking, read IDEO CEO Tim Brown’s blog .

Enroll in our course Design Thinking: The Ultimate Guide —an excellent guide to get you started on your design thinking projects.

Questions related to Design Thinking

You don’t need any certification to practice design thinking. However, learning about the nuances of the methodology can help you:

Pick the appropriate methods and tailor the process to suit the unique needs of your project.

Avoid common pitfalls when you apply the methods.

Better lead a team and facilitate workshops.

Increase the chances of coming up with innovative solutions.

IxDF has a comprehensive course to help you gain the most from the methodology: Design Thinking: The Ultimate Guide .

Anyone can apply design thinking to solve problems. Despite what the name suggests, non-designers can use the methodology in non-design-related scenarios. The methodology helps you think about problems from the end user’s perspective. Some areas where you can apply this process:

Develop new products with greater chances of success.

Address community-related issues (such as education, healthcare and environment) to improve society and living standards.

Innovate/enhance existing products to gain an advantage over the competition.

Achieve greater efficiencies in operations and reduce costs.

Use the Design Thinking: The Ultimate Guide course to apply design thinking to your context today.

A framework is the basic structure underlying a system, concept, or text. There are several design thinking frameworks with slight differences. However, all the frameworks share some traits. Each framework: 

Begins with empathy.

Reframes the problem or challenge at hand.

Initially employs divergent styles of thinking to generate ideas.

Later, it employs convergent styles of thinking to narrow down the best ideas,

Creates and tests prototypes.

Iterates based on the tests.

Some of the design thinking frameworks are:

5-stage design process by

7-step early traditional design process by Herbert Simon

The 5-Stage DeepDive™ by IDEO

The “Double Diamond” Design Process Model by the Design Council

Collective Action Toolkit (CAT) by Frog Design

The LUMA System of Innovation by LUMA Institute

For details about each of these frameworks, see 10 Insightful Design Thinking Frameworks: A Quick Overview .

IDEO’s 3-Stage Design Thinking Process consists of inspiration, ideation and implementation:

Inspire : The problem or opportunity inspires and motivates the search for a solution.

Ideate : A process of synthesis distills insights which can lead to solutions or opportunities for change.

Implement : The best ideas are turned into a concrete, fully conceived action plan.

IDEO is a leader in applying design thinking and has developed many frameworks. Find out more in 10 Insightful Design Thinking Frameworks: A Quick Overview .

problem solving and system design

Design Council's Double Diamond diagram depicts the divergent and convergent stages of the design process.

Béla H. Bánáthy, founder of the White Stag Leadership Development Program, created the “divergence-convergence” model in 1996. In the mid-2000s, the British Design Council made this famous as the Double Diamond model.

The Double Diamond diagram graphically represents a design thinking process. It highlights the divergent and convergent styles of thinking in the design process. It has four distinct phases:

Discover: Initial idea or inspiration based on user needs.

Define: Interpret user needs and align them with business objectives.

Develop: Develop, iterate and test design-led solutions.

Deliver: Finalize and launch the end product into the market.

Double Diamond is one of several design thinking frameworks. Find out more in 10 Insightful Design Thinking Frameworks: A Quick Overview .

There are several design thinking methods that you can choose from, depending on what stage of the process you’re in. Here are a few common design thinking methods:

User Interviews: to understand user needs, pain points, attitudes and behaviors.

5 Whys Method: to dig deeper into problems to diagnose the root cause.

User Observations: to understand how users behave in real life (as opposed to what they say they do).

Affinity Diagramming: to organize research findings.

Empathy Mapping: to empathize with users based on research insights.

Journey Mapping: to visualize a user’s experience as they solve a problem.

6 Thinking Hats: to encourage a group to think about a problem or solution from multiple perspectives.

Brainstorming: to generate ideas.

Prototyping: to make abstract ideas more tangible and test them.

Dot Voting: to select ideas.

Start applying these methods to your work today with the Design Thinking template bundle .

Design Thinking

For most of the design thinking process, you will need basic office stationery:

Pen and paper

Sticky notes

Whiteboard and markers

Print-outs of templates and canvases as needed (such as empathy maps, journey maps, feedback capture grid etc.) You can also draw these out manually.

Prototyping materials such as UI stencils, string, clay, Lego bricks, sticky tapes, scissors and glue.

A space to work in.

You can conduct design thinking workshops remotely by:

Using collaborative software to simulate the whiteboard and sticky notes.

Using digital templates instead of printed canvases.

Download print-ready templates you can share with your team to practice design thinking today.

Design thinking is a problem-solving methodology that helps teams better identify, understand, and solve business and customer problems.

When businesses prioritize and empathize with customers, they can create solutions catering to their needs. Happier customers are more likely to be loyal and organically advocate for the product.

Design thinking helps businesses develop innovative solutions that give them a competitive advantage.

Gain a competitive advantage in your business with Design Thinking: The Ultimate Guide .

Design Thinking Process Timeline

The evolution of Design Thinking can be summarised in 8 key events from the 1960s to 2004.

© Interaction Design Foundation, CC BY-SA 4.0.

Herbert Simon’s 1969 book, "The Sciences of the Artificial," has one of the earliest references to design thinking. David Kelley, founder of the design consultancy IDEO, coined the term “design thinking” and helped make it popular.

For a more comprehensive discussion on the origins of design thinking, see The History of Design Thinking .

Some organizations that have employed design thinking successfully are:

Airbnb: Airbnb used design thinking to create a platform for people to rent out their homes to travelers. The company focused on the needs of both hosts and guests . The result was a user-friendly platform to help people find and book accommodations.

PillPack: PillPack is a prescription home-delivery system. The company focused on the needs of people who take multiple medications and created a system that organizes pills by date and time. Amazon bought PillPack in 2018 for $1 billion .

Google Creative Lab: Google Creative Lab collaborated with IDEO to discover how kids physically play and learn. The team used design thinking to create Project Bloks . The project helps children develop foundational problem-solving skills "through coding experiences that are playful, tactile and collaborative.”

See more examples of design thinking and learn practical methods in Design Thinking: The Ultimate Guide .

Innovation essentially means a new idea. Design thinking is a problem-solving methodology that helps teams develop new ideas. In other words, design thinking can lead to innovation.

Human-Centered Design is a newer term for User-Centered Design

“Human-centred design is an approach to interactive systems development that aims to make systems usable and useful by focusing on the users, their needs and requirements, and by applying human factors/ergonomics, and usability knowledge and techniques. This approach enhances effectiveness and efficiency, improves human well-being, user satisfaction, accessibility and sustainability; and counteracts possible adverse effects of use on human health, safety and performance.”

— ISO 9241-210:2019(en), ISO (the International Organization for Standardization)  

User experience expert Don Norman describes human-centered design (HCD) as a more evolved form of user-centered design (UCD). The word "users" removes their importance and treats them more like objects than people. By replacing “user” with “human,” designers can empathize better with the people for whom they are designing. Don Norman takes HCD a step further and prefers the term People-Centered Design.

Design thinking has a broader scope and takes HCD beyond the design discipline to drive innovation.

People sometimes use design thinking and human-centered design to mean the same thing. However, they are not the same. HCD is a formal discipline with a specific process used only by designers and usability engineers to design products. Design thinking borrows the design methods and applies them to problems in general.

Design Sprint condenses design thinking into a 1-week structured workshop

Google Ventures condensed the design thinking framework into a time-constrained 5-day workshop format called the Design Sprint. The sprint follows one step per day of the week:

Monday: Unpack

Tuesday: Sketch

Wednesday: Decide

Thursday: Prototype

Friday: Test

Learn more about the design sprint in Make Your UX Design Process Agile Using Google’s Methodology .

Systems Thinking is a distinct discipline with a broader approach to problem-solving

“Systems thinking is a way of exploring and developing effective action by looking at connected wholes rather than separate parts.”

— Introduction to Systems thinking, Report of GSE and GORS seminar, Civil Service Live

Both HCD and Systems Thinking are formal disciplines. Designers and usability engineers primarily use HCD. Systems thinking has applications in various fields, such as medical, environmental, political, economic, human resources, and educational systems.

HCD has a much narrower focus and aims to create and improve products. Systems thinking looks at the larger picture and aims to change entire systems.

Don Norman encourages designers to incorporate systems thinking in their work. Instead of looking at people and problems in isolation, designers must look at them from a systems point of view.

In summary, UCD and HCD refer to the same field, with the latter being a preferred phrase.

Design thinking is a broader framework that borrows methods from human-centered design to approach problems beyond the design discipline. It encourages people with different backgrounds and expertise to work together and apply the designer’s way of thinking to generate innovative solutions to problems.

Systems thinking is another approach to problem-solving that looks at the big picture instead of specific problems in isolation.

The design sprint is Google Ventures’ version of the design thinking process, structured to fit the design process in 1 week.

There are multiple design thinking frameworks, each with a different number of steps and phase names. One of the most popular frameworks is the Stanford d.School 5-stage process.

Design Thinking: A Non-Linear process. Empathy helps define problem, Prototype sparks a new idea, tests reveal insights that redefine the problem, tests create new ideas for project, learn about users (empathize) through testing.

Design thinking is an iterative and non-linear process. It contains five phases: 1. Empathize, 2. Define, 3. Ideate, 4. Prototype and 5. Test. It is important to note the five stages of design thinking are not always sequential. They do not have to follow a specific order, and they can often occur in parallel or be repeated iteratively. The stages should be understood as different modes which contribute to the entire design project, rather than sequential steps.

For more details, see The 5 Stages in the Design Thinking Process .

IDEO is a leading design consultancy and has developed its own version of the design thinking framework and adds the dimension of implementation in the process.

problem solving and system design

IDEO’s framework uses slightly different terms than’s design thinking process and adds an extra dimension of implementation. The steps in the DeepDive™ Methodology are: Understand, Observe, Visualize, Evaluate and Implement.

IDEO’s DeepDive™ Methodology includes the following steps:

Understand: Conduct research and identify what the client needs and the market landscape

Observe: Similar to the Empathize step, teams observe people in live scenarios and conduct user research to identify their needs and pain points.

Visualize: In this step, the team visualizes new concepts. Similar to the Ideate phase, teams focus on creative, out-of-the-box and novel ideas.

Evaluate: The team prototypes ideas and evaluates them. After refining the prototypes, the team picks the most suitable one.

Implement: The team then sets about to develop the new concept for commercial use.

IDEO’s DeepDive™ is one of several design thinking frameworks. Find out more in 10 Insightful Design Thinking Frameworks: A Quick Overview .

Answer a Short Quiz to Earn a Gift

What are the stages in the design thinking process?

  • Brainstorm, Prototype, Design, Launch, Test
  • Define, Ideate, Research, Design, Test
  • Empathize, Define, Ideate, Prototype, Test

Why is empathy critical in the design thinking process?

  • It allows designers to understand and address the real needs of users.
  • It helps designers maintain control over the creative process.
  • It makes sure the solution is inexpensive and easy to create.

What is the primary purpose of the prototyping phase in design thinking?

  • To explore potential solutions and how they might work in real-world situations
  • To finalize the product design for mass production
  • To sell the idea to stakeholders with a high-fidelity (hi-fi) demonstration

What is a "wicked problem" in design thinking?

  • Problems that are complex, ill-defined and have no single correct answer.
  • Problems that are straightforward and have a clear, single solution.
  • Problems that are tricky, but can be solved quickly with conventional methods.

Why is the iterative process important in design thinking?

  • It allows design teams to use up all available resources.
  • It allows for the improvement of solutions based on user feedback and testing.
  • It makes sure the solution remains unchanged throughout development.

Better luck next time!

Do you want to improve your UX / UI Design skills? Join us now

Congratulations! You did amazing

You earned your gift with a perfect score! Let us send it to you.

Check Your Inbox

We’ve emailed your gift to [email protected] .

Literature on Design Thinking (DT)

Here’s the entire UX literature on Design Thinking (DT) by the Interaction Design Foundation, collated in one place:

Learn more about Design Thinking (DT)

Take a deep dive into Design Thinking (DT) with our course Design Thinking: The Ultimate Guide .

Some of the world’s leading brands, such as Apple, Google, Samsung, and General Electric, have rapidly adopted the design thinking approach, and design thinking is being taught at leading universities around the world, including Stanford, Harvard, and MIT. What is design thinking, and why is it so popular and effective?

Design Thinking is not exclusive to designers —all great innovators in literature, art, music, science, engineering and business have practiced it. So, why call it Design Thinking? Well, that’s because design work processes help us systematically extract, teach, learn and apply human-centered techniques to solve problems in a creative and innovative way—in our designs, businesses, countries and lives. And that’s what makes it so special.

The overall goal of this design thinking course is to help you design better products, services, processes, strategies, spaces, architecture, and experiences. Design thinking helps you and your team develop practical and innovative solutions for your problems. It is a human-focused , prototype-driven , innovative design process . Through this course, you will develop a solid understanding of the fundamental phases and methods in design thinking, and you will learn how to implement your newfound knowledge in your professional work life. We will give you lots of examples; we will go into case studies, videos, and other useful material, all of which will help you dive further into design thinking. In fact, this course also includes exclusive video content that we've produced in partnership with design leaders like Alan Dix, William Hudson and Frank Spillers!

This course contains a series of practical exercises that build on one another to create a complete design thinking project. The exercises are optional, but you’ll get invaluable hands-on experience with the methods you encounter in this course if you complete them, because they will teach you to take your first steps as a design thinking practitioner. What’s equally important is you can use your work as a case study for your portfolio to showcase your abilities to future employers! A portfolio is essential if you want to step into or move ahead in a career in the world of human-centered design.

Design thinking methods and strategies belong at every level of the design process . However, design thinking is not an exclusive property of designers—all great innovators in literature, art, music, science, engineering, and business have practiced it. What’s special about design thinking is that designers and designers’ work processes can help us systematically extract, teach, learn, and apply these human-centered techniques in solving problems in a creative and innovative way—in our designs, in our businesses, in our countries, and in our lives.

That means that design thinking is not only for designers but also for creative employees , freelancers , and business leaders . It’s for anyone who seeks to infuse an approach to innovation that is powerful, effective and broadly accessible, one that can be integrated into every level of an organization, product, or service so as to drive new alternatives for businesses and society.

You earn a verifiable and industry-trusted Course Certificate once you complete the course. You can highlight them on your resume, CV, LinkedIn profile or your website .

All open-source articles on Design Thinking (DT)

What is design thinking and why is it so popular.

problem solving and system design


Personas – A Simple Introduction

problem solving and system design


Stage 2 in the Design Thinking Process: Define the Problem and Interpret the Results

problem solving and system design


What is Ideation – and How to Prepare for Ideation Sessions

problem solving and system design


Affinity Diagrams: How to Cluster Your Ideas and Reveal Insights

problem solving and system design

  • 2 years ago

Stage 4 in the Design Thinking Process: Prototype

problem solving and system design

  • 3 years ago

Stage 3 in the Design Thinking Process: Ideate

problem solving and system design

  • 4 years ago

Stage 1 in the Design Thinking Process: Empathise with Your Users

problem solving and system design

Empathy Map – Why and How to Use It

problem solving and system design

What Is Empathy and Why Is It So Important in Design Thinking?

problem solving and system design

10 Insightful Design Thinking Frameworks: A Quick Overview

problem solving and system design

Define and Frame Your Design Challenge by Creating Your Point Of View and Ask “How Might We”

problem solving and system design

Design Thinking: Get Started with Prototyping

problem solving and system design


5 Common Low-Fidelity Prototypes and Their Best Practices

problem solving and system design

Design Thinking: New Innovative Thinking for New Problems

problem solving and system design

The History of Design Thinking

problem solving and system design

Test Your Prototypes: How to Gather Feedback and Maximize Learning

problem solving and system design

  • 10 mths ago

The Ultimate Guide to Understanding UX Roles and Which One You Should Go For

problem solving and system design

Stage 5 in the Design Thinking Process: Test

problem solving and system design

What Are Wicked Problems and How Might We Solve Them?

problem solving and system design

Open Access—Link to us!

We believe in Open Access and the  democratization of knowledge . Unfortunately, world-class educational materials such as this page are normally hidden behind paywalls or in expensive textbooks.

If you want this to change , cite this page , link to us, or join us to help us democratize design knowledge !

Privacy Settings

Our digital services use necessary tracking technologies, including third-party cookies, for security, functionality, and to uphold user rights. Optional cookies offer enhanced features, and analytics.

Experience the full potential of our site that remembers your preferences and supports secure sign-in.

Governs the storage of data necessary for maintaining website security, user authentication, and fraud prevention mechanisms.

Enhanced Functionality

Saves your settings and preferences, like your location, for a more personalized experience.

Referral Program

We use cookies to enable our referral program, giving you and your friends discounts.

Error Reporting

We share user ID with Bugsnag and NewRelic to help us track errors and fix issues.

Optimize your experience by allowing us to monitor site usage. You’ll enjoy a smoother, more personalized journey without compromising your privacy.

Analytics Storage

Collects anonymous data on how you navigate and interact, helping us make informed improvements.

Differentiates real visitors from automated bots, ensuring accurate usage data and improving your website experience.

Lets us tailor your digital ads to match your interests, making them more relevant and useful to you.

Advertising Storage

Stores information for better-targeted advertising, enhancing your online ad experience.

Personalization Storage

Permits storing data to personalize content and ads across Google services based on user behavior, enhancing overall user experience.

Advertising Personalization

Allows for content and ad personalization across Google services based on user behavior. This consent enhances user experiences.

Enables personalizing ads based on user data and interactions, allowing for more relevant advertising experiences across Google services.

Receive more relevant advertisements by sharing your interests and behavior with our trusted advertising partners.

Enables better ad targeting and measurement on Meta platforms, making ads you see more relevant.

Allows for improved ad effectiveness and measurement through Meta’s Conversions API, ensuring privacy-compliant data sharing.

LinkedIn Insights

Tracks conversions, retargeting, and web analytics for LinkedIn ad campaigns, enhancing ad relevance and performance.

LinkedIn CAPI

Enhances LinkedIn advertising through server-side event tracking, offering more accurate measurement and personalization.

Google Ads Tag

Tracks ad performance and user engagement, helping deliver ads that are most useful to you.

Share Knowledge, Get Respect!

or copy link

Cite according to academic standards

Simply copy and paste the text below into your bibliographic reference list, onto your blog, or anywhere else. You can also just hyperlink to this page.

New to UX Design? We’re Giving You a Free ebook!

The Basics of User Experience Design

Download our free ebook The Basics of User Experience Design to learn about core concepts of UX design.

In 9 chapters, we’ll cover: conducting user interviews, design thinking, interaction design, mobile UX design, usability, UX research, and many more!



Design thinking, innovation, user experience and healthcare design

The Six Systems Thinking Steps to Solve Complex Problems

A quick overview of common problem solving techniques indicates that most of these methods focus on the problem rather than the whole eco-system where the problem exists. Along with the challenges of global economy , problems turn out to be more complicated and sometimes awakening problems. Climate change, traffic problems, and organizational problems that have developed through the years are all complex problems that we shouldn’t look at the same way as simple or linear problems. Part of the problem of thinking about a complex problem is the way we approach it, which may contribute to making the problem even more complex. As stated by Albert Einstein, “The problems cannot be solved using the same level of thinking that created them.” Systems thinking tends to focus on the broader ecosystem rather than the problem itself.

Systems thinking was developed by Jay Forrester and members of the Society for Organizational Learning at MIT. The idea is described in his book, The Fifth Discipline , as follows: “Systems thinking is a discipline for seeing wholes. It is a framework for seeing interrelationships rather than things, for seeing patterns of change rather than static ‘snapshots.’” A common example of the systems thinking method is the life around us where multiple systems interact with each other and are affected by each other. This wide perspective of systems thinking promotes it to solve complex problems that are dependent on external factors. Below are some of the stations that system thinking may contribute to solve.

  • Complex problems that involve different factors, which require understanding the big picture in order to be efficiently solved
  • Situations that are affecting, are being affected by, or affect the surrounding systems
  • Problems that have turned more complicated by previous attempts to solve them

Concepts of Systems Thinking

In order to understand systems thinking, a number of concepts should be highlighted in order to define the relation between the problem and the other elements in the system and how to observe this relation in order to reach an effective solution. These principles include the following.

  • All systems are composed of interconnected parts, and changing one part affects the entire system, including other parts.
  • The structure of a system determines its behavior, which means that the system depends on the connection between parts rather that the part themselves.
  • System behavior is an emergent phenomenon. System behavior is hard to predict due its continuously changing, non-linear relations and its time delay. It can’t be predicted by simply inspecting its elements or structure.
  • Feedback loops control a system’s major dynamic behavior. The feedback loop is a number of connections causing an output from one part to eventually influence input to that same part. The number of feedback loops are larger than the system parts, which contributes to increasing system complicity.
  • Complex social systems exhibit counterintuitive behavior. Solving complex problems can’t be achieved through everyday problem solving methods. They can be solved only through analytical methods and tools. Solving complex problems can be achieved through systems thinking, a process that fits the problem, and system dynamics , which is an approach to model systems by emphasizing their feedback loops.

Systems Thinking in Six Steps

In their paper Six Steps to Thinking Systemically , Michael Goodman and Richard Karash introduced six steps to apply systems thinking principles while solving complex problems. These steps were part of their case study to Bijou Bottling company’s problem of getting their orders shipped on time.

Set 1: Tell the Story

The first step in solving the problem is to understand it, and this can be achieved through looking deeply at the whole system rather than individual parts. This step requires meeting with the stakeholders to share their vision about the situation. One of the common tools to build this understanding is to utilize Concept Maps, which are graphical tools used to represent the organization or a structure of knowledge. Concept Maps visually present the system’s elements, concept links, proposition statements, cross-links, and examples.

concept maps

Step 2: Draw Behavior Over Time (BOT) Graphs

When thinking about a problem, we are influenced with the current situation that is reflected in our analysis, yet the problem follows a time dimension, which means that it should be tracked through the time. The Behavior Over Time graph draws a curve that presents a specific behavior (Y) through the time (X). This graph helps us to understanding whether or not the current solution is effective.

behavior over time

Step 3: Create a Focusing Statement

At this point, there should be a clear vision about the problem solving process, which is defined in the from of a statement that indicates the team’s target and why the problem occurs.

Step 4: Identify the Structure

After having clear vision about the problem through the proposed statement, the system structure should be described, including the behavior patterns. Building these patterns helps in understanding more about the problem, and it can be formed as a system archetype.

Step 5: Going Deeper into the Issues

After defining the problem and the system structure, this step tends to understand the underlying problems through clarifying four items: the purpose of the system (what we want), the mental models, the large system, and personal role in the situation.

Set 6: Plan an Intervention

The previously collected information is used to start the intervention phase, where modifications to the current problem relate parts to connections. This intervention attempts to reach the desirable behavior.

concept maps

Practice Example of Systems Thinking

One of the direct examples of adopting the systems thinking method was presented by Daniel Aronson highlighting insects who caused damage crops. Traditional thinking to solve crop damage is to apply more pesticides to reduce the number of insects and subsequently reduce the crop damage. However, this solution solves the problem for a short term. In the long run, the problem isn’t truly solved, as the original insect eating the crops are controlling the population of another species of insect in the environment either by preying on it or competing with it. Subsequently, the crop damage increases again due to the increasing numbers of other insect species.

systems thinking

Observing the ecosystem that includes both the insects and the crops, systems thinking suggests exploring a solution that ensures reducing the crop damage in the long run without affecting the environmental balance, such as deploying the Integrated Pest Management that has proven success based on MIT and the National Academy of Science. This solution tends to control the number of an insect species by introducing its predators in the area.

Unlike everyday problems, complex problems can’t be solved using traditional problem solving methods due to the nature of the problems and their complexity. One of the theories that attempts to understand complex problems is systems thinking, which is defined by a number of characters. Six steps are to be used to explore and solve complex problems under the umbrella of systems thinking, which help us to observe and think in a whole eco-system rather than individual parts. Systems thinking can be deployed in multiple domains to solve organization problem, or global problems such as energy, pollution, and poverty.

Wait, Join my Newsletters!

As always, I try to come to you with design ideas, tips, and tools for design and creative thinking. Subscribe to my newsletters to receive new updated design tools and tips!

Dr Rafiq Elmansy

As an academic and author, I've had the privilege of shaping the design landscape. I teach design at the University of Leeds and am the Programme Leader for the MA Design, focusing on design thinking, design for health, and behavioural design. I've developed and taught several innovative programmes at Wrexham Glyndwr University, Northumbria University, and The American University in Cairo. I'm also a published book author and the proud founder of, a platform that has been instrumental in fostering design innovation. My expertise in design has been recognised by prestigious organizations. I'm a fellow of the Higher Education Academy (HEA), the Design Research Society (FDRS), and an Adobe Education Leader. Over the course of 20 years, I've had the privilege of working with esteemed clients such as the UN, World Bank, Adobe, and Schneider, contributing to their design strategies. For more than 12 years, I collaborated closely with the Adobe team, playing a key role in the development of many Adobe applications.

problem solving and system design

You May Also Like

design research

What are Design Research Types and Applications?

Failure Mode Effects FMEA

What is the Failure Mode and Effects (FMEA)?

triz method problem solving

Using the TRIZ Method for Creative Problem Solving

critical thinking

Critical Thinking as a Catalyst of Change in Design

decision making process

The Decision-Making Process Designers Should Use Daily

Charette Procedure

Brainstorming Multiple Ideas Using Charette Procedure

3 thoughts on “ the six systems thinking steps to solve complex problems ”.

problem solving and system design

“Systems thinking was developed by Jay Forrester and members of the Society for Organizational Learning at MIT. The idea is described in his book, The Fifth Discipline, as follows:” Peter Senge is the author of The Fifth Discipline

problem solving and system design

Thank you so much Misi for the helpful information.

problem solving and system design

Thank you for the valuable information. I believe that systems thinking can be applied to every aspect of our lives. When you teach yourself to spot patterns, cycles, and loops instead of individuals elements. You see behind the scenes. Understand what actually needs addressing to move forward and make progress faster with less damage.

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Sign me up for the newsletter!

  • Product overview
  • All features
  • App integrations


  • project icon Project management
  • Project views
  • Custom fields
  • Status updates
  • goal icon Goals and reporting
  • Reporting dashboards
  • workflow icon Workflows and automation
  • portfolio icon Resource management
  • Time tracking
  • my-task icon Admin and security
  • Admin console
  • asana-intelligence icon Asana AI
  • list icon Personal
  • premium icon Starter
  • briefcase icon Advanced
  • Goal management
  • Organizational planning
  • Campaign management
  • Creative production
  • Content calendars
  • Marketing strategic planning
  • Resource planning
  • Project intake
  • Product launches
  • Employee onboarding
  • View all uses arrow-right icon
  • Project plans
  • Team goals & objectives
  • Team continuity
  • Meeting agenda
  • View all templates arrow-right icon
  • Work management resources Discover best practices, watch webinars, get insights
  • What's new Learn about the latest and greatest from Asana
  • Customer stories See how the world's best organizations drive work innovation with Asana
  • Help Center Get lots of tips, tricks, and advice to get the most from Asana
  • Asana Academy Sign up for interactive courses and webinars to learn Asana
  • Developers Learn more about building apps on the Asana platform
  • Community programs Connect with and learn from Asana customers around the world
  • Events Find out about upcoming events near you
  • Partners Learn more about our partner programs
  • Support Need help? Contact the Asana support team
  • Asana for nonprofits Get more information on our nonprofit discount program, and apply.

Featured Reads

problem solving and system design

  • Project planning |
  • How to solve problems using the design ...

How to solve problems using the design thinking process

Sarah Laoyan contributor headshot

The design thinking process is a problem-solving design methodology that helps you develop solutions in a human-focused way. Initially designed at Stanford’s, the five stage design thinking method can help solve ambiguous questions, or more open-ended problems. Learn how these five steps can help your team create innovative solutions to complex problems.

As humans, we’re approached with problems every single day. But how often do we come up with solutions to everyday problems that put the needs of individual humans first?

This is how the design thinking process started.

What is the design thinking process?

The design thinking process is a problem-solving design methodology that helps you tackle complex problems by framing the issue in a human-centric way. The design thinking process works especially well for problems that are not clearly defined or have a more ambiguous goal.

One of the first individuals to write about design thinking was John E. Arnold, a mechanical engineering professor at Stanford. Arnold wrote about four major areas of design thinking in his book, “Creative Engineering” in 1959. His work was later taught at Stanford’s Hasso-Plattner Institute of Design (also known as, a design institute that pioneered the design thinking process. 

This eventually led Nobel Prize laureate Herbert Simon to outline one of the first iterations of the design thinking process in his 1969 book, “The Sciences of the Artificial.” While there are many different variations of design thinking, “The Sciences of the Artificial” is often credited as the basis. 

Anatomy of Work Special Report: How to spot—and overcome—the most crucial enterprise challenges

Learn how enterprises can improve processes and productivity, no matter how complex your organization is. With fewer redundancies, leaders and their teams can hit goals faster.

[Resource Card] AOW Blog Image

A non-linear design thinking approach

Design thinking is not a linear process. It’s important to understand that each stage of the process can (and should) inform the other steps. For example, when you’re going through user testing, you may learn about a new problem that didn’t come up during any of the previous stages. You may learn more about your target personas during the final testing phase, or discover that your initial problem statement can actually help solve even more problems, so you need to redefine the statement to include those as well. 

Why use the design thinking process

The design thinking process is not the most intuitive way to solve a problem, but the results that come from it are worth the effort. Here are a few other reasons why implementing the design thinking process for your team is worth it.

Focus on problem solving

As human beings, we often don’t go out of our way to find problems. Since there’s always an abundance of problems to solve, we’re used to solving problems as they occur. The design thinking process forces you to look at problems from many different points of view. 

The design thinking process requires focusing on human needs and behaviors, and how to create a solution to match those needs. This focus on problem solving can help your design team come up with creative solutions for complex problems. 

Encourages collaboration and teamwork

The design thinking process cannot happen in a silo. It requires many different viewpoints from designers, future customers, and other stakeholders . Brainstorming sessions and collaboration are the backbone of the design thinking process.

Foster innovation

The design thinking process focuses on finding creative solutions that cater to human needs. This means your team is looking to find creative solutions for hyper specific and complex problems. If they’re solving unique problems, then the solutions they’re creating must be equally unique.

The iterative process of the design thinking process means that the innovation doesn’t have to end—your team can continue to update the usability of your product to ensure that your target audience’s problems are effectively solved. 

The 5 stages of design thinking

Currently, one of the more popular models of design thinking is the model proposed by the Hasso-Plattner Institute of Design (or at Stanford. The main reason for its popularity is because of the success this process had in successful companies like Google, Apple, Toyota, and Nike. Here are the five steps designated by the model that have helped many companies succeed.

1. Empathize stage

The first stage of the design thinking process is to look at the problem you’re trying to solve in an empathetic manner. To get an accurate representation of how the problem affects people, actively look for people who encountered this problem previously. Asking them how they would have liked to have the issue resolved is a good place to start, especially because of the human-centric nature of the design thinking process. 

Empathy is an incredibly important aspect of the design thinking process.  The design thinking process requires the designers to put aside any assumptions and unconscious biases they may have about the situation and put themselves in someone else’s shoes. 

For example, if your team is looking to fix the employee onboarding process at your company, you may interview recent new hires to see how their onboarding experience went. Another option is to have a more tenured team member go through the onboarding process so they can experience exactly what a new hire experiences.

2. Define stage

Sometimes a designer will encounter a situation when there’s a general issue, but not a specific problem that needs to be solved. One way to help designers clearly define and outline a problem is to create human-centric problem statements. 

A problem statement helps frame a problem in a way that provides relevant context in an easy to comprehend way. The main goal of a problem statement is to guide designers working on possible solutions for this problem. A problem statement frames the problem in a way that easily highlights the gap between the current state of things and the end goal. 

Tip: Problem statements are best framed as a need for a specific individual. The more specific you are with your problem statement, the better designers can create a human-centric solution to the problem. 

Examples of good problem statements:

We need to decrease the number of clicks a potential customer takes to go through the sign-up process.

We need to decrease the new subscriber unsubscribe rate by 10%. 

We need to increase the Android app adoption rate by 20%.

3. Ideate stage

This is the stage where designers create potential solutions to solve the problem outlined in the problem statement. Use brainstorming techniques with your team to identify the human-centric solution to the problem defined in step two. 

Here are a few brainstorming strategies you can use with your team to come up with a solution:

Standard brainstorm session: Your team gathers together and verbally discusses different ideas out loud.

Brainwrite: Everyone writes their ideas down on a piece of paper or a sticky note and each team member puts their ideas up on the whiteboard. 

Worst possible idea: The inverse of your end goal. Your team produces the most goofy idea so nobody will look silly. This takes out the rigidity of other brainstorming techniques. This technique also helps you identify areas that you can improve upon in your actual solution by looking at the worst parts of an absurd solution. 

It’s important that you don’t discount any ideas during the ideation phase of brainstorming. You want to have as many potential solutions as possible, as new ideas can help trigger even better ideas. Sometimes the most creative solution to a problem is the combination of many different ideas put together.

4. Prototype stage

During the prototype phase, you and your team design a few different variations of inexpensive or scaled down versions of the potential solution to the problem. Having different versions of the prototype gives your team opportunities to test out the solution and make any refinements. 

Prototypes are often tested by other designers, team members outside of the initial design department, and trusted customers or members of the target audience. Having multiple versions of the product gives your team the opportunity to tweak and refine the design before testing with real users. During this process, it’s important to document the testers using the end product. This will give you valuable information as to what parts of the solution are good, and which require more changes.

After testing different prototypes out with teasers, your team should have different solutions for how your product can be improved. The testing and prototyping phase is an iterative process—so much so that it’s possible that some design projects never end.

After designers take the time to test, reiterate, and redesign new products, they may find new problems, different solutions, and gain an overall better understanding of the end-user. The design thinking framework is flexible and non-linear, so it’s totally normal for the process itself to influence the end design. 

Tips for incorporating the design thinking process into your team

If you want your team to start using the design thinking process, but you’re unsure of how to start, here are a few tips to help you out. 

Start small: Similar to how you would test a prototype on a small group of people, you want to test out the design thinking process with a smaller team to see how your team functions. Give this test team some small projects to work on so you can see how this team reacts. If it works out, you can slowly start rolling this process out to other teams.

Incorporate cross-functional team members : The design thinking process works best when your team members collaborate and brainstorm together. Identify who your designer’s key stakeholders are and ensure they’re included in the small test team. 

Organize work in a collaborative project management software : Keep important design project documents such as user research, wireframes, and brainstorms in a collaborative tool like Asana . This way, team members will have one central source of truth for anything relating to the project they’re working on.

Foster collaborative design thinking with Asana

The design thinking process works best when your team works collaboratively. You don’t want something as simple as miscommunication to hinder your projects. Instead, compile all of the information your team needs about a design project in one place with Asana. 

Related resources

problem solving and system design

Data-driven decision making: A step-by-step guide

problem solving and system design

How Asana uses work management for employee onboarding

problem solving and system design

4 ways to establish roles and responsibilities for team success

problem solving and system design

Cost control: How to monitor project spending to increase profitability

Just added to your cart

Systems thinking vs design thinking, what’s the difference.

Definition of systems thinking versus design thinking. Systems thinking is holistic, analytical, abstract, conceptual, and relationship-oriented. Design thinking is deeply human, creative, tangible, experimental, and action-oriented.


  • Introduction
  • What is Systems Thinking?
  • What is Design Thinking?
  • The Differences Between Systems Thinking vs. Design Thinking
  • Advantages and Drawbacks of Systems Thinking
  • Advantages and Drawbacks of Design Thinking
  • Human-Centered Systems Thinking: Integrating Systems Thinking and Design Thinking 
  • Frameworks, Tools, and Methodologies for Human-Centered Systems Thinking

1. Introduction

Systems thinking and design thinking are both approaches to problem solving and innovation. Systems thinking starts with understanding entire systems rather than individualized elements to spot opportunities for change, whereas design thinking is focused on understanding people’s real needs to create human-centered products, services, and processes. It’s important to learn the nuances of each when incorporating them into your practice.

2. What is Systems Thinking?

Systems, like healthcare and cities, are big, multifaceted, dynamic things built for a purpose. They span several services and products working together simultaneously. Some systems benefit society, but some can lead to harm too. Donella Meadows, author of Thinking in Systems , describes systems as made up of structures (institutions), relationships (stakeholders and power dynamics), and paradigms (culture and mindsets).

So what is systems thinking ? In his book The Fifth Discipline , Peter Senge gives a systems thinking definition as “A discipline for seeing wholes. It is a framework for seeing interrelationships rather than things, for seeing patterns of change rather than static ‘snapshots.’ And systems thinking is a sensibility—for the subtle interconnectedness that gives living systems their unique character."

Systems thinking has been around for a long time. If you search the history of the field, you will find your way to pioneering systems theorists like Jay W. Forrester, Russell Ackoff, Donella Meadows, Peter Senge, and more. They codified much of our modern thinking on systems theory, dynamics, and modeling. But were they the first systems thinkers? Certainly not. There are roots in Native American cultures and worldviews, early feminism, and many other examples.

The concept of wholeness is integral to a systems thinking approach. A system is more than the sum of its parts—it's defined by the interaction of its parts. To understand how a system works, you have to study not the individual elements but the linkages between them. When you start thinking in systems, you can then spot opportunities for change. By bringing more awareness to the process of designing systems, we can all be more intentional about creating equitable ones and dismantling harmful ones. 

“A system is more than the sum of its parts—it's defined by the interaction of its parts.”

3. What is Design Thinking?

Design thinking is a human-centered approach to innovation—anchored in understanding customer’s needs, prototyping, and generating creative ideas—to transform the way you develop products, services, processes, and organizations.

When using design thinking principles, you bring together what is desirable from a human point of view with what is technologically feasible and economically viable.

  • Desirability: What makes sense to people and for people?
  • Feasibility: What is technically possible within the foreseeable future?
  • Viability: What is likely to become part of a sustainable business model?

problem solving and system design

We teach the phases of design thinking as linear steps, but in practice the process is not always linear. Some of these steps may happen several times, and you may even jump back and forth between them. The phases of the design thinking process include:

problem solving and system design

Frame a Question —Identify a driving question that inspires others to search for creative solutions.

Gather Inspiration —Inspire new thinking by discovering what people really need.

Generate Ideas —Push past obvious solutions to get to breakthrough ideas.

Make Ideas Tangible —Build rough prototypes to learn how to make ideas better.

Test to Learn —Refine ideas by gathering feedback and experimenting forward.

Share the Story —Craft a human story to inspire others toward action.

If you want to learn more about using a design thinking approach, you can explore design thinking examples, case studies, and activities in our free Design Thinking Resources . 

4. The Differences Between Systems Thinking vs. Design Thinking

You might be wondering: when should I use design thinking and when should I use systems thinking? Each approach has its own distinct characteristics and benefits. Here is a comparison of systems thinking and design thinking:

problem solving and system design

5. Advantages and Drawbacks of Systems Thinking

Systems thinking enables us to overcome stalled decision-making that often occurs when we’re overwhelmed by the scale of a problem and it’s hard to know where to get started. It helps us see the interconnectedness of things, spot patterns, and identify the right areas to focus our efforts. This approach is a good fit for challenges where there's a lot of stakeholders, competing incentives, or no obvious solution.

Other benefits of systems thinking include:

  •  Deepening understanding of a problem by getting different perspectives from people within the system.
  • Expanding the range of choices by framing the problem in new and different ways.
  • Making more informed choices by understanding how things are interrelated and how choices may impact other parts of the system.
  • Anticipating the impact of trade-offs to reduce the risk of unintended consequences.
  • Building buy-in and support for solutions by making sure everyone's viewpoint is included.

The goal of systems thinking is ultimately to come up with solutions that are more holistic and take into account the needs of all stakeholders while also understanding the dynamics of the system. A common drawback or limitation of systems thinking is getting stuck in the ideation and thinking phase without getting tangible. When practicing systems thinking without including the prototyping mindsets of design thinking, it can be more difficult to implement the solutions that you come up with. Additionally, when you use a solely systems thinking approach, you may overlook the individual human needs and behaviors that you uncover with design thinking.

6. Advantages and Drawbacks of Design Thinking

Design thinking is valuable because it puts people at the center of problem solving. It encourages us to ask questions and find out what our customers and clients need, rather than assuming we already know all the answers. Brainstorming ideas , prototyping, and iterating allow us to learn faster and improve products and services before they go out into the real world.

Over time, the methods and mindsets of design thinking lead to something even more important—creative confidence. The subtle techniques of design thinking unlock mindset shifts that lead people (many for the first time in their lives) to see themselves as creative. Creative confidence gives people the ability to fearlessly (or with less fear) tackle complex problems in the world.

Here are some additional benefits of design thinking, and how it can help your team or organization:

  • Understanding the unmet needs of the people you’re creating for.
  • Reducing the risk associated with launching new ideas, products, and services.
  • Generating solutions that are revolutionary, not just incremental.
  • Learning and iterating faster.
  • Collaborating better and tapping into the creative potential of individuals and teams. 

When it comes to drawbacks or limitations of design thinking, some teams may find it difficult to incorporate design thinking because it involves a lot of ambiguity. It’s not a linear path, and sometimes requires looping back to different parts of the process. Additionally, it takes time and practice to practice design thinking at a high level.

Some may also find it difficult to change social norms or behavior on their team. If an organization is used to doing things in a certain way, it might be resistant to a new, more creative way of working. It can be challenging when a team isn’t aligned on applying a design thinking mindset, since it’s such a collaborative approach.

7. Human-Centered Systems Thinking: Integrating Systems Thinking and Design Thinking

Human-centered systems thinking brings together the analytical, holistic tools of systems thinking with the creative human-centered process of design thinking. It’s a mindset and methodology for tackling complex systemic challenges in a human way: staying grounded in the needs of multiple stakeholders while also seeing larger dynamics at play so you can diagnose the real problem, design more effective solutions, and drive real behavior change and positive impact within systems.

Combining systems thinking and design thinking enables you to:

  • Zoom in and out, and toggle back and forth between a systems lens and a human lens.
  • Gain a deeper, more holistic and human understanding of the system and its stakeholders.
  • Develop empathy for both the people and the system itself.
  • Understand what drives human behavior and system behavior.
  • Redesign the system to produce better outcomes by designing and implementing interventions that drive positive change within the system.

Today, human-centered systems thinking is needed more than ever. We have a greater awareness of the interconnected nature of our world. The challenges we face—as individuals, teams, organizations, communities, and as a society—are myriad and multifaceted. Their scale and complexity can be overwhelming. Where do we begin? How do we start to make sense of things?

So many of our complex systems today are human systems like organizations, which are made up of relationships between people. A human-centered approach to systems thinking starts with people and diagnoses the underlying causes of problems before taking action to solve them, and stays grounded in the needs of many stakeholders while also seeing the larger dynamics at play. When you approach problem solving in this way—deeply human and holistic—you will get to solutions that are more effective, connected, integrated, and ethical.

8. Frameworks, Tools, and Methodologies for Human-Centered Systems Thinking

Human-centered systems thinking isn’t just a theoretical concept—there are practical frameworks and tools that you use to bring it to life. Here are a couple of our favorites:

The Iceberg Model

problem solving and system design

In a complex system, solving problems requires considering the whole picture and surfacing the root of the problem. The iceberg model is a framework for uncovering the many layers of a system, including behaviors, structures, and mindsets. It helps you:

  • Look for patterns over time, starting with what you see
  • Uncover deeper structural influences
  • Surface underlying mindsets

The Systems Map

problem solving and system design

A systems map is a tool commonly used by systems designers to lay out all the relationships and interactions between stakeholders in a given system, such as a local high school (shown in the image above). Mapping systems can help you spot opportunities for growth and change.

To create a systems map, follow these steps:

  • Write down every stakeholder in your system on a blank piece of paper. Push yourself to think past the obvious.
  • Draw arrows between the different parts of your system to identify how they’re connected.
  • Reflect on what specific areas you want to examine more closely. What questions come up for you? What gaps do you see?

If you want to dive deeper into systems thinking and learn more tools and frameworks, check out our 5-week online course Human-Centered Systems Thinking.

Expand your design thinking skills and confidence with our Foundations in Design Thinking certificate.

  • Design Thinking
  • Human-Centered Design
  • Systems Thinking
  • Combined Shape Copy Created with Sketch. LinkedIn Share on LinkedIn
  • Share Share on Facebook
  • Combined Shape Created with Sketch. Tweet Tweet on Twitter
  • Pin it Pin on Pinterest
  • RSS Feed Subscribe on RSS

Want to get up to speed on design thinking?

Starting soon.

Business Innovation - IDEO U Certificate

  • choosing a selection results in a full page refresh
  • press the space key then arrow keys to make a selection

Cart Preview

If this box is checked, you will be able to enter name and email of the recipient(s) after your purchase is complete.

problem solving and system design

You are creative

Get tips on building creative confidence and applying the skills of design thinking.

  • Please complete this required field.

Awesome, you're in!

Get the Syllabus

Enter your email to receive the syllabus and email communications from IDEO U.

The syllabus should be in your inbox shortly. Click below to view the syllabus now.


Reqi Systems Engineering Articles

problem solving and system design

Unravelling the Differences: Design Thinking vs Systems Thinking

If you’ve been exploring methods to enhance your problem-solving capabilities, chances are you’ve stumbled upon the concepts of “design thinking” and “systems thinking”. Both of these methodologies are commonly employed to navigate intricate issues, however, their distinct differences can significantly influence their effectiveness.

In this article, we delve into the key disparities between design thinking and systems thinking, investigate how each methodology can be utilised for problem-solving, and scrutinise the advantages of each approach. By the conclusion of this article, you’ll possess a more comprehensive understanding of which approach best suits your project or problem.

Table of Contents

Decoding Design Thinking

Understanding systems thinking, design thinking versus systems thinking: a comparison, design thinking and systems thinking: a table of comparison, choosing the right approach: when to use design or systems thinking, blending the best of both worlds: integrating design and systems thinking, unlocking the power of integrated approaches, exploring the human-centric world of design thinking, navigating the complexity with systems thinking, choosing the right approach, 1. what is design thinking, 2. how does design thinking differ from systems thinking, 3. what are the key steps in the design thinking process, 4. how can systems thinking be integrated with design thinking, 5. what are the similarities between design thinking and systems thinking, 6. how do i choose between design thinking and systems thinking, 7. can design thinking and systems thinking be used together, 8. what are the benefits of design thinking, 9. what are the benefits of systems thinking, 10. what are the challenges of integrating design thinking and systems thinking, wrapping up.

Design thinking is a problem-solving methodology that places human-centred design at the forefront. It involves comprehending the needs and perspectives of those impacted by a problem and utilising empathy to devise effective solutions. This approach is often favoured in sectors such as product design, where the user experience is paramount.

When implementing design thinking, the process typically encompasses the following stages: empathise, define, ideate, prototype, and test. During the empathise stage, the problem is observed and analysed to gain a deeper understanding of the users or customers impacted by the issue. During the define stage, a clear problem statement is formulated. In the ideate stage, a multitude of creative solutions are generated. Subsequently, during the prototype stage, one or more solutions are selected and constructed in a tangible form for testing and feedback. Finally, the test stage involves procuring feedback from users to enhance the solution.

Throughout the design thinking process, certain principles are emphasised, such as a bias towards action, the employment of prototyping to swiftly test ideas, and the significance of iteration to refine solutions until they are effective.

While design thinking is centred on understanding and empathising with the end-users, systems thinking adopts a broader perspective and takes into account the interconnections between the problem and the larger context.

Systems thinking is a problem-solving approach that identifies the relationship between systems and their constituent parts, acknowledging that a modification in one component can impact the entire system. It is a holistic approach that considers the interdependence of various components and how they influence each other.

In contrast to design thinking’s linear and iterative approach, systems thinking is non-linear and relies on feedback loops, where the system’s outputs influence its inputs.

Systems thinking is about comprehending the entire system, not merely its individual parts. It is an approach that recognises the complexity and interconnectedness of a problem and does not rely on simplistic, isolated solutions.

Integrating design thinking with systems thinking can result in a powerful problem-solving approach that takes into account both the user’s needs and the broader context of the problem.

Unravelling the Mystery: Design and Systems Thinking Compared

At first glance, design thinking and systems thinking may seem like two sides of the same coin. They both involve problem-solving, but their methods and focus differ significantly. Design thinking is a human-centric approach, laser-focused on innovating solutions that address user needs. In contrast, systems thinking adopts a bird’s-eye view, examining the intricate web of interconnections within a system and the broader context of a problem.

Design thinking follows a linear, iterative process that revolves around defining a problem, ideating, prototyping, and testing solutions. On the other hand, systems thinking adopts a holistic approach, scrutinising the different components of a system and their interrelationships. The focus of systems thinking is to unearth the root causes of a problem and tackle these underlying issues.

  • Design thinking: Human-centric approach
  • Systems thinking: System-centric approach
  • Design thinking: Linear, iterative process
  • Systems thinking: Holistic approach
  • Design thinking: Focus on creating innovative solutions
  • Systems thinking: Focus on identifying and addressing root causes

Both design thinking and systems thinking have their strengths and weaknesses, and the choice between the two largely depends on the problem at hand. Design thinking is the go-to approach for problems that demand creative solutions and a deep understanding of user needs. Conversely, systems thinking is better suited for complex problems that require a systematic analysis of the underlying causes and a comprehension of the larger context in which the problem exists.

Integrating both design thinking and systems thinking into problem-solving can yield more comprehensive and effective solutions. By fusing the human-centric approach of design thinking with the systemic perspective of systems thinking, you can create solutions that not only cater to user needs but also tackle the underlying issues contributing to the problem.

Our world is complex and multifaceted, often demanding a nuanced blend of perspectives to unlock the best solutions. In the realm of problem-solving and decision-making, two methodologies stand out: design thinking and systems thinking. Each approach brings its own unique strengths to the table, creating a symbiotic relationship when used in conjunction. This article explores the individual benefits of these methodologies and the powerful impact they can have when combined.

At the heart of design thinking is a deep-seated empathy for the end-user. This methodology champions the human experience, seeking to understand the needs and perspectives of those affected by a problem. The result is a solution that resonates with the user, offering a truly user-friendly and effective outcome. Moreover, design thinking fosters a culture of creativity and innovation. It encourages a mindset of experimentation and ideation, often leading to out-of-the-box solutions that may otherwise go unnoticed. Lastly, design thinking is actionable, emphasising the creation of tangible solutions that can be swiftly and effectively implemented.

Systems thinking, on the other hand, offers a bird’s eye view of the problem at hand. It delves into the broader context, exploring the intricate interplay between various components. This approach aids in crafting solutions that address the complex and interconnected issues contributing to a problem. Systems thinking also takes a long-term perspective, considering not just the immediate effects of a solution but its potential impact over time. Furthermore, it fosters a collaborative environment, promoting cross-functional teamwork and bringing together diverse expertise towards a common goal.

The choice between design thinking and systems thinking is not a binary one. It largely depends on the specific problem you’re grappling with. Consider the nature of the problem, the stakeholders involved, and the resources at your disposal before deciding on the most suitable approach. Remember, these methodologies are not mutually exclusive and can often be integrated for a more comprehensive problem-solving strategy.

Frequently Asked Questions

Design thinking is a problem-solving methodology that centres on understanding user needs, brainstorming creative solutions, and iterating on prototypes through a cyclical process.

While design thinking places emphasis on empathy, creativity, and user-centricity, systems thinking adopts a holistic approach, taking into account the interconnectedness of components and the wider context of a problem.

The design thinking process typically involves five stages: empathising with users, defining the problem, ideating potential solutions, prototyping, and testing. Importantly, it is an iterative and non-linear approach.

By integrating systems thinking with design thinking, a more comprehensive understanding of complex problems can be achieved. This integration allows for the identification of systemic causes and effects.

Both design thinking and systems thinking strive to enhance problem-solving by considering multiple perspectives, encouraging collaboration, and fostering innovation.

The choice between design thinking and systems thinking hinges on the nature of the problem and the desired outcome. Design thinking may be more appropriate for user-centric issues, while systems thinking is beneficial for systemic and interconnected problems.

Yes, design thinking and systems thinking can be used together. This combination can lead to a more holistic and user-centred approach to problem-solving, allowing for the development of solutions that address both the systemic issues and the specific user needs.

Design thinking offers numerous benefits, such as fostering innovation, improving user satisfaction, and promoting a collaborative culture. It also allows for the development of solutions that are tailored to the user’s needs.

Systems thinking enables a comprehensive understanding of complex problems by considering the inter-dependencies and relationships between components. This approach can lead to more effective and sustainable solutions.

While integrating design thinking and systems thinking can yield comprehensive solutions, it can also be challenging due to the complexity of managing both user-focused and system-focused perspectives. However, with effective communication and collaboration, these challenges can be overcome.

Now that you’re familiar with the key differences and similarities between design thinking and systems thinking, you’re well equipped to navigate the complex world of problem-solving. Remember, design thinking offers a human-centred approach, while systems thinking provides a broader, more contextual view. Both methodologies have their unique advantages and potential limitations. The trick lies in understanding when and how to apply each approach, or even better, how to integrate them for a more robust solution. So, go forth and conquer the world of problem-solving with your newfound knowledge!

Related Posts

The Waterfall Model: Streamlining Project Development for Success

Leave a Reply Cancel reply

You must be logged in to post a comment.


Serving technical professionals globally for over 75 years. Learn more about us.

MIT Professional Education 700 Technology Square Building NE48-200 Cambridge, MA 02139 USA



Solving Complex Problems: Structured Thinking, Design Principles, and AI

Sang-Gook Kim

Download the Course Schedule

How do you solve important, large-scale challenges with evolving and contradictory constraints? In this 5-day course, transform your approach to large-scale problem solving, from multi-stakeholder engineering projects to the online spread of misinformation. Alongside engineers and leaders from diverse industries, you’ll explore actionable innovative frameworks for assessing, communicating, and implementing complex systems—and significantly increase your likelihood of success.


problem solving and system design

Engineering projects with shifting goals. Inefficient national healthcare systems. The online spread of misinformation. Every day, professionals are tasked with addressing major challenges that present opportunities for great triumph—or significant failure. How do you approach an important, large-scale challenge with evolving and contradictory constraints? Is the solution a new technology, a new policy, or something else altogether? In our new course Solving Complex Problems: Structured Thinking, Design Principles, and AI , you’ll acquire core principles that will change the way you approach and solve large-scale challenges—increasing your likelihood of success. Over the course of five days, you will explore proven design principles, heuristic-based insights, and problem-solving approaches, and learn how to persuasively present concepts and system architectures to stakeholders. Methods utilize recent developments in AI and Big Data, as well as innovative strategies from MIT Lincoln Laboratory that have been successfully applied to large and complex national defense systems. By taking part in interactive lectures and hands-on projects, you will learn to think through and leverage important steps, including problem abstraction, idea generation, concept development and refinement, system-level thinking, and proposal generation. Alongside an accomplished group of global peers, you will explore the strategies and frameworks you need to implement large-scale systems that can have a significant positive impact—and minimize the probability of failure.

Certificate of Completion from MIT Professional Education  

Solving Complex Problems cert image

  • Approach and solve large and complex problems.
  • Assess end-to-end processes and associated challenges, in order to significantly increase the likelihood of success in developing more complex systems.
  • Implement effective problem-solving techniques, including abstracting the problem, idea generation, concept development and refinement, system-level thinking, and proposal generation.
  • Utilize system-level thinking skills to evaluate, refine, down select, and evaluate best ideas and concepts.
  • Apply the Axiomatic Design methodology to a broad range of applications in manufacturing, product design, software, and architecture.
  • Generate and present proposals that clearly articulate innovative ideas, clarify the limits of current strategies, define potential customers and impact, and outline a success-oriented system development and risk mitigation plan.
  • Effectively communicate ideas and persuade others, and provide valuable feedback.
  • Confidently develop and execute large-scale system concepts that will drive significant positive impact.

Edwin F. David Head of the Engineering Division, MIT Lincoln Laboratory

Jonathan E. Gans Group Leader of the Systems and Architectures Group, MIT Lincoln Laboratory

Robert T-I. Shin Principal Staff in the Intelligence, Surveillance, and Reconnaissance (ISR) and Tactical Systems Division, MIT Lincoln Laboratory Director, MIT Beaver Works

This course is appropriate for professionals who design or manage complex systems with shifting needs and goals. It is also well suited to those who want to improve the quality and performance of their operations and decision-making in a large-scale system environment. Potential participants include engineers, group leaders, and senior managers in government and industries including automotive, aerospace, semiconductors, engineering, manufacturing, healthcare, bio-medical, finance, architecture, public policy, education, and military.

Computer Requirements

A laptop with PowerPoint is required.

Solving Complex Problems: Structured Thinking, Design Principles and AI - Brochure Image

Taking a systems thinking approach to problem solving

systems thinking approach to problem solving

Systems thinking is an approach that considers a situation or problem holistically and as part of an overall system which is more than the sum of its parts. Taking the big picture perspective, and looking more deeply at underpinnings, systems thinking seeks and offers long-term and fundamental solutions rather than quick fixes and surface change.

A systems thinking approach might be the ideal way to tackle essentially systemic problems. Our article sets out the basic concepts and ideas.

What is systems thinking?

When we consider the concepts of a car, or a human being we are using a systems thinking perspective. A car is not just a collection of nuts, bolts, panels and wheels. A human being is not simply an assembly of bones, muscles, organs and blood.

The history of systems thinking is itself innately complex, with roots in many important disciplines of the 20th century including biology, computing and data science. As a discipline, systems thinking is still evolving today.

How can systems thinking be applied to problem solving?

A popular way of applying a systems thinking lens is to examine the issue from multiple perspectives, zooming out from single and visible elements to the bigger and broader picture (e.g. via considering individual events, and then the patterns, structures and mental models which give rise to them).

Systems thinking is best applied in fields where problems and solutions are both high in complexity. There are a number of characteristics that can make an issue particularly compatible with a systems thinking approach:

Areas where systems thinking is often useful include health, climate change, urban planning, transport or ecology.

What is an example of a systems thinking approach to problem solving?

Beneath the waterline and invisible, lie deeper and longer-term trends or patterns of behavior. In our example this might be internal fighting in the political party which overshadows and obstructs its public campaigning and weakens its leadership and reputation.

The electoral system in the country may also be problematic or unfair, making the party so fearful and defensive against losing its remaining support base, that it has no energy or cash to campaign on a more positive agenda and win new voters.

Mental models

At the very base of the iceberg, deepest under the water, lie the mental models that allow the rest of the iceberg to persist in this shape. These include the assumptions, attitudes, beliefs and motivations which drive the behaviors, patterns and events seen further up in the iceberg.

When is a systems thinking approach not helpful?

If you are looking for a quick answer to a simple question, or an immediate response to a single event, then systems thinking may overcomplicate the process of solving your problem and provide you with more information than is helpful, and in slower time than you need.

A final word…

The biggest problems in the real world are rarely simple in nature and expecting a quick and simple solution to something like climate change or cancer would be naive.

Whether you think of it as zooming out to the big picture while retaining a focus on the small, or looking deeper under the water at the full shape of the iceberg, systems thinking can be a powerful tool for finding solutions that recognize the interactions and interdependence of individual elements in the real world.

You may also like

Best books on systems thinking: top picks for 2023, exploring critical thinking vs. systems thinking, what is systems thinking, 5 ways to apply systems thinking to your business operations: a strategic guide, download this free ebook.

eCornell logo

Outside USA: +1‑607‑330‑3200

Framing Complex Problems with Systems Thinking Cornell Course

Select start date, framing complex problems with systems thinking, course overview.

Whether you need to tackle a complex project, communicate more effectively, rethink your organization or your job, solve world hunger, or figure out your teenager, systems thinking can help you. All of these are complex and challenging real-world problems, sometimes called wicked problems. We all confront problems, big and small, in our personal and professional lives, and most of us are searching for better ways to solve them. In this course, Professors Derek and Laura Cabrera will demonstrate how we can use systems thinking to solve everyday and wicked problems, to transform our organizations, and to increase our personal effectiveness.

At its core, systems thinking attempts to better align the way we think with how the real world works. Our thinking is based on our mental models, but these models, created from our unique perspective with its inherent biases, are usually inadequate representations of reality. The Cabreras illustrate how we can use feedback to recognize and adapt our mental models so that they better align with reality, enhancing our problem-solving capabilities.

For systems thinking to be successful, it must be adaptive. In this course, you will explore the concept of complex adaptive systems, and while these systems seem unnecessarily complicated, the Cabreras will reveal a surprising discovery. Underlying all complex adaptive systems are simple rules, and applying these rules is the key to transforming the way we frame and solve everyday problems.

Key Course Takeaways

  • Identify and describe the problems you want to solve in your personal and professional lives
  • Examine the mental models you have and how they differ from reality
  • Determine how you can use feedback to improve your mental models
  • Recognize the biases that you have that can distort your mental models
  • Examine complex adaptive systems and the simple rules that underlie these systems
  • Determine how systems thinking is a complex adaptive system
  • Explore the four simple rules that underlie systems thinking

problem solving and system design

Download a Brochure

How it works, course authors.

Laura Cabrera

  • Certificates Authored

Laura is Plectica’s Chief Research Officer.

For over 15 years, Laura has conducted translational research to increase public understanding, application, and dissemination of systems science, including for USDA, the National Academy of Sciences Institute of Medicine, HHS, and the Dept. of Justice.

She is also a senior researcher at Cabrera Research Lab, has authored five books on systems thinking and its applications, and is a member of the United States Military Academy at West Point’s Systems Engineering Advisory Board.

Laura holds a PhD in Policy Analysis and Management, a Master’s in Public Administration, and a B.A., all from Cornell.

Her family is her favorite system…

  • Digital Leadership
  • Intrapreneurship
  • Systems Thinking

Derek Cabrera

Derek Cabrera (Ph.D., Cornell) is a systems scientist, Professor, and social entrepreneur and is internationally known for his work in systems thinking, systems leadership, and systems modeling. He is currently a lecturer at Cornell University where he teaches systems thinking and organizational leadership and design. He is senior scientist at  Cabrera Research Lab , and co-founder and Chief Science Officer of  Plectica . He has given two TED Talks, written and produced a  rap song , a children’s book on cognition, and authored numerous book chapters and peer-reviewed journal articles. His research has been profiled in peer-reviewed journals, trade magazines, and popular publications, and he is author of eight books including,  Systems Thinking Made Simple: New Hope for Solving Wicked Problems  (winner of the 2017 AECT outstanding book award),  Thinking at Every Desk: Four Simple Skills to Transform Your Classroom , and  Flock Not Clock: Align People, Processes, and Systems to Achieve your Vision . Credited with discovering the underlying rules of systems thinking, Cabrera is co-editor of the Routledge Handbook of Systems Thinking. His work in public schools was documented in the full-length documentary film,  RE:Thinking . He was Research Fellow at the Santa Fe Institute (SFI) for the Study of Complex Systems and National Science Foundation IGERT Fellow in Nonlinear Systems in the Department of Theoretical and Applied Mechanics at Cornell University. As a National Science Foundation postdoctoral fellow, he developed new techniques to model systems approaches in the evaluation of Science, Technology, Engineering, and Mathematics (STEM). Cabrera was awarded the Association of American Colleges and Universities’ K. Patricia Cross Future Educational Leaders Award. He serves on the United States Military Academy at West Point’s Systems Engineering Advisory Board. His contributions to the field of systems thinking have been integrated into NSF, NIH, and USDA-NIFA programs, K-12, higher education, NGOs, federal agencies, corporations, and business schools. His systems models are used by many of Silicon Valley’s most innovative companies. Systems Thinking Made Simple is used as an introductory text for undergraduate and graduate students in numerous colleges and universities including Cornell University and West Point Military Academy. Cabrera has developed and patented a suite of systems thinking tools for use in academia, business, and beyond. Prior to becoming a scientist, Cabrera worked for fifteen years around the world as a mountain guide and experiential educator for Outward Bound and other organizations and has climbed many of the world’s highest mountains. He holds a Ph.D. from Cornell University and lives in Ithaca, NY, with his wife, Laura Cabrera, three children, and four dogs.

Who Should Enroll

  • Managers, leaders, decision makers, consultants, and anyone responsible for projects, complex processes, and the budgets and people involved with them. Learners will come from every continent and from a diverse range of organizations, including private sector companies large and small, nonprofits, governments, and NGOs.
  • For people already interested in systems dynamics or soft systems methodologies, the core principles from this program can be applied to any systems-based models.

Stack To A Certificate

Request information now by completing the form below..

Enter your information to get access to a virtual open house with the eCornell team to get your questions answered live.

  • For employers
  • Gift mock interviews

A Senior Engineer's Guide to the System Design Interview

4 system design examples: problems, solutions, and walkthroughs, table of contents, part 1: how to approach a system design interview, part 2: 15 fundamental system design concepts, part 3: a 3-step framework to crush any system design interview, part 4: watch us design simple systems from scratch, and learn how to get unstuck, about part 4.

In this section, we employ a depth-first approach to teach you how to design systems. The systems described in Part 4 are as simple as possible in order to maximize the practical knowledge you can take with you. The inspiration for this section is the famous quote, “If you can do Hash maps and the Monte Carlo Method, you can solve any problem in computer science.”

Einstein quote about computer science

🤥 OK, fine, you caught us—Einstein didn’t actually say this. However, this quote does come from a competitive programmer who made it to top 24 in the world, so that’s got to count for something!

This section takes the idea behind that quote even farther. If you understand the power of immutability, deduplication, enumeration, and how to get yourself unstuck, you can understand how to design any system. Part 4 is a master class in which you’ll get to observe the decision-making process of senior engineers as they build systems. Along the way, we’ll teach you additional tips and tricks to help you excel during an interview. Once you’ve finished reading Part 4, you’ll possess the knowledge you need to truly understand system design interviews. And you’ll see there was never any reason to be scared of designing systems in the first place.

Chapter One

Let’s get started. The best way to learn is to build, so we’ll begin by designing something that is:

  • Large enough, and
  • Does not have many interdependencies.

For something large enough, let’s look at TikTok and simplify it greatly. Here’s one way to do it:

Change from videos to pictures., what other big element could we put aside for now, maybe pictures are too much, let’s take it even further, all the way through tinyurl to pastebin. how so.

Social icons

Let’s now look into Pastebin. It’s probably the easiest one of all the above.

To keep things simple, imagine we don’t need to edit Pastes; we just need to remove them sometimes.

This is important. Why?


It helps to align on requirements before designing the system. A conversation with the interviewer flows better if functional and non-functional requirements are introduced.

Rule of thumb

Functional requirements (FRs) tend to map 1:1 to the functionality the service can expose to the outer world.

Functional Requirements

Non-functional requirements.

Similar to DS&A questions, it’s easy to make assumptions about the problem. Think of the requirements stage as a fluid conversation between yourself and the interviewer. While you will drive the conversation, you should always check in with them to see if you’ve missed anything. Many people forget that they can literally ask the interviewer if they’ve missed any important requirements.

How to Get Yourself Unstuck – Tip #2:

Not sure if you got all the requirements? Think you’re missing something important, but you don’t know what? Turn your requirements gathering into a conversation and get the interviewer involved. Ask your interviewer: “Are there any important requirements you have in mind that I’ve overlooked?” This is totally allowed!

While not strictly necessary, it’s worth it to be able to answer questions about the scale of a service in under a minute. This is known in the industry as the “back of the envelope” calculations of load estimates.

What’s the point of doing estimates at all in these problems?

Both in an interview and in real-life design, it’s useful to be able to estimate orders of magnitude, especially when it comes to users, data volumes, or costs.

An important note: There’s no “right” way to do these estimates, but there are “wrong” ways. So, in practice, this is one of the aspects of the conversation where it’s more important to focus on being “not wrong” rather than on being “right.”

A back-of-the-envelope estimate here could be along the following lines.

Estimates often can (and should!) be validated against real-life numbers, which are frequently public. Test your estimation skills here:


How to Get Yourself Unstuck – Tip #3:

Some interviewers hate this step and really don’t want to see you stumble through 5th-grade math calculations for 15 minutes. Similar to step 2, ask your interviewer if they’d like to see some calculations before jumping in and starting them—you might be able to skip these entirely if the interviewer doesn’t care about it! With quite a few system design interviews, you’d be fine as long as you do mention that the system you plan to present will be durable, resilient, and scalable.

How to Get Yourself Unstuck – Tip #4:

Sometimes it’s difficult to know what to calculate during this part of the interview. If you’ve already confirmed that the interviewer wants to see calculations as mentioned in Tip #3, then follow these rough guides to get the basic estimates for any system.

Storage Estimation:

Storage = daily data used by 1 user * DAU count * length of time to store data

Bandwidth Estimation:

Bandwidth per second = (daily data used by 1 user * DAU count ) / total seconds in a day

Also, there are roughly 100K seconds in a day, which is five orders of magnitude. If your API gateway expects to see a billion requests on a busy day, that’s approximately 10K requests per second, as 9 zeroes minus 5 zeroes is 4 zeroes. The true figure is ~15% larger, as 100K / (60 * 60 * 24) is around 1.15.

Let’s start designing!

Intuitive things first:

  • We need to figure out how to store Pastes. It might occur to the astute reader that all we’re doing is sharing files (aka the “Pastes”) between users. So if we are just sharing files, why not just have the “pasting” action simply copy the file with a “Paste” to a remote folder?
  • Folder sharing properties are a little niche and OS specific. Instead of dealing with them for each OS, perhaps we can access a folder from a tiny Python script?
  • Pastes always have those funky unique names in their URL. How do we generate those names for Pastes?

The shared folders analogy, from (1), immediately takes us about half way to designing a document store: a non-relational object persistence layer. It’s broadly acceptable to refer to it these days as a NoSQL database, even though along many axes it is nearly the exact opposite. It would not support transactions or joins, for example. On the other hand, for the purposes of designing Pastebin, neither joins nor transactions are required. Plus, we want the benefits of pagination. This allows us to leverage the strong sides of document stores / NoSQL databases, while not suffering from any downsides of them. The strong sides include features such as replication, automatic failover, and out-of-the-box horizontal scaling.

The takeaway message here is that document stores truly are not very different from reliable shared folders, optimized to be used by software through APIs calls (2), not by humans via a command line or via drag and drop. They also abstract away the underlying OS details (as well as cloud / containerization / etc.), allowing their user to focus on the business logic of their application instead.

The unique names generation task, (3), is a well-known problem by itself. It is sometimes referred to as KGS, the Key Generation Service. We will tackle this problem later in Part 4; for now it will suffice to say that as long as the keys can be long enough, it is straightforward to reduce the risks of collision to zero, or to an infinitesimally small number.

More Real Interview Stuff

The previous paragraphs outlined the key concepts that will help you reason about the problem. Depending on the interviewer, different parts of the problem might become more or less important with respect to getting an excellent score.

In this section we will cover some of those parts, from first principles, and loosely in the order of likelihood that you’ll be asked about them.

What are we not covering, but could be asked about for this Pastebin problem?

  • Caching. How to make stuff load faster? How to load our servers less?
  • How critical is deletion? How important is it to remove everything quickly (say, it’s private data, by mistake)?
  • Private sharing? How to authenticate? How to authorize? Is it possible to change sharing settings of a paste on the fly?
  • Sharing analytics? / Telemetry.
  • GDPR and other regulations to observe.
  • Authentication. By the way, ****If you are asked an Authentication question in the context of the Pastebin problem, congratulations. This means you have likely nailed everything else the interviewer had to ask you about.

Chapter Two

Time to look into mutability.

As we talked about in Chapter One, most system design problems are trivial when reduced to an immutable case.

A good way to dive into the depths of system design is to attack a problem that is all about mutability.

In other words, we need to look into a problem where the objects can be changed. The perfect problem to illustrate this point would focus on mutability and nothing else. In search of such a problem, let’s cover two warm-up ones first.

Warm-up Problem One: Deduplication

The problem statement for deduplication is deceptively simple:

  • The only way to call the service is: “Did you see X before?”
  • The service answers with is true / false .
  • The first time the service is called for X, it returns false .
  • If the service is called with X again, it should return true .

Without loss of generality (WLOG), let’s assume the X-es are strings of some reasonable length, say, under two hundred bytes. (If you want to learn more about the math-y term “WLOG,” you can do that here .)

Why is this important?

In computer science terms (or, rather, in “algorithms and data structures” terms), the problem of deduplication is effectively about building a largely distributed append-only hash set.

While system design interviews are not the same as algorithms and data structures ones, never forget that, ultimately, it’s all about writing code that works! The difference is this: doing vs. directing. In a coding interview, you’re literally writing the code. In a system design interview, your goal is to assist those writing the code by providing architecture / direction / guidance.

Let’s put together some requirements first.

Keep in mind, we work on requirements not because the script of the interview contains such a section, but because they help us to better reason about our solution.


Availability, persistence and durability.

What the above effectively tells us is:

  • The solution should be distributed. The total amount of data to store would not be huge. It may even fit in memory. Therefore, we will only be looking at a few machines—not hundreds.

Memory is fast, disk is slow. In this problem, since every record is a small number of bytes, we may be able to fit everything in memory.

  • The solution should be resilient. The main reason we need more than one machine is to ensure uninterrupted operation of the system if one of them is unavailable.

Now would be a good time to introduce the simple idea of R + W > N.

This is a very simple trick, and while it is not often used directly in production systems, it’s incredibly useful to know when learning about system design.

The idea is this:

  • If we have N machines in total,
  • We consider a write successful when the write has succeeded on W machines,
  • And a read is successful if at least one of R queried machines contains the data. Of course, if more than one machine has the data, the response from all of the machines that have this data should be identical,
  • Then we need R + W to be greater than N for our system to be consistent.

Shards diagram

Keep in mind, we are still looking at a semi-immutable problem of deduplication: we can only “get to see” every possible input X; we can not “unsee” an X.

For a positive example, consider N = 5, W = 3, R = 3. What this means for our deduplication solution is:

  • There are N=five servers in total.
  • When we “write,” i.e., when we see an X we know is new, we:
  • Take a note that “X was seen” on at least W=three servers (you can think of choosing them randomly now), and
  • Consider the write successful only after these three servers have confirmed this write as successful.
  • When we “read,” i.e., when we need to see if a given X was seen before or not:
  • We ask R=three servers whether they have seen this X,
  • If at least one of them responds with a “yes,” we know the answer is “yes,”
  • And if and only if all three servers respond with a “no,” we know definitively that this X was not seen before.
  • These R=three machines can still be chosen randomly.

Take a moment to internalize why the above would work when R + W is greater than N, and why it may fail if R + W is equal to or less than N.

Of course, in practice many more tricks can be used to improve the solution. (These ideas, while important, are out of scope of this trivial example problem):

The redundancy factor is (N-W) for writes and (N-R) for reads; as long as there are enough machines to pick W of them to write to we can write, and as long as there are enough machines to pick R to read from we can read. The important part is that the write machines and the read machines intersect by at least one, so W+R should be strictly greater than N. This is because if W+R is equal to N, or is less than N, there's no guarantee that a set of W randomly picked machines and a set of R randomly picked machines will intersect. And if they do not intersect then the read will miss the data that was just written!

Always pay attention to solutions that keep working “just fine” if some nodes are down. Since things are going to go wrong, it’s best to have systems that can deal with that without issue, so you don’t have to! 😎

Last but not least: The above solution would use each machine’s RAM or disk capacity at its (W / N) fraction. In other words:

  • If one machine can only handle the key space of up to a billion X-es,
  • And you need to handle the key space of five billion X-es,
  • That is, five times that amount that one machine can handle.
  • Then you need (W / N) to be at most 0.2 (or at most 20%).
  • Always good to allow for some extra room, so, say, we plan for ~16%, not 20%.
  • You can go with W = 1, N = 6, but then R would have to be the whole 6. It's unwise to design a distributed system with R=N though. If just one machine dies, we can not longer have the total R of them to respond, and thus our reads will be stalled.
  • In other words, if you only write to one machine, you need all machines to be up and running while you are reading. Slow, and not safe with respect to machine failures.
  • You can go with W = 2, N = 12, R = 12.
  • This is acceptable since R+W, which is 12+2=14, is greater than N, which is 12. The problem persists however: losing even one machine makes writes impossible, since, with R=N, if only 11 of 12 machines are operational it is impossible to read from "any" distinct 12 machines.
  • Or you can go with some W = 4, N = 24, R = 22.
  • This is also acceptable since R+W is greater than N. And now, for reads to work, we can lose one or two machines safely, since both (N-1)=23 and (N-2)=22 is at least R.

Obviously, if you assign parts of the key space (i.e., different values of X) to N machines intelligently, not randomly, you can achieve better RAM and disk utilization. But the example is still quite illustrative: we now know that without any custom knowledge on how to design a system, we can build a resilient, highly available, multi-node deduplication engine, from first principles!

Before we declare ourselves done with the warm-up problem, let’s consider its extension.

Warm-up Problem Two: The Enumeration Problem

This problem statement is very similar to the above:

  • The service responds with an integer: The unique, 1-based, index of this X.
  • From this moment on, for this X the very same index is returned.
  • The returned indexes should not have gaps. That is, they should go as 1, 2, 3, etc.

At first glance, enumeration is identical to deduplication, but instead of a hash set, we need a hash map.

But this first glance is deceptive. This enumeration problem is substantially harder than the deduplication one.

The challenge is in assigning IDs in a fixed order (as in: 1, 2, 3, and so on). In order to stamp the new, unique index, all other calls should wait, as this very next unique index “distributed variable” is a shared resource.

A real-life analogy to help you understand enumeration

A real-life analogy might help..

In the case of enumeration, the very same (R + W + 1) > N trick would not work, at least directly.

Shared state is the root of all problems

The more massive the shared state has to be, the more difficult it is to solve the problem in a generic fashion. And the enumeration problem is a perfect illustration of why exactly it is so difficult.

When attacking the Enumeration problem, the concept of a read-write ratio comes into play.

If there are only 1,000,000 distinct X-es in the world, eventually—and rather quickly—all of them will become seen. Since we don’t need to invalidate indexes, each particular node of our service could “memorize by heart” the indexes for these 1,000,000 X-es, after which the problem can be treated as an immutable, read-only one. And, as you know by now, immutable problems are easy to solve.

Exhausting the set of unique inputs is quite a rare case. But it does happen often that the vast majority of inputs (say, 99.9%) would be the ones that have been already seen. Since inquiring about the already seen X is an immutable operation, this would result in a 999:1 read-to-write ratio (which is safe to round to 1000:1, for all intents and purposes).

Remember (from the two warm-up problems):

  • Deduplication is the simplest case of a mutable problem.
  • Enumeration looks like a trivial extension, but it is far, far trickier.
  • The CAP theorem is a bitch blast, and it is important to understand the boundaries of what’s possible (and to ask clarification questions on the functional requirements step!).

Real problem: Unique ID Generation, aka the Key Generation Service (KGS)

The problem of generating unique IDs serves as an excellent real-life illustration for the ideas we’ve discussed so far. Unlike the two warm-ups above, Unique ID Generation is a real problem. And it is commonly used as an interview question, including this mock interview hosted by .

We will, of course, be solving the problem in a distributed setting. In other words, the solution should be highly available and consistent . This means that we will be using several nodes that communicate with each other. This way, if some nodes die and/or become unresponsive, temporarily or permanently, the system remains:

  • Highly available — it keeps functioning, and
  • Consistent — it keeps satisfying its functional and non-functional requirements.

Pragmatically speaking, the problem is quite straightforward, as long as we answer three important clarification questions. All three fit solidly in the Functional Requirements (FRs) bucket.

During a system design interview, we focus on functional requirements not to please our interviewers, but to set the table for ourselves and to stack the deck of the upcoming story in our favor!

The three FR questions are:

  • Is it a strict requirement for the IDs to not to repeat?
  • How large is the ID space?
  • How many unique IDs per second should we generate (and what is the acceptable latency)?

Let’s dive deeper into why these are the important questions.

Question #1, about whether the IDs are allowed to repeat at all, is quite binary. Either generating a non-unique ID is absolutely unacceptable, or it is allowed once in a blue moon.

To answer this from a practical standpoint, consider the cost of generating a non-unique ID for the business. If this cost is bounded by a reasonably small amount, then, in practice, it is not entirely unacceptable to have a non-unique ID from time to time.

Consider Amazon, AirBnb, or Expedia order ID generation. What can go wrong if the ID is not unique? A customer might have a ruined experience. What’s the cost of this for the business? Probably in the order of dozens or hundreds of dollars; this cost is not likely to be above, say, $10,000. Thus, if the likelihood of a generated ID to not be unique is such that a duplicate may emerge once in ~10 or ~50 years, the “daily” cost of this “imperfect” implementation is less than what the company will pay for organic sweetener in the office. As a result, “fixing” this “problem” may not be worth it at all.

A strong user- and product-facing candidate should be able to articulate the above.

With this said, if the IDs are allowed to be not unique once in a while, the problem is sort of non-existent: generate a random 128-bit number, and you’re good for ages. In fact, for most practical intents and purposes, even a random 64-bit number would do.

Back-of-the-envelope math, which, unlike most SD interviews, actually is important here!

With the above deep dive being said—and you should somehow indicate to your interviewer that you understand it!—let’s approach the Unique ID generation problem under the assumption that the IDs should be guaranteed to be unique.

Question #2 effectively boils down to “64 bits vs. 128 bits.” 128 bits, as shown above, are a lot. For the record, a standard UUID is of 128 bits, although a quick Googling shows it “only” contains 122 bits of entropy.

And question #3 is only important in conjunction with question #2, as what truly matters is the rate at which the key space is being exhausted . Simply put, the very problem is almost identical if we add 10 more bits to the IDs and generate the IDs 1,000 times faster.

Though it is rare, sometimes system design interviews are indeed about doing math with estimates. A good interviewer will test your intuition on the above, and human intuition is notoriously unreliable when it comes to very small and very large numbers in general and to probabilities in particular. So if you skipped the above math-y deep dive, at least read up on the Birthday Paradox . 😊

So, effectively, the true problem is:

  • Do we try to utilize the key space effectively?
  • Or are we allowed to use a larger key space?

Really, that’s it.

For the unique key generation problem, just do a bit of trivial (*) math.

(*) Professors tend to refer to anything that’s semi-straightforward to follow as trivial. Thankfully, our interviewers are not that picky. Although the above is relatively standard math to someone who is fluent in probability and statistics, and, chances are, your interviewer may well be—system design interviews are often conducted by more senior people, and more senior people work with data more often than average.

If we need to utilize the key space effectively, we’re fully in the realm of distributed consensus, etc. Hard problem.

If we can be loose, we just need to employ a few simple tricks to minimize our risks. Easy problem.

Solution to the Easy Problem

First of all, if you are looking at the easy problem, it should be noted during the interview that just generating the IDs randomly would solve it for all intents and purposes.

Go ahead and explain this to your interviewer. Explain that even if each collision costs the company $10,000, it is still not worth an extra minute of your time, as an engineer employed by this company, to be solving this problem.

Because this is The Correct Answer, if this unique ID generation problem presents itself in the real life setting.

(Not to mention that any large company that employs you expects to make considerable money from you; for top IT giants this figure is over one million dollars per year per engineer, although things did turn south since 2020.)

Of course, after you cover this, the interviewer will ask you to actually solve the problem, in a scientifically and engineering-ly precise way, in an “academic” setting. This is what the next section is about.

But before you get too fancy, it won’t hurt to suggest a few trivial improvements. In short, having a lot of key space allows for plenty of “cheap” tricks.

For example, each node of your now-distributed service can just assign the IDs in the 1, 2, 3, … fashion. You can then prepend each generated ID with something that contains:

a) The ID of the machine (node/server) that has generated this ID.

B) the timestamp when this particular machine has started assigning ids..

If you have a large key space (say, 128 bits), you can easily allocate ~32 bits for the ID of the machine (an IPv4 address) and another ~32 bits for the Unix timestamp, in seconds, when this particular machine has started its “session.” This leaves you with plenty of indexes per each node: 2^64, to be precise, as you’ve “used up” 64 bits of 128.

And if one of your machines suddenly runs out of whatever range you have allocated for it, you can “just” restart that machine. It will get itself a new prefix and continue afresh. Of course, the restart itself is not necessary, as the machine can just (automatically) change the value of that variable it uses internally.

Solution to the Hard Problem

The above solution should be good enough to pass the interview about Unique ID generation. Before we get to solve the Hard version of it, let’s add a few more assumptions. They do, by the way, qualify for Non-Functional Requirements . Here they are:

a) The IDs generated should not just be sequential.

B) the api is such that clients can receive ids in bulk..

For (a), a simple solution comes from number theory. Security specialists know it. Just perform some relatively trivial mathematical function before returning the ID to the user, while keeping this function reversible , so that when F(x) = y, some G(y) = x. A Modular Multiplicative Inverse might do the job just fine.

And (b) is exactly where the solution to the broader problem comes into play!

Imagine that you have designed a system where the “users” can “request” IDs in bulk. (We will explain how to do it in a minute.) The trick is that each node of your system is effectively performing the same task: it needs to request a large “bulk” of IDs from some “central authority,” and then distribute these large bulks in smaller quantities to its “retail customers.”

It’s as simple and as genius as that.

To arrive at a “proper” solution, the “large” bulks should not be too large. Because, if a node dies, it is impossible to tell how much of its latest bulk it has “distributed” so far. In other words, when a node dies, some part of a key space will be wasted.

Moreover, if the node does not die, but terminates gracefully, it may then “return” the “unused excess” of its bulk to the system, which sounds very fair. But it may present a challenge to the “bulk provider service” to deal with “partial” bulks. It may well be better to deliberately discard the “rest of the bulk,” even if the node that has previously requested this bulk is terminating gracefully.

Simply put, the bulk size can be calibrated such that each node requests a new “bulk” to “distribute” approximately every several seconds or maybe several dozen seconds. That’s the sweet spot . Make this number (this bulk size or this time window—they can now be used interchangeably) too tight, and the “central authority” would need to handle more load than needed. Make it too loose, and, especially if machines do die often (or need to be migrated often), a non-negligible portion of the key space would be wasted unnecessarily.

Now, to the gist of the problem. The very “central authority” :

  • Can not truly be “central,” but should be “distributed,” and
  • Actually deals with very little traffic, as each node literally talks to it once every several seconds or dozen seconds.

So, in a true System Design fashion, use some standard distributed component there, FFS!

  • It could be Google Spanner, because, with this traffic, it will be cheap.
  • It could be anything with internal Leader Elections implementation, such as:
  • or even Kubernetes/Consul itself!
  • It could be any distributed DB, as long as it supports strongly serializable transactions over a reasonable number of replicas.
  • Literally, both MySQL and Postgres would do, as long as you have a quorum of some N = 5 or 7 or 11 nodes. (We usually use an odd number of nodes for leader elections, so that they are impossible to break into two equally sized parts).
  • Kafka is another option, as you would literally be publishing single-digit messages per minute into one topic of one partition!

Even if each “call” to “reserve” another “bulk” takes a second or two to settle—because the request would have to travel across the globe, possibly more than once, to guarantee strong consistency—it’s perfectly fine with your design, as long as each node requests a new “bulk” those few seconds in advance, before it runs out of its “current” “bulk.”

That’s it for ID generation. Relatively simple.

Any design for Unique ID generation that attempts to store Every Single Issued ID is a bad idea .

Why is it a bad idea?

  • Because, as we know by now, if the total number of IDs to issue is small, well, there is no problem.
  • And if the total number of IDs to issue is large, the waste on the DB resources will be colossal, to say the least.

More junior, and/or less experienced engineers often make this mistake. As they say: “Forewarned is forearmed.” At least, store “bulks” only, not each issued ID. Better yet: only store the “latest issued bulk ID” or the “next available bulk ID.” That’s it—relatively simple still.

Want to know exactly what a FAANG System Design interviewer looks for? Get detailed feedback on your system design skills from our professional interviewers.

problem solving and system design

Chapter Three

All right, we now know enough about things like mutability, deduplication, and basic requirement gathering skills to be dangerous. Let’s now tackle a larger problem—not too complicated, but it’ll stretch us a little bit.

Design AOL Instant Messenger

This is almost certainly a system design question you haven’t encountered, and depending on when you were born, it might not even be an application you’ve seen before! 🤯 No worries, we can think of this as one of the simplest chat apps imaginable. Keeping it simple allows us to design any chat app from first principles and provides a solid structure for us to work with, regardless of what chat app we are asked to design.

For the younger readers who aren’t familiar with the AOL Instant Messenger (AIM) application before, here are a few snapshots so you can get a sense of the basic functionality of the application.

AOL Instant Messenger screenshots

Yikes! Those font choices clearly weren’t vetted by a UX designer! 😂 OK, so clearly the app has a few specific functionalities. A requirements list may look something like this:

  • Ability to sign up for AOL Instant Messenger
  • Ability to generate a screen name
  • Ability to authenticate yourself with a username and password
  • Ability to save username/password securely & auto-login
  • Ability to add a “buddy” to talk to on AIM
  • Ability to select a buddy and send chat messages to them in real-time
  • Ability to block, warn, and delete buddy

Wow, that’s still quite a large list for such a simple application. For now let’s ignore the authentication pieces—while they are important, they don’t really make up the core of this application. Let’s spend some time focusing on the actual messaging parts and assume we can log in already.

As we did in the previous chapter, we should discuss the scale of our app in terms of functional requirements. Again, this isn’t just strictly necessary for an interview, it’s also a useful tool to help frame what we actually care about in the design of the system.

Ranking the order of importance with functional and non-functional requirements is silly because a single requirement not being filled will lead to a bad system.

Still, for any given design problem, there is usually at least one particularly relevant requirement. This means that there’s likely to be one requirement which is the linchpin of the system.

Generally, what do you think are the most critical parts to an app that allow you to talk to other people? Seriously, think about it. I’ll be here when you get back.

Did you think about it? I mean it! Think for a moment about this. What are things that are just “givens” about a chat app? What have you come to expect when it comes to these types of apps?

OK, so you might have phrased it differently, but if you thought something like, “It’s important to get messages in a timely manner ,” or maybe “it’s important to always be able to send a message when you want to,” or possibly even “It’s important to be able to access my messages when I want to see them,” then fantastic—you’re absolutely right.

In plain english, we’ve just named our most important non-functional requirements: Consistency , Availability , and Durability .

Non-Functional Diagram - consistency, availability, and durability

This makes up the bulk of the most important requirements in our system!

Solution Design

Awesome, now that we’ve discussed the requirements, much of our work has already been done. Let’s talk about what the system actually looks like. 🧐

How to Get Yourself Unstuck – Tip #8:

It’s common to try to detail every part of the system’s design like you see people do on YouTube. Realistically, these videos are scripted, and the drawings are fast-forwarded. In a real interview, you won’t have time to actually detail every part of the system, and that’s OK! It’s expected that you’ll abstract away pieces that aren’t particularly relevant. It’s a good practice to call out what you’re abstracting, but just focus on the general data flow of the system.

In our diagram we need to show how data is getting from one client to another client and what it does in the system. The diagram can start simple and then evolve if the interviewer wants you to “zoom in” and discuss specific parts. In our example though, the diagram could be as simple as this:

AOL Desktop Diagram

  • Our first user (AOL Desktop User A) sends a message to our servers, and we have it hit a load balancer to avoid slamming individual servers.
  • We have a fleet of servers waiting to work. Upon receiving a message, they store the data in the database, which is also behind a load balancer.
  • The database piece is left intentionally simple, but we can deep dive into it if the interviewer wants us to. This alone can be an hour-long discussion, so we recommend that you keep this simple and call out that you’re handwaving this for now so that you can finish the rest of the system first.
  • The second user (AOL Desktop User B) can get data by accessing our servers (through the load balancer) and then getting sent data back directly.

Now that we have an idea of how the system has data flowing through it, we might want to discuss one other critical piece. The sending of the data makes sense from the diagram alone, but how does that second user know it’s time to receive data? Are they checking the service every few seconds to see if something new is present for them? Is there some way we can alert the AOL user that they have a new message? The app is real-time, so how do we ensure that messages are delivered as promptly as possible? These questions are answered by knowing a bit about key ways computers can interact with other computers. There are three major types of ways computers talk to one another: Long Polling, Short Polling, and WebSockets.

These can be best explained through an analogy.

Short Polling, Long Polling, and WebSockets—are we there yet?

Short Polling

Remember when you were younger and you’d always ask the question, “Are we there yet?” Repeatedly asking this same question every few minutes is a good example of short polling. Over a short period of time, we are constantly asking, “Are we there yet? Are we there yet? Are we there yet?”

This is short polling in a nutshell. We repeatedly bombard the servers with the question, “Are there new messages for me?” Just as this was a bad idea to do in your parents’ car when you were a child, it’s a bad strategy in basically every system design structure. It’s annoying to the servers (causes extra processing power) and doesn’t scale (can you imagine the amount of resources wasted by 1 million users all asking our system this every few milliseconds?).

Long Polling

Did you ever have a forgetful aunt or uncle? Imagine that you’re a little older now and driving on a roadtrip with that person. When you both get in the car, you ask them to tell you when you all reach a particular spot on the trip. This could be fine for a shorter trip because they’d probably remember to tell you. But on a really long trip, they might forget to tell you when you reached that particular spot, perhaps because the car ride took too long and they’d simply forgotten you ever even asked them to tell you.

This, again, is an analogy for long polling. Our client reaches out and asks the server to tell us when something new has updated for us, which helps us successfully avoid the waste of resources. But this fails when the time between responses can be particularly long (think more than a few minutes). So long polling can be good when we are expecting data repeatedly, but it’s not great when it could be a while before we get the data.

Finally, let’s imagine a car ride with our best friend. We ask them to tell us once we’ve come to a particular spot on our journey. They say, “Sure, I’ll tell you when we get there,” and then we patiently wait for them to tell us. They aren’t forgetful, so we trust them to let us know no matter the length of the car trip. This, in essence, is WebSockets.

A key part that distinguishes WebSockets from long polling is that with WebSockets we can have arbitrary lengths of time pass without needing to worry about the connection timing out and the server “forgetting” us. We also have two-way communication, so the client can talk to the server, but the server can also directly talk to the client (whereas in long polling the server can “forget” how to talk to them).

For a chat app, out of these three choices, a case could be made for either long polling or WebSockets, but WebSockets is clearly a better design choice since we don’t know how long it’ll be between messages being sent and arriving.

Websockets car diagram

This is the core of every chat app, and hopefully it provides you with a good description of how we can model future problems. Start with requirements, decide what matters most for the application with non-functional requirements, show the flow of data in your app with a diagram (maybe a couple!), and then iron out the details.

Though we certainly could go deeper into any part of the design and unpack things further, this represents a good overview of how the first major chat apps were designed and shows the basic model that all chat apps since that time have been built on.

What did we leave out?

Chapter four, the fourth and final problem we will cover in part 4 is what is commonly referred to as “design ticketmaster”.

There are two major parts to this problem when it is used as an interview question:

  • Consistency under concurrency. Ticketmaster, when seen in this light, is just an extreme version of a service used to book hotels or airline tickets. There just are vastly more seats in a popular show than in a hotel or in an airplane, so the system should handle far greater concurrency, and not crack under pressure.
  • Real-time updates. Savvy candidates, who crush the first part, are then tortured further by the second one: handle people holding on, while being put onto an “online waitlist” by the service. Granted, an online waitlist is not the best product decision for Ticketmaster (”You are in line, your number is 12,345, and if all these people before you refuse to complete their transactions, you’ll be given your chance”). Nonetheless, it is a separate sub-problem that enables probing the candidate’s skills in quite a few more unique ways.

Let’s focus on the first sub-problem. The real-time part is a special case that deserves dedicated attention.

How to Get Yourself Unstuck – Tip #9:

As usual, we begin from requirements. In fact, it’s best to postulate the problem right in the form of requirements! This way we also develop a habit of thinking of system design problems from the grounds of how to solve them, as asking the right questions is at least half of solving them.

Don’t worry if you don’t know in detail what the Ticketmaster problem is about. In fact, for any problem, if you don’t fully understand its statement, jump straight to functional requirements, and clarify them—with your interviewer or with your peers—until they are crystal clear!

Here's our proposed solution

How to get yourself unstuck – tip #10:.

The best way to reason about the value of consistency is to think of what could possibly go wrong .

What could possibly go wrong in the Ticketmaster system?

These things could go wrong:, sql schema design.

As a matter of fact, Ticketmaster is one of the few system design problems where designing SQL tables schema is an essential part of the interview.

For most problems, SQL tables schema is a bit like the API spec. For most problems, SQL tables schema is important, but not too important. If you have more important topics to cover, go on; and if you need to fill time with something not too valuable and information-dense, do that with the SQL schema overview or an API spec.

With Ticketmaster, since the gist of the problem is in managing concurrency, an SQL-first design is what interviewers tend to like a lot.

Strictly speaking, there are several points of potential conflict / concurrency / race condition. All of them can be handled nicely with an RDBMS, a SQL database, as a source of truth. These points are:

  • Each unoccupied seat can only be “locked” into one order at a time.
  • Each order can only be completed (paid for) within a specific time interval.
  • Corner case: If the payment API took too long, the seat lock may have been released by the time the payment went through, in which case the seat may already be claimed as part of another order, and the order should be refunded.
  • Availability + consistency: If the Ticketmaster server goes down between (1) and (2), or between (2) and (3), the freshly restarted server should be able to pick up the state of the system from the point where the first server dropped the ball.

Here, “order” (as in the “shopping cart in progress”) is a good way to refer to the user session of completing the payment for a set of seats they have selected.

Exactly once seats to orders

(1) is the canonical case of a SQL transaction: UPDATE IF . SysDesign-wise, this statement alone is sufficient. Refer to your favorite SQL tutorial for more details. In practice, at mid-level / senior interviews, your interviewer will not judge you harshly if you make it clear you understand that an SQL engine can handle this concurrency issue for you; it is not critical to know the exact syntax.

Timestamps instead of cleanup jobs

A neat trick for (2) is to avoid timers and overall timed or scheduled (”cron”) “cleanup” jobs when you don’t need them. Instead, just write the “lock expiration timestamp” into the respective column. The “lock expiration timestamp” is simply the current time, at the moment of transaction, plus the fixed delta (5 or 10 minutes).

You probably want to make it 5.5 or 10.5 minutes, not just five minutes sharp or ten minutes sharp, to be nice to your users; final seconds ticking down is a negative user experience, and the payments API may also take several seconds to respond.

In this design, the “is seat available” condition, on the SQL level, is not just “seat is not booked yet, and seat is not part of an open order,” but “seat is not booked yet, there is no order that is not yet expired of which this seat is part of.” The last condition may be easier to understand if it’s phrased as “there is no active order created in the past five/ten minutes that contains this seat,” but it’s a good habit to add the expiration time while writing to the DB, not subtract it while querying.

Keeping the payments subsystem at bay

The corner case (3) is very similar to (2).

We just give the payments API some “time window” within which it is supposed to respond. We can’t wait forever, although this really is the corner case.

Most large-scale products would have several payment providers to choose from, hidden behind some API gateway, so that a different team would be responsible for making sure the response SLA from this payment provider is right.

CAP, anyone?

And for (4), a savvy reader, as well as a savvy interviewer, would immediately ask: So, if you claim to have both availability and consistency, you’re sacrificing partition tolerance, right? Yes, this is absolutely true from the standpoint of the CAP theorem . Such an argument is rather theoretical though. In practice, it is a good thing that our system scales horizontally… as it gives us the indulgence to ignore the CAP theorem altogether!

Outlaw idea

If your system shards horizontally, just ignore the "P" part of CAP while designing, and focus 100% on "C" and "A" parts. Just mention that your data has “no inner dependencies,” that you plan to “replicate your DBs in a leader-follower fashion,” and your service will be in great shape in production.

Of course, our databases have replicas, and, broadly speaking, network split is a case of one or several of our nodes becoming unavailable.

But when our nodes become unavailable, we just take them out of rotation and spin up the same service from the backup DB shard.

Admittedly, the above is far more difficult than it sounds. But the very argument holds true. Without loss of generality, consider the “one show one DB” design. This DB would be leader-follower replicated, likely to one or two replicas. If a DB is down, we can, automagically, take one of these replicas, promote it to a leader, and restart the system, as if nothing happened.

This would require synchronous DB replication, so that whatever tickets we have already sold are correctly marked as such. But we want this anyway! Otherwise, moving from one node to another would be a cumbersome process that requires reconciliation, collating data from different databases (seats, completed payments, issued tickets, etc.)

When outlining the above, don’t forget to mention that it is important for the times on these DB instances to be somewhat close to each other. No need to be sub-sub-second synchronized; in practice, it’s enough to be within several seconds, give or take. As long as we’re conservative with timeouts, and as long as the “flipping” from an unhealthy node+DB pair to a healthy one takes more than these few seconds, no inconsistencies will be introduced.

That’s about it.

The Real-Time Part

Rendering the seat map, which the users see when they land on the page of a particular show, is just about maintaining a materialized view of the database.

If we are talking about a super-popular show, with thousands and thousands of visitors, we may just re-generate a snapshot of this view every second or so and serve it off some passive storage (or even from a CDN with a quick-to-expire caching policy).

And, especially if your interviewer is picky, you can describe a pub-sub solution, so that each and every viewer of the show page gets instantaneous updates while a seat, or several seats, goes through its lifecycle journey. This journey can be visualized as a simple Markov process:

Markov diagram

There are five arrows on this diagram:

  • “Booked” : When a seat goes from “green” to “yellow,” from available to “someone’s trying to book it now.”
  • “Canceled” : The person who was “holding” the order to book this seat (possibly, among others) has explicitly clicked “cancel.”
  • “Timed out” : The person who was “holding” the order to book this seat (possibly, among others) did not complete the payment in time, and, thus, the seat(s) is/are back to the pool of the available ones.
  • “Paid for” : The order, which this seat was part of, was paid for, and the seat goes from “yellow” to “gray”—no longer available for purchase.
  • “User returned the order” : The person, who previously had successfully booked and paid for this seat, has refunded their order, which returns the seat to the pool of seats available for purchase.

Each of these five orders can yield an event that makes it into the PubSub bus. Each person, who is looking at the web page with the seats map, can subscribe to the updates to this bus, and the updates would be streamed to them, in a “push, not pull” way, likely via a WebSocket. Thus, each person would be looking at an accurate picture of the seat map, colored into green, yellow, and gray, for “available,” “part of an order,” and “unavailable,” respectively.

To earn bonus points from your interviewer, consider…

Part 4: outro.

Fin . This is the end, my friend. 📖

If you read all 4 parts, congratulations are in order! 🎉 You learned high-level ideas to strategically approach system design interviews, the 15 fundamental system design concepts, a 3-step framework to solve any system design problem, and you watched us design simple systems from scratch. Plus, you picked up a bunch of useful tips and tricks along the way.

We want to thank you for reading this guide and for entrusting us with your precious time. We hope that you agree that you’ll be a better interview candidate and a better engineer because you took the time to experience this guide. Here’s a final tip: Give yourself some more time: for the ideas to integrate, to take the concepts further, and to practice on your own. Thank you for joining us on this journey! 🖖

Zoom call with everyone doing live long and prosper sign

Here is a delightful picture of the team that made the video Two Ex-Google System Design Experts Compete: Who will design the better system?

At this point we want to do three things: Tell you what’s on the horizon for us, give you a way to interact with us, and provide you some additional resources in case you’re still hungry to learn more.

What’s next for the team that made this guide

You! And hearing what you thought of this guide. What elements were the most useful/actionable? Which parts could benefit from additional examples or clarity? Once we grok that, we’ll know exactly what to do. The community might give us harsh critical feedback, shout from the rooftops that they’d love to see us make more stuff like this, or (ideally) some combination of both.

Some possibilities we’ve discussed:

  • Make this an ongoing thing. Maybe it’s a newsletter, maybe it’s a meetup, maybe it’s neither of those formats, but the idea would be to ensure that we consistently release stuff like this.
  • Make a V2 of this guide that takes your feedback into account.
  • Make a system design guide for other levels (if we did this, most likely we’d make a guide for an “above L5” or “senior plus” audience).
  • Make more system design content like the stuff on our YouTube channel .
  • Make cool live system design events (though we would want to hear from you about what kind of events you’d most like to see).

Other things we’d like to hear about:

  • People who want to make content with us (could be written, video, or both)

If you have feedback, ideas, or random thoughts → please fill out feedback form

(we promise a human will read every entry!) resources

  • Check out a bunch of our system design interview replays .
  • Watch this video: Senior Engineer Gets Mentored by System Design Expert
  • Read Designing Data-Intensive Applications by Martin Kleppmann. If you're an engineer who's above the senior level (aka “senior plus”), Kleppmann's book is the bible of system design.
  • Gaurav Sen on YouTube . In terms of simple and effective short-form videos about system design, Gaurav Sen is the best the world currently has to offer. A solid video to start with is System Design Primer ⭐️: How to start with distributed systems?
  • David Malan (teaches CS at Harvard). David is a legend. A great place to begin with him is his CS75 (Summer 2012) Lecture 9 Scalability Harvard Web Development .
  • Architecture Notes . This site doesn’t have a ton of content yet, but it's basically all comics and diagrams that help make hard concepts really easy to understand.
  • High Scalability is a good blog that will help you catch up on stuff related to system design. One fun piece of theirs to check out is called, “ Scaling Kim Kardashian to 100 Million Page Views .” It's an easy read about a real-world system.
  • A Beginner's Guide to HTTP . This is a great lesson for anyone looking to get better mastery of HTTP (which comes up a lot in system design interviews).
  • The precise meanings of “must” / “must not” / “should” / “should not. ” Tip: Over 99% of interviewers appreciate when candidates juggle these terms confidently. Our readers would generally benefit from understanding such terminology, as they can use it right away in their interviews.

Creator and author

Special thanks, we know exactly what to do and say to get the company, title, and salary you want..

Interview prep and job hunting are chaos and pain. We can help. Really.

App screenshot

  • Systems Analysis and Design: Unveiling the Foundations of Modern Systems


Systems, in all their complexity, serve as the backbone of modern organizations and society as a whole. Unveiling the foundations of modern systems through systematic analysis and design processes is essential to ensure efficiency, adaptability, and innovation. By employing systems analysis and design methodologies, organizations can dissect intricate systems, identify inefficiencies, and strategically design enhancements or entirely new solutions.

As businesses evolve, their systems often face the challenge of staying relevant and efficient. Whether it’s updating existing frameworks or implementing new ones altogether, this process plays a vital role in enhancing overall performance. For professionals aiming to boost their organization’s efficiency, delving into the realm of system analysis and design offers invaluable insights.

Here, we will delve into the fundamentals of modern systems analysis and design, exploring their history, principles, and significance in today’s world.

The Evolution of Systems Analysis and Design

The roots of modern systems analysis and design can be traced back to the mid-20th century when the world was transitioning into the computer age. The advent of large-scale computing systems necessitated a structured approach to problem-solving and system development. Pioneers like Norbert Wiener, who developed the field of cybernetics, and Joseph M. Juran, who emphasized the importance of quality management, laid the groundwork for this emerging discipline.

What is System in System Analysis and Design?

The term “systems analysis” gained prominence in the 1950s when organizations sought ways to improve their operational efficiency by applying scientific methods to problem-solving. Over the years, the discipline evolved, incorporating elements from various fields, including engineering, mathematics, psychology, and management. This evolution led to the birth of systems analysis and design as we know it today.

In system analysis and design, a “system” refers to a complex entity or framework composed of interrelated components working together to achieve a common goal or objective. Systems can vary widely in nature, ranging from technical systems like software applications and computer networks to organizational systems like business processes and supply chains.

Understanding Systems Analysis and Design

What is system analysis and design.

System Analysis and Design (SAD) is a structured approach to developing and improving systems, encompassing both technical and managerial aspects. At its core, SAD involves analyzing existing systems, identifying areas for improvement, and designing new systems or enhancements to meet specific objectives.

Characteristics of Modern System Analysis and Design


Understanding systems is fundamental to modern systems analysis and design, as it forms the basis for effectively modeling and optimizing complex processes, whether they are simple or intricate. Here are the key characteristics of modern systems analysis and design:

1. Interconnectedness

It is a fundamental concept in system snalysis and design, highlighting the intricate relationships between elements within a system. Every element within a system is interconnected with other elements and contributes to the overall functioning of the system. Changes or disturbances in one part of the system can have cascading effects throughout the entire system. In practical terms, consider a transportation system. If a single traffic light malfunctions, it can lead to traffic jams, affecting the entire flow of transportation within the area.

The purpose of a system defines its reason for existence and guides the actions of its components. For example, in an educational institution, the purpose of the enrollment system is to facilitate student registration and course selection, ensuring that students can participate in classes as efficiently as possible.

3. Boundaries

Systems are delineated by boundaries that separate them from their environment. These boundaries are essential for understanding the system’s interactions with its surroundings. Modern systems analysis and design require well-defined boundaries that allow us to differentiate what is within the system from what is outside. For instance, in an e-commerce website, the system boundary includes all the components necessary to facilitate online shopping (e.g., the website itself, the shopping cart, payment processing), while the external environment includes users, external payment gateways, and web servers.

4. Feedback

Feedback mechanisms are an integral part of modern systems analysis and design, serving to maintain stability and improve performance. In many systems, there are mechanisms in place to collect information from the environment and use it to adjust the system’s behavior. In a heating and cooling system for a building, temperature sensors provide feedback to the system’s control unit, allowing it to regulate the heating or cooling output to maintain the desired temperature, thus creating a feedback loop that ensures a comfortable environment.

Understanding these characteristics is critical in systems analysis and design because they guide the way systems are structured and managed. Effective design and analysis require a deep comprehension of how elements within a system interact, the objectives the system aims to achieve, the boundaries that define its scope, and the feedback mechanisms that ensure its stability and adaptability. By recognizing these fundamental principles, analysts and designers can develop systems that are more efficient, robust, and aligned with the intended objectives, ultimately contributing to the success of modern organizations and endeavors.

Difference Between System Analysis and System Design

System analysis and system design are two distinct phases in the process of developing or improving systems, each with its own focus and objectives. Here’s a breakdown of the key differences between the two:

System Analysis:

Focus: System analysis primarily focuses on understanding the existing system or problem domain, identifying requirements, and defining objectives.

Activities: During system analysis, the emphasis is on gathering and documenting requirements, analyzing existing systems, and identifying areas for improvement.

Outcome: The main deliverables of system analysis include requirements specifications, system models (such as data flow diagrams or use cases), and a thorough understanding of user needs and organizational goals.

System Design:

Focus: System design shifts the focus towards creating a solution to meet the identified requirements and objectives.

Activities: System design involves conceptualizing, planning, and detailing the structure and behavior of the proposed system. This includes designing the system architecture, defining data structures, specifying interfaces, and planning for implementation.

Outcome: The key deliverables of system design include system architecture diagrams, detailed design specifications, interface designs, and plans for implementation and testing.

In summary, system analysis is concerned with understanding the problem and gathering requirements, while system design is focused on creating a solution that addresses those requirements effectively. System analysis sets the foundation by defining what needs to be done, while system design translates those requirements into a tangible solution by determining how it will be done.

Both phases are essential for successful system development, as they ensure that the final solution meets the needs of users and aligns with organizational objectives.

The Systems Analysis Process

The Systems Analysis Process is a structured and systematic approach to understanding, designing, and implementing systems that meet specific objectives. Let’s explore each step in more detail:

1. Problem Identification

This initial phase of systems analysis and design involves recognizing the need for a new system or the improvement of an existing one. Problems could be related to inefficiencies, outdated technology, changing business requirements, or a need for entirely new capabilities. It’s essential to involve stakeholders, such as end-users and decision-makers, to ensure a comprehensive understanding of the issues and their impact.

2. Requirements Gathering

Once the problem is identified, the next step is to gather requirements. This involves collecting information about the system’s functionality, constraints, and user needs. It’s crucial to identify both functional requirements (what the system should do) and non-functional requirements (how it should do it). Techniques such as surveys, interviews, and observations are commonly used to extract requirements from stakeholders.

3. System Design

System design is the creative phase where a detailed blueprint of the system is developed. Designers define how the system will operate and meet its goals based on the gathered requirements. This phase includes architectural design, data modeling, constructing of a design system, and specifying hardware and software components. It aims to ensure that the system is both efficient and aligned with organizational objectives.

4. Implementation

Implementation is the process of building the system according to the design specifications. It involves coding, configuring hardware and software, and integrating various components. During this phase, it’s important to follow best practices, coding standards, and ensure quality control to minimize errors and optimize performance.

Once the system is implemented, rigorous testing is conducted to ensure it performs as expected and meets its objectives. This phase includes functional testing, integration testing, performance testing, and user acceptance testing . Testing is an essential step for systems analysis and design and identifies and addresses any defects or issues before the system is deployed to users.

6. Deployment

Deployment is the process of rolling out the system for regular use. This involves installing it on the target hardware, configuring it, and making it available to end-users. A smooth deployment is critical to ensure minimal disruption and user adoption.

7. Maintenance and Evaluation

The final phase involves continuously monitoring and improving the system to ensure it remains effective and aligned with organizational goals. Maintenance activities can include bug fixes, updates, and enhancements. Evaluation involves assessing the system’s performance and its ability to meet the initial objectives. Feedback from users and ongoing analysis help identify areas for improvement and future enhancements.

Throughout the systems analysis and design process, effective communication with stakeholders is essential. It’s important to maintain transparency, involve end-users, and adapt to changing requirements as needed. This iterative approach to systems analysis and design ensures that the resulting system is not only functional but also adaptable and aligned with the evolving needs of the organization.

The Importance of Systems Analysis and Design

The importance of systems analysis and design spans various domains, and its impact on modern society cannot be overstated. Here’s a deeper look at why this discipline is crucial in different fields:

1. Efficiency and Productivity: System analysis and design aims to identify areas for improvement within existing systems to enhance their performance, Properly designed systems are instrumental in streamlining processes and optimizing workflow. They help in automating repetitive tasks, reducing manual intervention, and minimizing the potential for human error. By improving efficiency, systems contribute to increased productivity, allowing organizations to accomplish more with the same or fewer resources.

2. Cost Reduction: Effective systems are often designed with a focus on resource optimization. They can help organizations identify areas of operational inefficiency and waste, leading to cost reduction. By reducing unnecessary expenses and improving resource allocation, systems analysis and design can have a direct impact on an organization’s financial health.

3. Adaptability and Innovation

In today’s fast-paced, technology-driven world, systems must be adaptable to remain relevant. Well-designed systems are flexible and can evolve with changing requirements and technological advancements. System analysis and design considers the scalability of systems to accommodate future growth and changes in user requirements. They provide a foundation for innovation, allowing organizations to seamlessly integrate new technologies and features to stay competitive and responsive to market dynamics.

4. Problem-Solving Systems Analysis and Design Provides a Structured Approach to Problem-Solving

It enables organizations to identify and address issues systematically rather than relying on ad-hoc fixes. By understanding the root causes of problems and their implications, systems analysis helps in implementing sustainable solutions that prevent issues from recurring.

5. User Satisfaction

Involving end-users in the systems analysis and design process is critical for tailoring systems to meet their needs and preferences. When users have a say in the design, they are more likely to be satisfied with the final product. Higher user satisfaction leads to increased adoption, improved usability, and a more positive overall experience .

Consistent system design can help increase the beneficial impact of a system, but designing a whole system can be extremely difficult without expertise. Our design system development services are tailored to encapsulate every vital design aspect. We specialize in creating systems that are not only adaptable and cost-effective but also user-centric, ensuring that they meet the evolving needs of your business and your customers.

When you partner with DOOR3, you’re not just investing in a system; you’re investing in a future-proof solution that aligns with your strategic goals, enhances your operational efficiency, and elevates your user experience to new heights. Let’s collaborate to build a system that not only solves today’s challenges but also paves the way for tomorrow’s opportunities.

Here’s how systems analysis and design benefit specific domains:


In the business world, systems analysis and design help organizations improve processes, manage data efficiently, and enhance decision-making. This, in turn, contributes to competitiveness and profitability.

Effective healthcare systems are essential for patient care, administrative efficiency, and the secure management of health records. Systems analysis and design in healthcare can lead to better patient outcomes and streamlined operations.

In the financial sector , systems are responsible for critical functions such as transaction processing, risk management, and customer service. Properly designed systems are essential to ensure accuracy and security in financial operations.


From traffic management systems to airline reservation platforms, transportation systems are vital for ensuring safety, efficiency, and the smooth movement of people and goods. Systems analysis and design enhance transportation operations and passenger experience.

Information Technology

IT systems are the backbone of most modern organizations. Systems analysis and design in IT result in robust, secure, and scalable solutions that support business operations, communication, and data management. The efficacy of an IT system is also dependent on its corresponding design system to ensure ease of use for all users.

Systems analysis and design have deep-seated roots in the evolution of modern society and technology. As systems grow in complexity and importance, the principles and methodologies of this discipline continue to shape the way we work, live, and communicate. Understanding the foundations of systems analysis and design is essential for ensuring the success of modern organizations and for addressing the ever-evolving challenges and opportunities in today’s world. As we continue to advance, these foundational concepts will remain invaluable in building and optimizing design systems for the future.

System Analysis and Design Example

Let’s consider an example of system analysis and design for a project management software:

Requirement Gathering: System analysts conduct interviews and workshops with project managers, team members, and stakeholders to gather requirements. They identify key functionalities such as project planning, task assignment, progress tracking, document sharing, and communication.

Problem Understanding: Analysts analyze the challenges faced by project teams, such as difficulty in coordinating tasks, tracking project progress, and ensuring timely communication among team members.

Feasibility Analysis: Analysts assess the feasibility of developing a new project management software. They consider factors such as budget, available technology, scalability requirements, and potential benefits to project teams and organizations.

Requirement Analysis: Analysts prioritize requirements and define clear specifications for features like Gantt charts for visual project planning, task boards for agile task management, and real-time collaboration tools for team communication.

System Modeling: Analysts create models such as use case diagrams to represent interactions between users and the system, class diagrams to define data entities like projects, tasks, and users, and sequence diagrams to illustrate the flow of interactions within the system.

Documentation: Analysts document their findings, including requirement specifications detailing functional and non-functional requirements, use case descriptions, and system design constraints.

Architecture Design: Designers create a modular architecture for the project management software, including front-end components (user interface), back-end components (server-side logic), and database architecture (for storing project data and user information).

Interface Design: Designers create wireframes and prototypes to design intuitive user interfaces for features such as project dashboards, task lists, and discussion forums. They focus on usability and accessibility to ensure a positive user experience.

Database Design: Designers design the database schema, including tables for projects, tasks, users, and project-related documents. They define relationships between entities and optimize database performance for efficient data retrieval and storage.

System Integration: Designers plan for integrating the project management software with external tools and services, such as calendar applications for scheduling, email clients for notifications, and version control systems for document management.

Security Design: Designers implement security measures such as encryption for protecting sensitive project data, role-based access control to manage user permissions, and secure authentication mechanisms to prevent unauthorized access.

Scalability and Performance: Designers consider scalability requirements to ensure the system can handle growing project portfolios and performance optimization techniques to minimize response times and support concurrent user interactions.

Through systematic analysis and thoughtful design, the project management software can streamline project workflows, improve collaboration among team members, and enhance overall project efficiency and success.

FAQ’s: Modern System Analysis and Design

1. what is system analysis in software engineering.

System analysis in software engineering refers to the process of studying an existing system or problem domain to understand its requirements, functionalities, and limitations. It involves gathering and analyzing requirements, modeling system behavior, and documenting findings to lay the groundwork for system design and development.

2. What are the Objectives of System Analysis?

The objectives of system analysis include identifying requirements, improving system performance, ensuring reliability, enhancing user experience, facilitating decision-making, supporting scalability, ensuring security and compliance, and promoting cost efficiency.

3. What are the Characteristics of a System in System Analysis and Design?

In system analysis and design, a system is characterized by its components, boundaries, inputs, outputs, interrelationships, and objectives. Systems can be hierarchical, open or closed, and may exhibit emergent properties arising from the interactions of their components.

Looking to build a system to run your business? DOOR3 can help you achieve your business goals with custom software development . Tell us more about your project here.

Nicholas Turturro

Discover the Possibilities with a Free Quote

Share Your Requirements with Us

  • Tailored Feedback About Your Software Development Needs
  • 30 Minute Zoom Call with Technology Expert
  • No Obligation, No Commitment

Step 1 of 4

Step 2 of 4

Step 3 of 4

Step 4 of 4

  • All Authors

Think it might be time to bring in some extra help?

Read these next....

How to Rescue a Failing Software Project

How to Rescue a Failing Software Project

The only thing worse than a project that no one wants is a project that everyone wants. A few years...

Heuristic Evaluation: A Critical Tool for Business Success

Heuristic Evaluation: A Critical Tool for Business Success

Heuristic Evaluation: A Critical Tool for Business Success In the competitive world of software development, creating intuitive and user-friendly interfaces...

How DOOR3 Helps Clients Understand Hard Truths About Their Software

How DOOR3 Helps Clients Understand Hard Truths About Their Software

How DOOR3 Helps Clients Understand Hard Truths About Their Software At DOOR3, we know that building successful software is not...

Request a free project quote

We will review your request and provide a project cost assessment within 1 — 2 working days.

Your details

This field is required

40 problem-solving techniques and processes

Problem solving workshop

All teams and organizations encounter challenges. Approaching those challenges without a structured problem solving process can end up making things worse.

Proven problem solving techniques such as those outlined below can guide your group through a process of identifying problems and challenges , ideating on possible solutions , and then evaluating and implementing the most suitable .

In this post, you'll find problem-solving tools you can use to develop effective solutions. You'll also find some tips for facilitating the problem solving process and solving complex problems.

Design your next session with SessionLab

Join the 150,000+ facilitators 
using SessionLab.

Recommended Articles

A step-by-step guide to planning a workshop, 54 great online tools for workshops and meetings, how to create an unforgettable training session in 8 simple steps.

  • 18 Free Facilitation Resources We Think You’ll Love

What is problem solving?

Problem solving is a process of finding and implementing a solution to a challenge or obstacle. In most contexts, this means going through a problem solving process that begins with identifying the issue, exploring its root causes, ideating and refining possible solutions before implementing and measuring the impact of that solution.

For simple or small problems, it can be tempting to skip straight to implementing what you believe is the right solution. The danger with this approach is that without exploring the true causes of the issue, it might just occur again or your chosen solution may cause other issues.

Particularly in the world of work, good problem solving means using data to back up each step of the process, bringing in new perspectives and effectively measuring the impact of your solution.

Effective problem solving can help ensure that your team or organization is well positioned to overcome challenges, be resilient to change and create innovation. In my experience, problem solving is a combination of skillset, mindset and process, and it’s especially vital for leaders to cultivate this skill.

A group of people looking at a poster with notes on it

What is the seven step problem solving process?

A problem solving process is a step-by-step framework from going from discovering a problem all the way through to implementing a solution.

With practice, this framework can become intuitive, and innovative companies tend to have a consistent and ongoing ability to discover and tackle challenges when they come up.

You might see everything from a four step problem solving process through to seven steps. While all these processes cover roughly the same ground, I’ve found a seven step problem solving process is helpful for making all key steps legible.

We’ll outline that process here and then follow with techniques you can use to explore and work on that step of the problem solving process with a group.

The seven-step problem solving process is:

1. Problem identification 

The first stage of any problem solving process is to identify the problem(s) you need to solve. This often looks like using group discussions and activities to help a group surface and effectively articulate the challenges they’re facing and wish to resolve.

Be sure to align with your team on the exact definition and nature of the problem you’re solving. An effective process is one where everyone is pulling in the same direction – ensure clarity and alignment now to help avoid misunderstandings later.

2. Problem analysis and refinement

The process of problem analysis means ensuring that the problem you are seeking to solve is  the   right problem . Choosing the right problem to solve means you are on the right path to creating the right solution.

At this stage, you may look deeper at the problem you identified to try and discover the root cause at the level of people or process. You may also spend some time sourcing data, consulting relevant parties and creating and refining a problem statement.

Problem refinement means adjusting scope or focus of the problem you will be aiming to solve based on what comes up during your analysis. As you analyze data sources, you might discover that the root cause means you need to adjust your problem statement. Alternatively, you might find that your original problem statement is too big to be meaningful approached within your current project.

Remember that the goal of any problem refinement is to help set the stage for effective solution development and deployment. Set the right focus and get buy-in from your team here and you’ll be well positioned to move forward with confidence.

3. Solution generation

Once your group has nailed down the particulars of the problem you wish to solve, you want to encourage a free flow of ideas connecting to solving that problem. This can take the form of problem solving games that encourage creative thinking or techniquess designed to produce working prototypes of possible solutions. 

The key to ensuring the success of this stage of the problem solving process is to encourage quick, creative thinking and create an open space where all ideas are considered. The best solutions can often come from unlikely places and by using problem solving techniques that celebrate invention, you might come up with solution gold. 

problem solving and system design

4. Solution development

No solution is perfect right out of the gate. It’s important to discuss and develop the solutions your group has come up with over the course of following the previous problem solving steps in order to arrive at the best possible solution. Problem solving games used in this stage involve lots of critical thinking, measuring potential effort and impact, and looking at possible solutions analytically. 

During this stage, you will often ask your team to iterate and improve upon your front-running solutions and develop them further. Remember that problem solving strategies always benefit from a multitude of voices and opinions, and not to let ego get involved when it comes to choosing which solutions to develop and take further.

Finding the best solution is the goal of all problem solving workshops and here is the place to ensure that your solution is well thought out, sufficiently robust and fit for purpose. 

5. Decision making and planning

Nearly there! Once you’ve got a set of possible, you’ll need to make a decision on which to implement. This can be a consensus-based group decision or it might be for a leader or major stakeholder to decide. You’ll find a set of effective decision making methods below.

Once your group has reached consensus and selected a solution, there are some additional actions that also need to be decided upon. You’ll want to work on allocating ownership of the project, figure out who will do what, how the success of the solution will be measured and decide the next course of action.

Set clear accountabilities, actions, timeframes, and follow-ups for your chosen solution. Make these decisions and set clear next-steps in the problem solving workshop so that everyone is aligned and you can move forward effectively as a group. 

Ensuring that you plan for the roll-out of a solution is one of the most important problem solving steps. Without adequate planning or oversight, it can prove impossible to measure success or iterate further if the problem was not solved. 

6. Solution implementation 

This is what we were waiting for! All problem solving processes have the end goal of implementing an effective and impactful solution that your group has confidence in.

Project management and communication skills are key here – your solution may need to adjust when out in the wild or you might discover new challenges along the way. For some solutions, you might also implement a test with a small group and monitor results before rolling it out to an entire company.

You should have a clear owner for your solution who will oversee the plans you made together and help ensure they’re put into place. This person will often coordinate the implementation team and set-up processes to measure the efficacy of your solution too.

7. Solution evaluation 

So you and your team developed a great solution to a problem and have a gut feeling it’s been solved. Work done, right? Wrong. All problem solving strategies benefit from evaluation, consideration, and feedback.

You might find that the solution does not work for everyone, might create new problems, or is potentially so successful that you will want to roll it out to larger teams or as part of other initiatives. 

None of that is possible without taking the time to evaluate the success of the solution you developed in your problem solving model and adjust if necessary.

Remember that the problem solving process is often iterative and it can be common to not solve complex issues on the first try. Even when this is the case, you and your team will have generated learning that will be important for future problem solving workshops or in other parts of the organization. 

It’s also worth underlining how important record keeping is throughout the problem solving process. If a solution didn’t work, you need to have the data and records to see why that was the case. If you go back to the drawing board, notes from the previous workshop can help save time.

What does an effective problem solving process look like?

Every effective problem solving process begins with an agenda . In our experience, a well-structured problem solving workshop is one of the best methods for successfully guiding a group from exploring a problem to implementing a solution.

The format of a workshop ensures that you can get buy-in from your group, encourage free-thinking and solution exploration before making a decision on what to implement following the session.

This Design Sprint 2.0 template is an effective problem solving process from top agency AJ&Smart. It’s a great format for the entire problem solving process, with four-days of workshops designed to surface issues, explore solutions and even test a solution.

Check it for an example of how you might structure and run a problem solving process and feel free to copy and adjust it your needs!

For a shorter process you can run in a single afternoon, this remote problem solving agenda will guide you effectively in just a couple of hours.

Whatever the length of your workshop, by using SessionLab, it’s easy to go from an idea to a complete agenda . Start by dragging and dropping your core problem solving activities into place . Add timings, breaks and necessary materials before sharing your agenda with your colleagues.

The resulting agenda will be your guide to an effective and productive problem solving session that will also help you stay organized on the day!

problem solving and system design

Complete problem-solving methods

In this section, we’ll look at in-depth problem-solving methods that provide a complete end-to-end process for developing effective solutions. These will help guide your team from the discovery and definition of a problem through to delivering the right solution.

If you’re looking for an all-encompassing method or problem-solving model, these processes are a great place to start. They’ll ask your team to challenge preconceived ideas and adopt a mindset for solving problems more effectively.

Six Thinking Hats

Individual approaches to solving a problem can be very different based on what team or role an individual holds. It can be easy for existing biases or perspectives to find their way into the mix, or for internal politics to direct a conversation.

Six Thinking Hats is a classic method for identifying the problems that need to be solved and enables your team to consider them from different angles, whether that is by focusing on facts and data, creative solutions, or by considering why a particular solution might not work.

Like all problem-solving frameworks, Six Thinking Hats is effective at helping teams remove roadblocks from a conversation or discussion and come to terms with all the aspects necessary to solve complex problems.

The Six Thinking Hats   #creative thinking   #meeting facilitation   #problem solving   #issue resolution   #idea generation   #conflict resolution   The Six Thinking Hats are used by individuals and groups to separate out conflicting styles of thinking. They enable and encourage a group of people to think constructively together in exploring and implementing change, rather than using argument to fight over who is right and who is wrong.

Lightning Decision Jam

Featured courtesy of Jonathan Courtney of AJ&Smart Berlin, Lightning Decision Jam is one of those strategies that should be in every facilitation toolbox. Exploring problems and finding solutions is often creative in nature, though as with any creative process, there is the potential to lose focus and get lost.

Unstructured discussions might get you there in the end, but it’s much more effective to use a method that creates a clear process and team focus.

In Lightning Decision Jam, participants are invited to begin by writing challenges, concerns, or mistakes on post-its without discussing them before then being invited by the moderator to present them to the group.

From there, the team vote on which problems to solve and are guided through steps that will allow them to reframe those problems, create solutions and then decide what to execute on. 

By deciding the problems that need to be solved as a team before moving on, this group process is great for ensuring the whole team is aligned and can take ownership over the next stages. 

Lightning Decision Jam (LDJ)   #action   #decision making   #problem solving   #issue analysis   #innovation   #design   #remote-friendly   It doesn’t matter where you work and what your job role is, if you work with other people together as a team, you will always encounter the same challenges: Unclear goals and miscommunication that cause busy work and overtime Unstructured meetings that leave attendants tired, confused and without clear outcomes. Frustration builds up because internal challenges to productivity are not addressed Sudden changes in priorities lead to a loss of focus and momentum Muddled compromise takes the place of clear decision- making, leaving everybody to come up with their own interpretation. In short, a lack of structure leads to a waste of time and effort, projects that drag on for too long and frustrated, burnt out teams. AJ&Smart has worked with some of the most innovative, productive companies in the world. What sets their teams apart from others is not better tools, bigger talent or more beautiful offices. The secret sauce to becoming a more productive, more creative and happier team is simple: Replace all open discussion or brainstorming with a structured process that leads to more ideas, clearer decisions and better outcomes. When a good process provides guardrails and a clear path to follow, it becomes easier to come up with ideas, make decisions and solve problems. This is why AJ&Smart created Lightning Decision Jam (LDJ). It’s a simple and short, but powerful group exercise that can be run either in-person, in the same room, or remotely with distributed teams.

Problem Definition Process

While problems can be complex, the problem-solving methods you use to identify and solve those problems can often be simple in design. 

By taking the time to truly identify and define a problem before asking the group to reframe the challenge as an opportunity, this method is a great way to enable change.

Begin by identifying a focus question and exploring the ways in which it manifests before splitting into five teams who will each consider the problem using a different method: escape, reversal, exaggeration, distortion or wishful. Teams develop a problem objective and create ideas in line with their method before then feeding them back to the group.

This method is great for enabling in-depth discussions while also creating space for finding creative solutions too!

Problem Definition   #problem solving   #idea generation   #creativity   #online   #remote-friendly   A problem solving technique to define a problem, challenge or opportunity and to generate ideas.

The 5 Whys 

Sometimes, a group needs to go further with their strategies and analyze the root cause at the heart of organizational issues. An RCA or root cause analysis is the process of identifying what is at the heart of business problems or recurring challenges. 

The 5 Whys is a simple and effective method of helping a group go find the root cause of any problem or challenge and conduct analysis that will deliver results. 

By beginning with the creation of a problem statement and going through five stages to refine it, The 5 Whys provides everything you need to truly discover the cause of an issue.

The 5 Whys   #hyperisland   #innovation   This simple and powerful method is useful for getting to the core of a problem or challenge. As the title suggests, the group defines a problems, then asks the question “why” five times, often using the resulting explanation as a starting point for creative problem solving.

World Cafe is a simple but powerful facilitation technique to help bigger groups to focus their energy and attention on solving complex problems.

World Cafe enables this approach by creating a relaxed atmosphere where participants are able to self-organize and explore topics relevant and important to them which are themed around a central problem-solving purpose. Create the right atmosphere by modeling your space after a cafe and after guiding the group through the method, let them take the lead!

Making problem-solving a part of your organization’s culture in the long term can be a difficult undertaking. More approachable formats like World Cafe can be especially effective in bringing people unfamiliar with workshops into the fold. 

World Cafe   #hyperisland   #innovation   #issue analysis   World Café is a simple yet powerful method, originated by Juanita Brown, for enabling meaningful conversations driven completely by participants and the topics that are relevant and important to them. Facilitators create a cafe-style space and provide simple guidelines. Participants then self-organize and explore a set of relevant topics or questions for conversation.

Discovery & Action Dialogue (DAD)

One of the best approaches is to create a safe space for a group to share and discover practices and behaviors that can help them find their own solutions.

With DAD, you can help a group choose which problems they wish to solve and which approaches they will take to do so. It’s great at helping remove resistance to change and can help get buy-in at every level too!

This process of enabling frontline ownership is great in ensuring follow-through and is one of the methods you will want in your toolbox as a facilitator.

Discovery & Action Dialogue (DAD)   #idea generation   #liberating structures   #action   #issue analysis   #remote-friendly   DADs make it easy for a group or community to discover practices and behaviors that enable some individuals (without access to special resources and facing the same constraints) to find better solutions than their peers to common problems. These are called positive deviant (PD) behaviors and practices. DADs make it possible for people in the group, unit, or community to discover by themselves these PD practices. DADs also create favorable conditions for stimulating participants’ creativity in spaces where they can feel safe to invent new and more effective practices. Resistance to change evaporates as participants are unleashed to choose freely which practices they will adopt or try and which problems they will tackle. DADs make it possible to achieve frontline ownership of solutions.
Design Sprint 2.0

Want to see how a team can solve big problems and move forward with prototyping and testing solutions in a few days? The Design Sprint 2.0 template from Jake Knapp, author of Sprint, is a complete agenda for a with proven results.

Developing the right agenda can involve difficult but necessary planning. Ensuring all the correct steps are followed can also be stressful or time-consuming depending on your level of experience.

Use this complete 4-day workshop template if you are finding there is no obvious solution to your challenge and want to focus your team around a specific problem that might require a shortcut to launching a minimum viable product or waiting for the organization-wide implementation of a solution.

Open space technology

Open space technology- developed by Harrison Owen – creates a space where large groups are invited to take ownership of their problem solving and lead individual sessions. Open space technology is a great format when you have a great deal of expertise and insight in the room and want to allow for different takes and approaches on a particular theme or problem you need to be solved.

Start by bringing your participants together to align around a central theme and focus their efforts. Explain the ground rules to help guide the problem-solving process and then invite members to identify any issue connecting to the central theme that they are interested in and are prepared to take responsibility for.

Once participants have decided on their approach to the core theme, they write their issue on a piece of paper, announce it to the group, pick a session time and place, and post the paper on the wall. As the wall fills up with sessions, the group is then invited to join the sessions that interest them the most and which they can contribute to, then you’re ready to begin!

Everyone joins the problem-solving group they’ve signed up to, record the discussion and if appropriate, findings can then be shared with the rest of the group afterward.

Open Space Technology   #action plan   #idea generation   #problem solving   #issue analysis   #large group   #online   #remote-friendly   Open Space is a methodology for large groups to create their agenda discerning important topics for discussion, suitable for conferences, community gatherings and whole system facilitation

Techniques to identify and analyze problems

Using a problem-solving method to help a team identify and analyze a problem can be a quick and effective addition to any workshop or meeting.

While further actions are always necessary, you can generate momentum and alignment easily, and these activities are a great place to get started.

We’ve put together this list of techniques to help you and your team with problem identification, analysis, and discussion that sets the foundation for developing effective solutions.

Let’s take a look!

Fishbone Analysis

Organizational or team challenges are rarely simple, and it’s important to remember that one problem can be an indication of something that goes deeper and may require further consideration to be solved.

Fishbone Analysis helps groups to dig deeper and understand the origins of a problem. It’s a great example of a root cause analysis method that is simple for everyone on a team to get their head around. 

Participants in this activity are asked to annotate a diagram of a fish, first adding the problem or issue to be worked on at the head of a fish before then brainstorming the root causes of the problem and adding them as bones on the fish. 

Using abstractions such as a diagram of a fish can really help a team break out of their regular thinking and develop a creative approach.

Fishbone Analysis   #problem solving   ##root cause analysis   #decision making   #online facilitation   A process to help identify and understand the origins of problems, issues or observations.

Problem Tree 

Encouraging visual thinking can be an essential part of many strategies. By simply reframing and clarifying problems, a group can move towards developing a problem solving model that works for them. 

In Problem Tree, groups are asked to first brainstorm a list of problems – these can be design problems, team problems or larger business problems – and then organize them into a hierarchy. The hierarchy could be from most important to least important or abstract to practical, though the key thing with problem solving games that involve this aspect is that your group has some way of managing and sorting all the issues that are raised.

Once you have a list of problems that need to be solved and have organized them accordingly, you’re then well-positioned for the next problem solving steps.

Problem tree   #define intentions   #create   #design   #issue analysis   A problem tree is a tool to clarify the hierarchy of problems addressed by the team within a design project; it represents high level problems or related sublevel problems.

SWOT Analysis

Chances are you’ve heard of the SWOT Analysis before. This problem-solving method focuses on identifying strengths, weaknesses, opportunities, and threats is a tried and tested method for both individuals and teams.

Start by creating a desired end state or outcome and bare this in mind – any process solving model is made more effective by knowing what you are moving towards. Create a quadrant made up of the four categories of a SWOT analysis and ask participants to generate ideas based on each of those quadrants.

Once you have those ideas assembled in their quadrants, cluster them together based on their affinity with other ideas. These clusters are then used to facilitate group conversations and move things forward. 

SWOT analysis   #gamestorming   #problem solving   #action   #meeting facilitation   The SWOT Analysis is a long-standing technique of looking at what we have, with respect to the desired end state, as well as what we could improve on. It gives us an opportunity to gauge approaching opportunities and dangers, and assess the seriousness of the conditions that affect our future. When we understand those conditions, we can influence what comes next.

Agreement-Certainty Matrix

Not every problem-solving approach is right for every challenge, and deciding on the right method for the challenge at hand is a key part of being an effective team.

The Agreement Certainty matrix helps teams align on the nature of the challenges facing them. By sorting problems from simple to chaotic, your team can understand what methods are suitable for each problem and what they can do to ensure effective results. 

If you are already using Liberating Structures techniques as part of your problem-solving strategy, the Agreement-Certainty Matrix can be an invaluable addition to your process. We’ve found it particularly if you are having issues with recurring problems in your organization and want to go deeper in understanding the root cause. 

Agreement-Certainty Matrix   #issue analysis   #liberating structures   #problem solving   You can help individuals or groups avoid the frequent mistake of trying to solve a problem with methods that are not adapted to the nature of their challenge. The combination of two questions makes it possible to easily sort challenges into four categories: simple, complicated, complex , and chaotic .  A problem is simple when it can be solved reliably with practices that are easy to duplicate.  It is complicated when experts are required to devise a sophisticated solution that will yield the desired results predictably.  A problem is complex when there are several valid ways to proceed but outcomes are not predictable in detail.  Chaotic is when the context is too turbulent to identify a path forward.  A loose analogy may be used to describe these differences: simple is like following a recipe, complicated like sending a rocket to the moon, complex like raising a child, and chaotic is like the game “Pin the Tail on the Donkey.”  The Liberating Structures Matching Matrix in Chapter 5 can be used as the first step to clarify the nature of a challenge and avoid the mismatches between problems and solutions that are frequently at the root of chronic, recurring problems.

Organizing and charting a team’s progress can be important in ensuring its success. SQUID (Sequential Question and Insight Diagram) is a great model that allows a team to effectively switch between giving questions and answers and develop the skills they need to stay on track throughout the process. 

Begin with two different colored sticky notes – one for questions and one for answers – and with your central topic (the head of the squid) on the board. Ask the group to first come up with a series of questions connected to their best guess of how to approach the topic. Ask the group to come up with answers to those questions, fix them to the board and connect them with a line. After some discussion, go back to question mode by responding to the generated answers or other points on the board.

It’s rewarding to see a diagram grow throughout the exercise, and a completed SQUID can provide a visual resource for future effort and as an example for other teams.

SQUID   #gamestorming   #project planning   #issue analysis   #problem solving   When exploring an information space, it’s important for a group to know where they are at any given time. By using SQUID, a group charts out the territory as they go and can navigate accordingly. SQUID stands for Sequential Question and Insight Diagram.

To continue with our nautical theme, Speed Boat is a short and sweet activity that can help a team quickly identify what employees, clients or service users might have a problem with and analyze what might be standing in the way of achieving a solution.

Methods that allow for a group to make observations, have insights and obtain those eureka moments quickly are invaluable when trying to solve complex problems.

In Speed Boat, the approach is to first consider what anchors and challenges might be holding an organization (or boat) back. Bonus points if you are able to identify any sharks in the water and develop ideas that can also deal with competitors!   

Speed Boat   #gamestorming   #problem solving   #action   Speedboat is a short and sweet way to identify what your employees or clients don’t like about your product/service or what’s standing in the way of a desired goal.

The Journalistic Six

Some of the most effective ways of solving problems is by encouraging teams to be more inclusive and diverse in their thinking.

Based on the six key questions journalism students are taught to answer in articles and news stories, The Journalistic Six helps create teams to see the whole picture. By using who, what, when, where, why, and how to facilitate the conversation and encourage creative thinking, your team can make sure that the problem identification and problem analysis stages of the are covered exhaustively and thoughtfully. Reporter’s notebook and dictaphone optional.

The Journalistic Six – Who What When Where Why How   #idea generation   #issue analysis   #problem solving   #online   #creative thinking   #remote-friendly   A questioning method for generating, explaining, investigating ideas.

Individual and group perspectives are incredibly important, but what happens if people are set in their minds and need a change of perspective in order to approach a problem more effectively?

Flip It is a method we love because it is both simple to understand and run, and allows groups to understand how their perspectives and biases are formed. 

Participants in Flip It are first invited to consider concerns, issues, or problems from a perspective of fear and write them on a flip chart. Then, the group is asked to consider those same issues from a perspective of hope and flip their understanding.  

No problem and solution is free from existing bias and by changing perspectives with Flip It, you can then develop a problem solving model quickly and effectively.

Flip It!   #gamestorming   #problem solving   #action   Often, a change in a problem or situation comes simply from a change in our perspectives. Flip It! is a quick game designed to show players that perspectives are made, not born.

LEGO Challenge

Now for an activity that is a little out of the (toy) box. LEGO Serious Play is a facilitation methodology that can be used to improve creative thinking and problem-solving skills. 

The LEGO Challenge includes giving each member of the team an assignment that is hidden from the rest of the group while they create a structure without speaking.

What the LEGO challenge brings to the table is a fun working example of working with stakeholders who might not be on the same page to solve problems. Also, it’s LEGO! Who doesn’t love LEGO! 

LEGO Challenge   #hyperisland   #team   A team-building activity in which groups must work together to build a structure out of LEGO, but each individual has a secret “assignment” which makes the collaborative process more challenging. It emphasizes group communication, leadership dynamics, conflict, cooperation, patience and problem solving strategy.

What, So What, Now What?

If not carefully managed, the problem identification and problem analysis stages of the problem-solving process can actually create more problems and misunderstandings.

The What, So What, Now What? problem-solving activity is designed to help collect insights and move forward while also eliminating the possibility of disagreement when it comes to identifying, clarifying, and analyzing organizational or work problems. 

Facilitation is all about bringing groups together so that might work on a shared goal and the best problem-solving strategies ensure that teams are aligned in purpose, if not initially in opinion or insight.

Throughout the three steps of this game, you give everyone on a team to reflect on a problem by asking what happened, why it is important, and what actions should then be taken. 

This can be a great activity for bringing our individual perceptions about a problem or challenge and contextualizing it in a larger group setting. This is one of the most important problem-solving skills you can bring to your organization.

W³ – What, So What, Now What?   #issue analysis   #innovation   #liberating structures   You can help groups reflect on a shared experience in a way that builds understanding and spurs coordinated action while avoiding unproductive conflict. It is possible for every voice to be heard while simultaneously sifting for insights and shaping new direction. Progressing in stages makes this practical—from collecting facts about What Happened to making sense of these facts with So What and finally to what actions logically follow with Now What . The shared progression eliminates most of the misunderstandings that otherwise fuel disagreements about what to do. Voila!


Problem analysis can be one of the most important and decisive stages of all problem-solving tools. Sometimes, a team can become bogged down in the details and are unable to move forward.

Journalists is an activity that can avoid a group from getting stuck in the problem identification or problem analysis stages of the process.

In Journalists, the group is invited to draft the front page of a fictional newspaper and figure out what stories deserve to be on the cover and what headlines those stories will have. By reframing how your problems and challenges are approached, you can help a team move productively through the process and be better prepared for the steps to follow.

Journalists   #vision   #big picture   #issue analysis   #remote-friendly   This is an exercise to use when the group gets stuck in details and struggles to see the big picture. Also good for defining a vision.

Problem-solving techniques for brainstorming solutions

Now you have the context and background of the problem you are trying to solving, now comes the time to start ideating and thinking about how you’ll solve the issue.

Here, you’ll want to encourage creative, free thinking and speed. Get as many ideas out as possible and explore different perspectives so you have the raw material for the next step.

Looking at a problem from a new angle can be one of the most effective ways of creating an effective solution. TRIZ is a problem-solving tool that asks the group to consider what they must not do in order to solve a challenge.

By reversing the discussion, new topics and taboo subjects often emerge, allowing the group to think more deeply and create ideas that confront the status quo in a safe and meaningful way. If you’re working on a problem that you’ve tried to solve before, TRIZ is a great problem-solving method to help your team get unblocked.

Making Space with TRIZ   #issue analysis   #liberating structures   #issue resolution   You can clear space for innovation by helping a group let go of what it knows (but rarely admits) limits its success and by inviting creative destruction. TRIZ makes it possible to challenge sacred cows safely and encourages heretical thinking. The question “What must we stop doing to make progress on our deepest purpose?” induces seriously fun yet very courageous conversations. Since laughter often erupts, issues that are otherwise taboo get a chance to be aired and confronted. With creative destruction come opportunities for renewal as local action and innovation rush in to fill the vacuum. Whoosh!


Brainstorming is part of the bread and butter of the problem-solving process and all problem-solving strategies benefit from getting ideas out and challenging a team to generate solutions quickly. 

With Mindspin, participants are encouraged not only to generate ideas but to do so under time constraints and by slamming down cards and passing them on. By doing multiple rounds, your team can begin with a free generation of possible solutions before moving on to developing those solutions and encouraging further ideation. 

This is one of our favorite problem-solving activities and can be great for keeping the energy up throughout the workshop. Remember the importance of helping people become engaged in the process – energizing problem-solving techniques like Mindspin can help ensure your team stays engaged and happy, even when the problems they’re coming together to solve are complex. 

MindSpin   #teampedia   #idea generation   #problem solving   #action   A fast and loud method to enhance brainstorming within a team. Since this activity has more than round ideas that are repetitive can be ruled out leaving more creative and innovative answers to the challenge.

The Creativity Dice

One of the most useful problem solving skills you can teach your team is of approaching challenges with creativity, flexibility, and openness. Games like The Creativity Dice allow teams to overcome the potential hurdle of too much linear thinking and approach the process with a sense of fun and speed. 

In The Creativity Dice, participants are organized around a topic and roll a dice to determine what they will work on for a period of 3 minutes at a time. They might roll a 3 and work on investigating factual information on the chosen topic. They might roll a 1 and work on identifying the specific goals, standards, or criteria for the session.

Encouraging rapid work and iteration while asking participants to be flexible are great skills to cultivate. Having a stage for idea incubation in this game is also important. Moments of pause can help ensure the ideas that are put forward are the most suitable. 

The Creativity Dice   #creativity   #problem solving   #thiagi   #issue analysis   Too much linear thinking is hazardous to creative problem solving. To be creative, you should approach the problem (or the opportunity) from different points of view. You should leave a thought hanging in mid-air and move to another. This skipping around prevents premature closure and lets your brain incubate one line of thought while you consciously pursue another.

Idea and Concept Development

Brainstorming without structure can quickly become chaotic or frustrating. In a problem-solving context, having an ideation framework to follow can help ensure your team is both creative and disciplined.

In this method, you’ll find an idea generation process that encourages your group to brainstorm effectively before developing their ideas and begin clustering them together. By using concepts such as Yes and…, more is more and postponing judgement, you can create the ideal conditions for brainstorming with ease.

Idea & Concept Development   #hyperisland   #innovation   #idea generation   Ideation and Concept Development is a process for groups to work creatively and collaboratively to generate creative ideas. It’s a general approach that can be adapted and customized to suit many different scenarios. It includes basic principles for idea generation and several steps for groups to work with. It also includes steps for idea selection and development.

Problem-solving techniques for developing and refining solutions 

The success of any problem-solving process can be measured by the solutions it produces. After you’ve defined the issue, explored existing ideas, and ideated, it’s time to develop and refine your ideas in order to bring them closer to a solution that actually solves the problem.

Use these problem-solving techniques when you want to help your team think through their ideas and refine them as part of your problem solving process.

Improved Solutions

After a team has successfully identified a problem and come up with a few solutions, it can be tempting to call the work of the problem-solving process complete. That said, the first solution is not necessarily the best, and by including a further review and reflection activity into your problem-solving model, you can ensure your group reaches the best possible result. 

One of a number of problem-solving games from Thiagi Group, Improved Solutions helps you go the extra mile and develop suggested solutions with close consideration and peer review. By supporting the discussion of several problems at once and by shifting team roles throughout, this problem-solving technique is a dynamic way of finding the best solution. 

Improved Solutions   #creativity   #thiagi   #problem solving   #action   #team   You can improve any solution by objectively reviewing its strengths and weaknesses and making suitable adjustments. In this creativity framegame, you improve the solutions to several problems. To maintain objective detachment, you deal with a different problem during each of six rounds and assume different roles (problem owner, consultant, basher, booster, enhancer, and evaluator) during each round. At the conclusion of the activity, each player ends up with two solutions to her problem.

Four Step Sketch

Creative thinking and visual ideation does not need to be confined to the opening stages of your problem-solving strategies. Exercises that include sketching and prototyping on paper can be effective at the solution finding and development stage of the process, and can be great for keeping a team engaged. 

By going from simple notes to a crazy 8s round that involves rapidly sketching 8 variations on their ideas before then producing a final solution sketch, the group is able to iterate quickly and visually. Problem-solving techniques like Four-Step Sketch are great if you have a group of different thinkers and want to change things up from a more textual or discussion-based approach.

Four-Step Sketch   #design sprint   #innovation   #idea generation   #remote-friendly   The four-step sketch is an exercise that helps people to create well-formed concepts through a structured process that includes: Review key information Start design work on paper,  Consider multiple variations , Create a detailed solution . This exercise is preceded by a set of other activities allowing the group to clarify the challenge they want to solve. See how the Four Step Sketch exercise fits into a Design Sprint

Ensuring that everyone in a group is able to contribute to a discussion is vital during any problem solving process. Not only does this ensure all bases are covered, but its then easier to get buy-in and accountability when people have been able to contribute to the process.

1-2-4-All is a tried and tested facilitation technique where participants are asked to first brainstorm on a topic on their own. Next, they discuss and share ideas in a pair before moving into a small group. Those groups are then asked to present the best idea from their discussion to the rest of the team.

This method can be used in many different contexts effectively, though I find it particularly shines in the idea development stage of the process. Giving each participant time to concretize their ideas and develop them in progressively larger groups can create a great space for both innovation and psychological safety.

1-2-4-All   #idea generation   #liberating structures   #issue analysis   With this facilitation technique you can immediately include everyone regardless of how large the group is. You can generate better ideas and more of them faster than ever before. You can tap the know-how and imagination that is distributed widely in places not known in advance. Open, generative conversation unfolds. Ideas and solutions are sifted in rapid fashion. Most importantly, participants own the ideas, so follow-up and implementation is simplified. No buy-in strategies needed! Simple and elegant!

15% Solutions

Some problems are simpler than others and with the right problem-solving activities, you can empower people to take immediate actions that can help create organizational change. 

Part of the liberating structures toolkit, 15% solutions is a problem-solving technique that focuses on finding and implementing solutions quickly. A process of iterating and making small changes quickly can help generate momentum and an appetite for solving complex problems.

Problem-solving strategies can live and die on whether people are onboard. Getting some quick wins is a great way of getting people behind the process.   

It can be extremely empowering for a team to realize that problem-solving techniques can be deployed quickly and easily and delineate between things they can positively impact and those things they cannot change. 

15% Solutions   #action   #liberating structures   #remote-friendly   You can reveal the actions, however small, that everyone can do immediately. At a minimum, these will create momentum, and that may make a BIG difference.  15% Solutions show that there is no reason to wait around, feel powerless, or fearful. They help people pick it up a level. They get individuals and the group to focus on what is within their discretion instead of what they cannot change.  With a very simple question, you can flip the conversation to what can be done and find solutions to big problems that are often distributed widely in places not known in advance. Shifting a few grains of sand may trigger a landslide and change the whole landscape.

Problem-solving techniques for making decisions and planning

After your group is happy with the possible solutions you’ve developed, now comes the time to choose which to implement. There’s more than one way to make a decision and the best option is often dependant on the needs and set-up of your group.

Sometimes, it’s the case that you’ll want to vote as a group on what is likely to be the most impactful solution. Other times, it might be down to a decision maker or major stakeholder to make the final decision. Whatever your process, here’s some techniques you can use to help you make a decision during your problem solving process.

How-Now-Wow Matrix

The problem-solving process is often creative, as complex problems usually require a change of thinking and creative response in order to find the best solutions. While it’s common for the first stages to encourage creative thinking, groups can often gravitate to familiar solutions when it comes to the end of the process. 

When selecting solutions, you don’t want to lose your creative energy! The How-Now-Wow Matrix from Gamestorming is a great problem-solving activity that enables a group to stay creative and think out of the box when it comes to selecting the right solution for a given problem.

Problem-solving techniques that encourage creative thinking and the ideation and selection of new solutions can be the most effective in organisational change. Give the How-Now-Wow Matrix a go, and not just for how pleasant it is to say out loud. 

How-Now-Wow Matrix   #gamestorming   #idea generation   #remote-friendly   When people want to develop new ideas, they most often think out of the box in the brainstorming or divergent phase. However, when it comes to convergence, people often end up picking ideas that are most familiar to them. This is called a ‘creative paradox’ or a ‘creadox’. The How-Now-Wow matrix is an idea selection tool that breaks the creadox by forcing people to weigh each idea on 2 parameters.

Impact and Effort Matrix

All problem-solving techniques hope to not only find solutions to a given problem or challenge but to find the best solution. When it comes to finding a solution, groups are invited to put on their decision-making hats and really think about how a proposed idea would work in practice. 

The Impact and Effort Matrix is one of the problem-solving techniques that fall into this camp, empowering participants to first generate ideas and then categorize them into a 2×2 matrix based on impact and effort.

Activities that invite critical thinking while remaining simple are invaluable. Use the Impact and Effort Matrix to move from ideation and towards evaluating potential solutions before then committing to them. 

Impact and Effort Matrix   #gamestorming   #decision making   #action   #remote-friendly   In this decision-making exercise, possible actions are mapped based on two factors: effort required to implement and potential impact. Categorizing ideas along these lines is a useful technique in decision making, as it obliges contributors to balance and evaluate suggested actions before committing to them.

If you’ve followed each of the problem-solving steps with your group successfully, you should move towards the end of your process with heaps of possible solutions developed with a specific problem in mind. But how do you help a group go from ideation to putting a solution into action? 

Dotmocracy – or Dot Voting -is a tried and tested method of helping a team in the problem-solving process make decisions and put actions in place with a degree of oversight and consensus. 

One of the problem-solving techniques that should be in every facilitator’s toolbox, Dot Voting is fast and effective and can help identify the most popular and best solutions and help bring a group to a decision effectively. 

Dotmocracy   #action   #decision making   #group prioritization   #hyperisland   #remote-friendly   Dotmocracy is a simple method for group prioritization or decision-making. It is not an activity on its own, but a method to use in processes where prioritization or decision-making is the aim. The method supports a group to quickly see which options are most popular or relevant. The options or ideas are written on post-its and stuck up on a wall for the whole group to see. Each person votes for the options they think are the strongest, and that information is used to inform a decision.

Straddling the gap between decision making and planning, MoSCoW is a simple and effective method that allows a group team to easily prioritize a set of possible options.

Use this method in a problem solving process by collecting and summarizing all your possible solutions and then categorize them into 4 sections: “Must have”, “Should have”, “Could have”, or “Would like but won‘t get”.

This method is particularly useful when its less about choosing one possible solution and more about prioritorizing which to do first and which may not fit in the scope of your project. In my experience, complex challenges often require multiple small fixes, and this method can be a great way to move from a pile of things you’d all like to do to a structured plan.

MoSCoW   #define intentions   #create   #design   #action   #remote-friendly   MoSCoW is a method that allows the team to prioritize the different features that they will work on. Features are then categorized into “Must have”, “Should have”, “Could have”, or “Would like but won‘t get”. To be used at the beginning of a timeslot (for example during Sprint planning) and when planning is needed.

When it comes to managing the rollout of a solution, clarity and accountability are key factors in ensuring the success of the project. The RAACI chart is a simple but effective model for setting roles and responsibilities as part of a planning session.

Start by listing each person involved in the project and put them into the following groups in order to make it clear who is responsible for what during the rollout of your solution.

  • Responsibility  (Which person and/or team will be taking action?)
  • Authority  (At what “point” must the responsible person check in before going further?)
  • Accountability  (Who must the responsible person check in with?)
  • Consultation  (Who must be consulted by the responsible person before decisions are made?)
  • Information  (Who must be informed of decisions, once made?)

Ensure this information is easily accessible and use it to inform who does what and who is looped into discussions and kept up to date.

RAACI   #roles and responsibility   #teamwork   #project management   Clarifying roles and responsibilities, levels of autonomy/latitude in decision making, and levels of engagement among diverse stakeholders.

Problem-solving warm-up activities

All facilitators know that warm-ups and icebreakers are useful for any workshop or group process. Problem-solving workshops are no different.

Use these problem-solving techniques to warm up a group and prepare them for the rest of the process. Activating your group by tapping into some of the top problem-solving skills can be one of the best ways to see great outcomes from your session.

Check-in / Check-out

Solid processes are planned from beginning to end, and the best facilitators know that setting the tone and establishing a safe, open environment can be integral to a successful problem-solving process. Check-in / Check-out is a great way to begin and/or bookend a problem-solving workshop. Checking in to a session emphasizes that everyone will be seen, heard, and expected to contribute. 

If you are running a series of meetings, setting a consistent pattern of checking in and checking out can really help your team get into a groove. We recommend this opening-closing activity for small to medium-sized groups though it can work with large groups if they’re disciplined!

Check-in / Check-out   #team   #opening   #closing   #hyperisland   #remote-friendly   Either checking-in or checking-out is a simple way for a team to open or close a process, symbolically and in a collaborative way. Checking-in/out invites each member in a group to be present, seen and heard, and to express a reflection or a feeling. Checking-in emphasizes presence, focus and group commitment; checking-out emphasizes reflection and symbolic closure.

Doodling Together  

Thinking creatively and not being afraid to make suggestions are important problem-solving skills for any group or team, and warming up by encouraging these behaviors is a great way to start. 

Doodling Together is one of our favorite creative ice breaker games – it’s quick, effective, and fun and can make all following problem-solving steps easier by encouraging a group to collaborate visually. By passing cards and adding additional items as they go, the workshop group gets into a groove of co-creation and idea development that is crucial to finding solutions to problems. 

Doodling Together   #collaboration   #creativity   #teamwork   #fun   #team   #visual methods   #energiser   #icebreaker   #remote-friendly   Create wild, weird and often funny postcards together & establish a group’s creative confidence.

Show and Tell

You might remember some version of Show and Tell from being a kid in school and it’s a great problem-solving activity to kick off a session.

Asking participants to prepare a little something before a workshop by bringing an object for show and tell can help them warm up before the session has even begun! Games that include a physical object can also help encourage early engagement before moving onto more big-picture thinking.

By asking your participants to tell stories about why they chose to bring a particular item to the group, you can help teams see things from new perspectives and see both differences and similarities in the way they approach a topic. Great groundwork for approaching a problem-solving process as a team! 

Show and Tell   #gamestorming   #action   #opening   #meeting facilitation   Show and Tell taps into the power of metaphors to reveal players’ underlying assumptions and associations around a topic The aim of the game is to get a deeper understanding of stakeholders’ perspectives on anything—a new project, an organizational restructuring, a shift in the company’s vision or team dynamic.


Who doesn’t love stars? Constellations is a great warm-up activity for any workshop as it gets people up off their feet, energized, and ready to engage in new ways with established topics. It’s also great for showing existing beliefs, biases, and patterns that can come into play as part of your session.

Using warm-up games that help build trust and connection while also allowing for non-verbal responses can be great for easing people into the problem-solving process and encouraging engagement from everyone in the group. Constellations is great in large spaces that allow for movement and is definitely a practical exercise to allow the group to see patterns that are otherwise invisible. 

Constellations   #trust   #connection   #opening   #coaching   #patterns   #system   Individuals express their response to a statement or idea by standing closer or further from a central object. Used with teams to reveal system, hidden patterns, perspectives.

Draw a Tree

Problem-solving games that help raise group awareness through a central, unifying metaphor can be effective ways to warm-up a group in any problem-solving model.

Draw a Tree is a simple warm-up activity you can use in any group and which can provide a quick jolt of energy. Start by asking your participants to draw a tree in just 45 seconds – they can choose whether it will be abstract or realistic. 

Once the timer is up, ask the group how many people included the roots of the tree and use this as a means to discuss how we can ignore important parts of any system simply because they are not visible.

All problem-solving strategies are made more effective by thinking of problems critically and by exposing things that may not normally come to light. Warm-up games like Draw a Tree are great in that they quickly demonstrate some key problem-solving skills in an accessible and effective way.

Draw a Tree   #thiagi   #opening   #perspectives   #remote-friendly   With this game you can raise awarness about being more mindful, and aware of the environment we live in.

Closing activities for a problem-solving process

Each step of the problem-solving workshop benefits from an intelligent deployment of activities, games, and techniques. Bringing your session to an effective close helps ensure that solutions are followed through on and that you also celebrate what has been achieved.

Here are some problem-solving activities you can use to effectively close a workshop or meeting and ensure the great work you’ve done can continue afterward.

One Breath Feedback

Maintaining attention and focus during the closing stages of a problem-solving workshop can be tricky and so being concise when giving feedback can be important. It’s easy to incur “death by feedback” should some team members go on for too long sharing their perspectives in a quick feedback round. 

One Breath Feedback is a great closing activity for workshops. You give everyone an opportunity to provide feedback on what they’ve done but only in the space of a single breath. This keeps feedback short and to the point and means that everyone is encouraged to provide the most important piece of feedback to them. 

One breath feedback   #closing   #feedback   #action   This is a feedback round in just one breath that excels in maintaining attention: each participants is able to speak during just one breath … for most people that’s around 20 to 25 seconds … unless of course you’ve been a deep sea diver in which case you’ll be able to do it for longer.

Who What When Matrix 

Matrices feature as part of many effective problem-solving strategies and with good reason. They are easily recognizable, simple to use, and generate results.

The Who What When Matrix is a great tool to use when closing your problem-solving session by attributing a who, what and when to the actions and solutions you have decided upon. The resulting matrix is a simple, easy-to-follow way of ensuring your team can move forward. 

Great solutions can’t be enacted without action and ownership. Your problem-solving process should include a stage for allocating tasks to individuals or teams and creating a realistic timeframe for those solutions to be implemented or checked out. Use this method to keep the solution implementation process clear and simple for all involved. 

Who/What/When Matrix   #gamestorming   #action   #project planning   With Who/What/When matrix, you can connect people with clear actions they have defined and have committed to.

Response cards

Group discussion can comprise the bulk of most problem-solving activities and by the end of the process, you might find that your team is talked out! 

Providing a means for your team to give feedback with short written notes can ensure everyone is head and can contribute without the need to stand up and talk. Depending on the needs of the group, giving an alternative can help ensure everyone can contribute to your problem-solving model in the way that makes the most sense for them.

Response Cards is a great way to close a workshop if you are looking for a gentle warm-down and want to get some swift discussion around some of the feedback that is raised. 

Response Cards   #debriefing   #closing   #structured sharing   #questions and answers   #thiagi   #action   It can be hard to involve everyone during a closing of a session. Some might stay in the background or get unheard because of louder participants. However, with the use of Response Cards, everyone will be involved in providing feedback or clarify questions at the end of a session.

Tips for effective problem solving

Problem-solving activities are only one part of the puzzle. While a great method can help unlock your team’s ability to solve problems, without a thoughtful approach and strong facilitation the solutions may not be fit for purpose.

Let’s take a look at some problem-solving tips you can apply to any process to help it be a success!

Clearly define the problem

Jumping straight to solutions can be tempting, though without first clearly articulating a problem, the solution might not be the right one. Many of the problem-solving activities below include sections where the problem is explored and clearly defined before moving on.

This is a vital part of the problem-solving process and taking the time to fully define an issue can save time and effort later. A clear definition helps identify irrelevant information and it also ensures that your team sets off on the right track.

Don’t jump to conclusions

It’s easy for groups to exhibit cognitive bias or have preconceived ideas about both problems and potential solutions. Be sure to back up any problem statements or potential solutions with facts, research, and adequate forethought.

The best techniques ask participants to be methodical and challenge preconceived notions. Make sure you give the group enough time and space to collect relevant information and consider the problem in a new way. By approaching the process with a clear, rational mindset, you’ll often find that better solutions are more forthcoming.  

Try different approaches  

Problems come in all shapes and sizes and so too should the methods you use to solve them. If you find that one approach isn’t yielding results and your team isn’t finding different solutions, try mixing it up. You’ll be surprised at how using a new creative activity can unblock your team and generate great solutions.

Don’t take it personally 

Depending on the nature of your team or organizational problems, it’s easy for conversations to get heated. While it’s good for participants to be engaged in the discussions, ensure that emotions don’t run too high and that blame isn’t thrown around while finding solutions.

You’re all in it together, and even if your team or area is seeing problems, that isn’t necessarily a disparagement of you personally. Using facilitation skills to manage group dynamics is one effective method of helping conversations be more constructive.

Get the right people in the room

Your problem-solving method is often only as effective as the group using it. Getting the right people on the job and managing the number of people present is important too!

If the group is too small, you may not get enough different perspectives to effectively solve a problem. If the group is too large, you can go round and round during the ideation stages.

Creating the right group makeup is also important in ensuring you have the necessary expertise and skillset to both identify and follow up on potential solutions. Carefully consider who to include at each stage to help ensure your problem-solving method is followed and positioned for success.

Create psychologically safe spaces for discussion

Identifying a problem accurately also requires that all members of a group are able to contribute their views in an open and safe manner.

It can be tough for people to stand up and contribute if the problems or challenges are emotive or personal in nature. Try and create a psychologically safe space for these kinds of discussions and where possible, create regular opportunities for challenges to be brought up organically.

Document everything

The best solutions can take refinement, iteration, and reflection to come out. Get into a habit of documenting your process in order to keep all the learnings from the session and to allow ideas to mature and develop. Many of the methods below involve the creation of documents or shared resources. Be sure to keep and share these so everyone can benefit from the work done!

Bring a facilitator 

Facilitation is all about making group processes easier. With a subject as potentially emotive and important as problem-solving, having an impartial third party in the form of a facilitator can make all the difference in finding great solutions and keeping the process moving. Consider bringing a facilitator to your problem-solving session to get better results and generate meaningful solutions!

Develop your problem-solving skills

It takes time and practice to be an effective problem solver. While some roles or participants might more naturally gravitate towards problem-solving, it can take development and planning to help everyone create better solutions.

You might develop a training program, run a problem-solving workshop or simply ask your team to practice using the techniques below. Check out our post on problem-solving skills to see how you and your group can develop the right mental process and be more resilient to issues too!

Design a great agenda

Workshops are a great format for solving problems. With the right approach, you can focus a group and help them find the solutions to their own problems. But designing a process can be time-consuming and finding the right activities can be difficult.

Check out our workshop planning guide to level-up your agenda design and start running more effective workshops. Need inspiration? Check out templates designed by expert facilitators to help you kickstart your process!

Save time and effort creating an effective problem solving process

A structured problem solving process is a surefire way of solving tough problems, discovering creative solutions and driving organizational change. But how can you design for successful outcomes?

With SessionLab, it’s easy to design engaging workshops that deliver results. Drag, drop and reorder blocks  to build your agenda. When you make changes or update your agenda, your session  timing   adjusts automatically , saving you time on manual adjustments.

Collaborating with stakeholders or clients? Share your agenda with a single click and collaborate in real-time. No more sending documents back and forth over email.

Explore  how to use SessionLab  to design effective problem solving workshops or  watch this five minute video  to see the planner in action!

problem solving and system design

Over to you

The problem-solving process can often be as complicated and multifaceted as the problems they are set-up to solve. With the right problem-solving techniques and a mix of exercises designed to guide discussion and generate purposeful ideas, we hope we’ve given you the tools to find the best solutions as simply and easily as possible.

Is there a problem-solving technique that you are missing here? Do you have a favorite activity or method you use when facilitating? Let us know in the comments below, we’d love to hear from you! 

' src=

thank you very much for these excellent techniques

' src=

Certainly wonderful article, very detailed. Shared!

' src=

Your list of techniques for problem solving can be helpfully extended by adding TRIZ to the list of techniques. TRIZ has 40 problem solving techniques derived from methods inventros and patent holders used to get new patents. About 10-12 are general approaches. many organization sponsor classes in TRIZ that are used to solve business problems or general organiztational problems. You can take a look at TRIZ and dwonload a free internet booklet to see if you feel it shound be included per your selection process.

Leave a Comment Cancel reply

Your email address will not be published. Required fields are marked *

cycle of workshop planning steps

Going from a mere idea to a workshop that delivers results for your clients can feel like a daunting task. In this piece, we will shine a light on all the work behind the scenes and help you learn how to plan a workshop from start to finish. On a good day, facilitation can feel like effortless magic, but that is mostly the result of backstage work, foresight, and a lot of careful planning. Read on to learn a step-by-step approach to breaking the process of planning a workshop into small, manageable chunks.  The flow starts with the first meeting with a client to define the purposes of a workshop.…

problem solving and system design

Effective online tools are a necessity for smooth and engaging virtual workshops and meetings. But how do you choose the right ones? Do you sometimes feel that the good old pen and paper or MS Office toolkit and email leaves you struggling to stay on top of managing and delivering your workshop? Fortunately, there are plenty of great workshop tools to make your life easier when you need to facilitate a meeting and lead workshops. In this post, we’ll share our favorite online tools you can use to make your life easier and run better workshops and meetings. In fact, there are plenty of free online workshop tools and meeting…

problem solving and system design

How does learning work? A clever 9-year-old once told me: “I know I am learning something new when I am surprised.” The science of adult learning tells us that, in order to learn new skills (which, unsurprisingly, is harder for adults to do than kids) grown-ups need to first get into a specific headspace.  In a business, this approach is often employed in a training session where employees learn new skills or work on professional development. But how do you ensure your training is effective? In this guide, we'll explore how to create an effective training session plan and run engaging training sessions. As team leader, project manager, or consultant,…

Design your next workshop with SessionLab

Join the 150,000 facilitators using SessionLab

Sign up for free

Top 14 System Design interview questions for software engineers

Over my 10 years as a senior software engineer and interviewer at Microsoft and Facebook, I’ve worked with hundreds of applicants as they solve different system design problems.

Software developers tend to struggle with System Design interview questions because they are so open-ended and often require a kind of critical thinking not practiced in other coding interview challenges.

While SDI questions change over time, some have remained popular in interviews across various top companies.

Today, we’ll explore the top 14 most commonly asked system design interview questions, common problems you’ll have to address in each, and some tools to help you do that.

Here's what we'll cover today:

Tips for any question

  • 1. Design a chat service
  • 2. Design a ride-sharing service
  • 3. Design a URL-shortening service
  • 4. Design a social media newsfeed
  • 5. Design a social message board

6. Design Instagram

  • 7. Design a file sharing service

8. Design Google Docs

  • 9. Design a video streaming service
  • 10. Design an API Rate Limiter

11. Design a web crawler

  • 12. Design a proximity service
  • 13. Design typeahead

14. Design Google Maps

Next steps for your interview prep.

Try one of our 1000+ courses and learning paths: Grokking Modern System Design Interview for Software Engineers and Managers .

Tips for any SDI Question

Start each problem by stating what you know: List all required features of the system, common problems you expect to encounter with this sort of system, and the traffic you expect the system to handle. The listing process lets the interviewer see your planning skills and correct any possible misunderstandings before you begin the solution.

Narrate any trade-offs: Every system design choice matters. At each decision point, list at least one positive and negative effect of that choice.

Ask your interviewer to clarify: Most system design questions are purposefully vague. Ask clarifying questions to show the interviewer how you’re viewing the question and your knowledge of the system’s needs.

  • State your assumptions before outlining the components

Discuss emerging technologies: Conclude each question with an overview of how and where the system could benefit from machine learning . This will demonstrate that you’re not just prepared for current solutions but future solutions as well.

Know your architectures: Most modern services are built upon a flexible, microservice architecture . Unlike the monolithic architectures of tech companies in the past, microservices allow smaller, agile teams to build independently from the larger system. Some older companies will have legacy systems, but microservices can function in parallel to legacy code and help refresh the company architecture as a whole.

For more information on how ML can improve your SDI performance, check out How Machine Learning gives you an edge in System Design .


2. Design Uber

This question asks you to create a ride-sharing service that matches users with nearby drivers. Users can input a destination and transmit their current location and nearby drivers are notified within seconds.

The app then tracks a route between the driver and user’s current locations, then from the user’s location to the destination.

Functional requirements:

  • Location tracking: The system should monitor the location of both drivers and riders at all times. Specific emphasis should be placed on updating drivers’ locations, since they are a constantly moving entity and the backbone of the service.
  • Show nearby drivers: The system should find and display nearby drivers to the rider.
  • Request a ride: When riders request a ride, the nearest drivers should be notified of the request.
  • Payments: The system should initiate the payment process when the trip begins.
  • ETA: The rider should be notified of the estimated time it will take for the driver to arrive.
  • Trip confirmation and updates: The driver should be able to confirm both pickup and dropoff to bookend the trip. Both driver and rider should be updated on ETA to the destination and current location over the course of the trip.

Non-functional requirements:

  • Availability: System downtime could result in the failure of a ride. If drivers are ever unable to locate riders or riders unable to contact drivers, the system will not work.
  • Reliability: While not as crucial as availability, reliability ensures that all users have an error-free experience.
  • Scalability: The system should be designed to accommodate growing numbers of drivers and riders.
  • Consistency: It is important that both drivers and riders have a consistent view of the system.
Plan to scale: It is of great interest to potential employers that you understand how to flexibly scale the infrastructure of a web application. Learn the basics of scalable systems .

At its simplest, the system should accept ride requests from users and return driver and trip information. When a driver matches with a rider, the application should return the trip and rider information. The driver’s location should regularly be recorded and communicated to relevant users.

  • How can you keep latency low during busy periods?
  • How is the driver paired with the user? Iterating all drivers to find Euclidean distance would be inefficient.
  • What happens if the driver or user loses connection?
  • How do you store all cached location data?
Check out our guide to designing Uber’s backend for more information on Uber interview process.
  • Use the S2Geometry library to split locations into cells. Only calculate driver distance with drivers in the same cell as the user.
  • Use distributed storage to store locations of all users, location data will only be roughly 1Kb per user.
  • If location data halts, the device continues to report their previous location while waiting for reconnection.
  • Allow a buffer after prompting the closest driver to take a trip. If they refuse, move to the next driver.

design tinyurl system design interview

3. Design a URL shortening service like TinyURL or

This question asks you to create a program that shortens long URLs like TinyURL or These programs take a long URL and generate a new and unique short URL. They can also take a shortened URL and return the original full-length URL.

  • URL generation: The service should return a URL that is shorter than the original.
  • Storage: The original URL should be stored.
  • Redirection: The new, shortened link should redirect to the original URL.
  • Customization: The service should support custom shortened URLs.
  • Update and delete: Users should be able to update long URLs and delete short URLs from the system.
  • Availability: High availability is crucial, since downtime could result in link redirection failing.
  • Unpredictability: The short links should not be generated using a next-in-line pattern. It should be impossible to guess what URLs the system has produced or will produce next.
  • Readability: The shortened links should be easy to read and type.
  • Low latency and scalability: The system should be horizontally scalable and offer a smooth experience.

A load balancer will serve as an intermediary between the clients and server, and a rate limiter should prevent flooding and exploitation. A sequencer will provide unique IDs for each URL that serve as the starting point for URL shortening. A base58 encoder transforms these numeric IDs into a more readable alphanumeric form. The original URLs are stored in a database , with recently used ones available in a cache .

  • What if two users input the same custom URL?
  • What if there are more users than expected?
  • How does the database regulate storage space?
  • Use hashing to link original and new URLs
  • Use REST API to load balance high traffic and handle front-end client communication
  • Use multithreading to handle multiple requests at once
  • Use NoSQL database to store original URLs (no relation between stored URLs)
Learn how to solve this problem in our step-by-step guide Design TinyURl and Instagram

design twitter system design interview

4. Design a mass social media service like Facebook, Twitter, or Instagram

For this question, you’ll design a social media service used by my hundred thousand users like Instagram. Users should be able to view a newsfeed with posts by followed users and suggest new content the user may like.

Interviewers often want to hear you discuss the newsfeed in depth.

Required Features

  • Robust newsfeed and recommendation system
  • Users can make public posts
  • Other users can comment or like posts
  • Must comfortably accommodate many users at once
  • System must be highly available
  • Famous users will have millions of followers, how are they handled vs standard users?
  • How does the system weight posts by age? Old posts are less likely to be viewed than new posts.
  • What’s the ratio of read and write focused nodes? Are there likely to be more read requests (users viewing posts) or write requests (users creating posts)?
  • How can you increase availability? How does the system update? What happens if a node fails?
  • How do you efficiently store posts and images?
  • Use rolling updates and replica nodes to maximize availability.
  • Use a trained machine learning algorithm to recommend posts.
  • Create a database schema that stores celebrities and users separately.
  • Use a social graph to further track following habits
Learn how to solve this problem with our step-by-step guide Design TinyURL and Instagram

design reddit system design interview

5. Design a social network and message board service like Quora, Reddit, or HackerNews

These social network sites operate on a forum-based system that allows users to post questions and links. For simplicity’s sake, we’ll focus more on designing Quora. It is unlikely that you’ll need to walk through the design of something like Reddit’s subreddit or karma system in an interview.

  • Posting: Users should be able to share both questions and answers that can include images and videos if necessary.
  • Vote and comment: Users should apply upvotes, downvotes, and comments to questions and answers.
  • Search: Users should be able to retrieve questions that have already been asked.
  • Answer ranking: The most helpful answers should be positioned first in the thread.
  • Recommendation system: Users have a feed that includes topics they’ve expressed interest in. The system should facilitate user discovery as well.
  • Scalability: It should be easy to add both users and features to the system. Performance and usability should not be impacted as the system grows.
  • Consistency: For a question-and-answer system, it is imperative that all users see the same information. However, since different users have different interests, not all users need to view the same content as it is posted.
  • Availability and performance: The system should provide a smooth user experience and stay available in the event of many concurrent requests.

Users contact an application server via web server to post questions, answers, and comments. Images and videos are placed in blob storage, and the question/answer data are stored in a MySQL database. A machine learning engine can be used to rank answers that it deems valuable. A recommendation system should tailor content to an individual user’s interests, and it should be available for both online and offline services.

Common problems

  • Does our product only need to work on the web?
  • How will the system determine related tags? How many posts from unfollowed tags are shown in the feed?
  • How are posts distributed across a network of servers?

Tools to consider

  • Map relational data with an SQL database (users have posts, posts have comments/likes, categories have related posts, etc.).
  • Use multithreading and a load balancer layer to help support higher traffic.
  • Break up the system via sharding. Consider sharding by category to store posts of the same tags in one machine.
  • Use machine learning and Natural Language Processing to map the relationships between tags.

Keep learning about System Design Interviews.

Get hands-on practice with all the top SDI questions. Educative’s courses are created by current developers to help you learn in half the time.

Grokking Modern System Design Interview for Software Engineers & Managers

Above, we discussed how to design a newsfeed for an application like Instagram, but for this question we will dive deeper into how the system is designed.

Instagram is a social media platform that allows users to post pictures and short videos. Posts can be indexed and searched through hashtags and location-based geotags.

  • Post: Users can create posts to upload pictures and videos.
  • Follow: Users should be able to follow and unfollow other users and hashtags.
  • Like: Users should like and comment on posts, and be notified when someone likes or comments on their post.
  • Search: The system should support searching for posts or users.
  • Scalability: The system should be highly scalable and be able to handle millions of accounts and posts.
  • Availability: High availability is important for user retention.
  • Durability and reliability: The system should not lose any posts or go down in the event of component failure.
  • Latency: Newsfeeds and searches should be returned quickly.

From a high level, the system should support the upload and storage of multimedia content. Users should receive notifications for likes, follows, and comments. The core of the system is run by an API that performs the functional requirements and fulfills user requests. Since the data generated by the system is inherently relational, the design should include an SQL database that stores information as tables.

  • Should the system push posts to followers upon upload, or should it pull posts from a database when a newsfeed is requested?
  • Replication is necessary to ensure that no data is lost, but it creates several complications. What does the system do with failed replica nodes? How does the system handle concurrent write requests?
  • A wide-column database, like Cassandra , can house the relationships between users and posts.
  • Use data replication to ensure that no files are lost even in the event of partial failure.
  • A cache and a CDN can reduce the time it takes to fetch content.

design dropbox system design interview

7. Design a file sharing service like Dropbox, Google Drive, or Google Photos

For this question, you’ll create a synchronous, cross-platform storage system like Dropbox. Users can store files and photos and access them from other devices.

  • Upload and download: Logged in users should be able to upload and download files from any device.
  • Share: Users should be able to share files with others.
  • Synchronization: All files should be synchronized across devices and users.
  • Consistency: Consistency is so integral to the system that it manifests itself as a functional requirement in the form of synchronization.
  • Scalability: The system should be able to support vast numbers of concurrent and monthly users. Google Drive has a staggering 1B users.
  • Large file size: The system should support large individual files, greater than 1 GB.
  • Low-latency: The system should offer fast read and write response times as well as efficient file uploads through multi-threading.

The client side of the system should contain a service for splitting large files into smaller, more easily manageable chunks. These files are then sent to a processing queue that sends and receives requests to store metadata and ensure that files are synchronized between users and accounts. Files are stored in a cloud-based block storage platform, like Amazon S3. When a user wants to upload or download files they contact this storage service through a web server.

  • Where are the files stored?
  • How do you handle updates? Do you re-upload the entire file again?
  • Do small updates require a full file update?
  • How does the system handle two users updating a document at the same time?
  • Use chunking to split files into multiple sections. Updates only re-upload the section rather than the whole file.
  • Use cloud storage like Amazon S3 to handle the internal database.
  • Make the client constantly check with the server to ensure concurrent updates are applied.

A collaborative editing service should let users remotely and simultaneously make changes to text documents. The changes should be displayed in real time. Much like other cloud-based services, documents should be consistently available to any logged-in user on any machine. Your solution must be scalable to support thousands of concurrent users.

  • Collaboration: Several users should be able to edit one document concurrently. Large numbers of users should be able to view documents at the same time.
  • Edit overlap: The system should be able to resolve conflicts that occur when users edit the same portion of a document at once.
  • Autocomplete and grammatical suggestions: The system should suggest frequently used words and phrases as well as corrections for minor grammatical errors.
  • History and view count: The view count and editing history of the document should be archived and readily viewable.
  • Consistency: As mentioned above, the system should remain consistent even in the event of conflicting edits.
  • Low latency: Users should experience low latency when typing and making edits.
  • Availability: A high uptime is necessary for users to access documents on demand.

All user requests are sent through the API gateway. These requests can then be fulfilled uniquely depending on the desired result. The following are the core requests that the API should be capable of handling.

  • Conflicting collaborative edits: Requests are fulfilled via an operations queue that moderates conflicts. A time series database stores the data and compresses any multimedia submissions.
  • Suggestions: Suggestions should be performed as a typeahead service.
  • Import and export: Application servers should support the import, export, and file format conversion of documents.
  • How do you minimize latency when multiple users are distant from the server?
  • What techniques for conflict resolution are best for ensuring consistency?
  • A pub-sub (publish-subscribe) component, like Kafka, can queue asynchronous updates and notifications.
  • The suggestion function should be supported through a caching system like Redis.
  • Use WebSockets to expedite the transfer of small data in batches.

design youtube system design interview

9. Design YouTube

You are tasked to create an online video streaming service like YouTube. The service will store and transmit hundreds of petabytes of video data. It must also store statistics (views, likes, number of views, etc.) and allow for users to post comments.

Your solution must be scalable to support thousands of concurrent users.

Two for one: When it comes to designing a video streaming service, YouTube and Netflix are very similar. If you know how to design one, you know how to design the other.
  • Upload: Users should be able to upload videos over the internet.
  • Streaming: Playback should be uninterrupted and consistent.
  • Like, dislike, and comment: Users should be able to rate and comment on videos. The ratings and comments should be visible to other users.
  • Video metrics: Statistics related to the video’s performance should be cataloged and stored.
  • Search: Users should be able to search videos according to title and tags.
  • High availability: Availability ensures that users can consume long videos or multiple videos at a time without interruption.
  • Scalability: Video platforms must be capable of supporting large numbers of users and large amounts of video data.
  • Performance: To ensure a positive user experience, videos should be delivered in high resolution without buffering.
  • Multiple formats: Users should be able to upload videos in different file formats.

Video uploads are first handled by a load balancer, and then delivered to an encoder . The encoder and transcoder split the video into different resolutions. These typically range from 140p to 1440p, but can go all the way up to 4k resolutions. All of these videos are stored in blob storage. Popular and recent uploads are held in a CDN. A content delivery network, or CDN, reduces latency when delivering video to users. In conjunction with colocation sites, the CDN stores and delivers requested data to users.

  • How will your service ensure smooth video streaming on various internet qualities?
  • How does your service respond to a sudden drop in streaming speed (buffering, reduced quality, etc.)?
  • How are the videos stored?
  • Implement cloud technology to store and transmit video data.
  • Use machine learning to suggest new video content.
  • Prevent stuttering for inconsistent connections with a delay. The user views data from a few moments ago rather than as it comes in.

design api rate limiter system design interview

10. Design an API Rate Limiter for sites like Firebase or Github

For this question, you’ll create an API rate limiter that caps the number of API calls a service can receive in a given time period to avoid an overload.

Interviewers can ask for this at various scales, from a single machine to an entire distributed network.

  • Limit requests: A rate limiter’s core functionality is to cap the number of requests that can be sent to an API within a certain timeframe.
  • Configurable: The limit and time window should be adjustable.
  • System-wide coverage: It’s likely that users will be accessing the system across multiple servers. The rate limiter should count requests across all servers and return an error message to users if the limit is exceeded.
  • Availability: Since rate limiters protect a larger system from being overburdened, they should be constantly running.
  • Lightweight: A rate limiter should not add any noticeable latencies to the user experience.

A rate limiter should exist between a web server and an API server. When a client sends a request to the web server, the rate limiter is consulted. The rate limiter will determine if the request will be handled or throttled. If handled, the request is sent to the API server. If throttled, the request is denied.

  • How does your system measure requests per hour? If a user makes 10 requests at 1:20 then another 10 at 2:10, they’ve made 20 in the same one-hour window despite the hour change.
  • How would designing for a distributed system differ from a local system?
  • Use sliding time windows to avoid hourly resets.
  • Save a counter integer instead of the request itself to save space.

A web crawler is a bot that methodically searches the world wide web (WWW) for content. It begins from a pool of seed URLs . These bots acquire content through crawling and then store it for later retrieval.

To fully address this problem, you should design a web crawler and suggest seed URLs to get the process started.

  • Crawling: The system should comb the web via a queue of seed URLs initially provided via an administrator.
  • Storage: The system should be able to extract and store content from the web into a blob store.
  • Scheduling: Web crawlers need to recrawl periodically to index new web pages.
  • Scalability: Web crawlers need to be capable of fetching hundreds of millions of web documents.
  • Extensibility: Most web pages are built with HTTP or HTTPS, but to ensure proper coverage the web crawler should support different network communication protocols.
  • Performance: The web crawler should be capable of self-throttling. The number of URLs crawled per second, and the throughput of the content, should be optimal.
  • User interface : The system should support the functionality of manually initiating recrawling.

A web crawler begins by assigning a worker to a URL. Once the DNS is resolved , the worker sends the URL and IP address to an HTML fetcher to establish the connection . The URL and HTML content are extracted from the page and stored in the cache for processing. This content is then dedup tested to ensure that no duplicate content is transferred to blob storage. Once this cycle is complete for a single URL it moves on to the next address in the queue.

  • What functionalities need to be added to ensure that all formats (images and video) are extracted?
  • Real web crawlers have multiple workers handling separate URLs simultaneously. How does this change the queuing process?
  • How can you account for crawler traps ?
  • A crawler should fetch a robots.txt file to determine how frequently to revisit the site as part of the Robots Exclusion Protocol .
  • Adjust the crawl speed based on an individual domain’s time to first byte (TTFB).
  • Use a domain level log to optimize the system for reverse URL indexing .

design yelp system design interview

12. Design a proximity server like Yelp or Nearby Places/Friends

For this question, you’ll design a proximity server that stores and reports the distance to places like restaurants. Users can search nearby places by distance or popularity. The database must store data for hundreds of millions businesses across the globe.

  • Storage: The system should catalog data from hundreds of millions of global businesses in a database.
  • User accounts: There should be two different types of users: business owners and customers. Business owners should be able to update the information pertaining to their business entry, and customers should be able to leave ratings and reviews.
  • Search: Users should be able to search for a business based on their GPS location or the name of the business.
  • Scalability: The system should be scalable both up and down depending on the number of requests. Requests will likely follow the lunch and dinner waves every day.
  • Availability: High availability ensures a positive user experience and user retention.
  • Consistency: All customers and business owners should see the same reviews, images, and general information.
  • Performance: It is crucial that the system is able to search the area and return results quickly.

When a user searches for business information, the request is sent first to read servers that then route it to QuadTree servers. These QuadTree servers return third-party map information and business information from a relational database and key-value store. A segment producer breaks the third-party map into smaller sections that business locations are added to. Users that leave reviews contact a write server that ultimately delivers the content to the relational database.

Data structures: A QuadTree is a tree-based data structure that partitions 2D space into quadrants.
  • How do you store lots of data and retrieve search results quickly?
  • How should the system handle different population densities? Rigid latitude/longitude grids will cause varied responsiveness based on density.
  • Can we optimize commonly searched locations?
  • Use a relational database to store the list of locations and related data.
  • Use caching to store data for the most popular locations.
  • Use sharding to split data by region.
  • Search locations within a certain dynamic grid. If there are more than 500 locations in a single cell, split the grid into 4 smaller cells. Repeat until you only have to search less than 500 locations.

design type ahead system design interview

13. Design a search engine related service like typeahead

Typeahead suggestions are more commonly referred to as an autocomplete feature. They are an essential part of search engines and sophisticated distributed search components.

This service will partially complete search queries and display five suggestions to complete the query. It should adapt to highly searched content in real time and suggest that to other users.

For example, “Seahawks win the Super Bowl” would be suggested within minutes of the event occurring.

  • Autocomplete: The system should suggest the top N (usually five to ten) frequent and relevant terms to an individual user depending on the text in the search bar.
  • Autocorrect: Minor spelling mistakes should be corrected.
  • Low latency: The system should show a list of suggested queries in real time as a user types. Response time should be lower than 200ms.
  • Fault tolerance: Suggestions should be provided even in the event of component failure.
  • Scalability: The system should support an ever increasing number of users.

When a user starts typing a query, each individual character is sent to an application server. A suggestion service gathers the top N suggestions from a distributed cache, or Redis , and returns the list to the user. An alternate service takes the query, analytically ranks it, and stores it in a NoSQL database.

  • How strongly do you weigh spelling mistake corrections?
  • How do you update selections without causing latency?
  • How do you determine the most likely completed query? Does it adapt to the user’s searches?
  • What happens if the user types very quickly? Do suggestions only appear after they’re done?
  • Use a natural language processing machine learning algorithm to anticipate the next characters.
  • Use Markov Chains to rank the probability of top queries.
  • Update ML algorithm hourly or daily rather than in real-time to reduce burden.

For this question you’ll design a service that can map the route between two locations. The system should map several optimal paths to a destination based on the mode of travel. Each route should display the total mileage and an estimated time of arrival.

  • Current location: The service should approximate a user’s current location on the map.
  • Fastest route: Given the departure location and the destination, the system should calculate and recommend the fastest route based on mode of transportation and traffic conditions.
  • Directions: Once the trip has begun, the system should deliver directions that guide the user on the optimal route.
  • Availability and scalability: The system should be highly available and scalable since it is useful to both individuals and enterprise applications like Uber and Lyft.
  • Low response time: There should be minimal wait time between entering a destination and receiving a route and ETA.
  • Accuracy: The predicted ETA should be close to the real-world travel time.

When a user accesses the system, a load balancer mediates their request. The three main live data services are close to the user to ensure low latency:

  • A location finder
  • A route finder
  • A navigator An area-search component and a graph-processing service provide the functional backbone to route mapping via a shortest path algorithm.
  • How do you collect the world map data? What third-party source will you use?
  • How do you segment the map to avoid long loading times?
  • How do you ensure the accuracy of ETA calculations for high-traffic times of day?
  • A live stream of data from users can be used to inform ETA calculations on popular routes.
  • Use lazy loading to reduce initial load time of the application.
  • The system relies heavily on a shortest path algorithm. The most common of these is Dijkstra’s algorithm .

Get hands-on with modern system design today.

Try one of our 700+ courses and learning paths: Grokking Modern System Design Interview for Software Engineers and Managers .

These questions should help you understand the kinds of problems you’re expected to solve for a System Design Interview . Answering questions like these is the most effective interview preparation strategy.

There are plenty more system design concepts to address during your preparation for a real-world FAANG interview . To give you hands-on practice with these solutions, Educative has created Grokking Modern System Design Interview for Engineers & Managers . This course will give you detailed walkthroughs on essential system design concepts and other example questions, written by current industry interviewers .

By the end, you’ll know exactly what modern interviewers are looking for and what clarifying questions to ask for each question. You’ll also have extensive practice in explaining your tradeoff decisions.

Happy learning!

Continue reading about System Design Interviews

  • Grokking Modern System Design Interview for Software Engineers and Managers
  • How Machine Learning gives you an edge in System Design
  • Cracking the Machine Learning Interview: system design approaches
  • Anatomy of a machine learning system design interview question

Haven’t found what you were looking for? Contact Us

What kind of design questions are asked in a system design interview?

Some of the commonly asked questions are: How would you design a social media app like X or Facebook? How would you design a traffic control system? How would you design a vending machine in Java? How do you design a chat application like Messenger or WhatsApp?

Which companies ask system design interview questions?

System design interview questions are commonly asked by tech companies, especially those focused on software engineering and development roles. Some big tech companies include Google, Meta, Amazon, Microsoft, and Netflix. These questions help assess a candidate’s ability to design scalable, reliable, and efficient software systems.

How do I answer system design interview questions?

Here’s how you can excel at system design interview questions:

-Understand what interviewers are expecting from you. -Follow this five-step framework to system design interviews:

  • Start by clearly defining the problem you’re addressing.
  • Sketch out a high-level design of the system.
  • Go deeper into the specifics of your design.
  • Identify any potential bottlenecks and discuss scalability.
  • Wrap up by reviewing your design and summarizing the key points.
  • Watch out for common mistakes to avoid during the process.

How to prepare for a system design interview?

To answer system design questions in an interview, you should:

  • Understand and analyze the problem first.
  • Design the system and highlight its core elements.
  • Improve the design and its elements.
  • Perform the final checks to see if the system meets user requirements.

problem solving and system design

Learn in-demand tech skills in half the time

Mock Interview

Skill Paths


Learn to Code

Tech Interview Prep

Generative AI

Data Science

Machine Learning

GitHub Students Scholarship

Early Access Courses

For Individuals

Try for Free

Gift a Subscription

Become an Author

Become an Affiliate

Earn Referral Credits


Frequently Asked Questions

Privacy Policy

Cookie Policy

Terms of Service

Business Terms of Service

Data Processing Agreement

Copyright © 2024 Educative, Inc. All rights reserved.

  • System Design Tutorial

What is System Design

  • System Design Life Cycle
  • High Level Design HLD
  • Low Level Design LLD

Design Patterns

  • UML Diagrams
  • System Design Interview Guide
  • Crack System Design Round
  • System Design Bootcamp
  • System Design Interview Questions
  • Microservices
  • Scalability
  • System Design Bootcamp | 20 System Design Concepts Every Engineer Must Know
  • What is Systems Design - Learn System Design
  • System Design Life Cycle | SDLC (Design)
  • What are the components of System Design?
  • Goals and Objectives of System Design
  • Why is it important to learn System Design?
  • Important Key Concepts and Terminologies – Learn System Design
  • Advantages of System Design

System Design Fundamentals

  • Analysis of Monolithic and Distributed Systems - Learn System Design
  • What is Requirements Gathering Process in System Design?
  • Differences between System Analysis and System Design
  • Horizontal and Vertical Scaling | System Design
  • Capacity Estimation in Systems Design
  • Object-Oriented Analysis and Design(OOAD)
  • How to Answer a System Design Interview Problem/Question?
  • Functional vs Non Functional Requirements
  • Communication Protocols In System Design
  • Web Server, Proxies and their role in Designing Systems
  • Scalability in System Design
  • What is Scalability and How to achieve it?
  • Which Scalability approach is right for our Application? | System Design
  • Primary Bottlenecks that Hurt the Scalability of an Application | System Design
  • Databases in Designing Systems
  • Complete Reference to Databases in Designing Systems - Learn System Design
  • SQL vs NoSQL: Which Database to Choose in System Design?
  • File and Database Storage Systems in System Design
  • Block, Object, and File Storage in Cloud with Difference
  • Database Sharding | System Design
  • Database Replication in System Design

High Level Design(HLD)

  • What is High Level Design – Learn System Design
  • Availability in System Design
  • Consistency in System Design
  • Reliability in System Design
  • CAP Theorem in System Design
  • What is API Gateway | System Design ?
  • What is Content Delivery Network(CDN) in System Design
  • What is Load Balancer & How Load Balancing works?
  • Caching - System Design Concept
  • Activity Diagrams | Unified Modeling Language (UML)
  • Message Queues | System Design

Low Level Design(LLD)

  • What is Low Level Design or LLD - Learn System Design
  • Difference between Authentication and Authorization in LLD | System Design
  • Performance Optimization Techniques for System Design
  • Data Structures and Algorithms for System Design
  • Containerization Architecture in System Design
  • Introduction to Modularity and Interfaces In System Design
  • Unified Modeling Language (UML) Diagrams
  • Data Partitioning Techniques in System Design
  • How to Prepare for Low-Level Design Interviews?
  • Essential Security Measures in System Design
  • Software Design Patterns Tutorial
  • Creational Design Patterns
  • Structural Design Patterns
  • Behavioral Design Patterns
  • Design Patterns Cheat Sheet - When to Use Which Design Pattern?

Interview Guide for System Design

  • How to Crack System Design Interview Round
  • Grokking Modern System Design Interview Guide
  • System Design Interview Questions and Answers [2024]
  • Most Commonly Asked System Design Interview Problems/Questions
  • 5 Common System Design Concepts for Interview Preparation
  • 5 Tips to Crack Low-Level System Design Interviews

System Design Interview Questions & Answers

  • Design Dropbox - A System Design Interview Question
  • Designing Twitter - A System Design Interview Question
  • System Design Netflix | A Complete Architecture
  • System Design of Uber App | Uber System Architecture
  • Design BookMyShow - A System Design Interview Question
  • Designing Facebook Messenger | System Design Interview

Complete Roadmap to Learn System Design for Beginners

  • Guide to System Design for Freshers
  • How Disney+ Hotstar Managed (5 Cr)+ Live Viewers During India's T20 World Cup Win[2024]

This article is an important resource if you’re new to system design and aiming for interviews at top tech companies. It breaks down system design concepts into easy-to-understand steps, starting from the basics and gradually advancing to more complex topics. By the end, you’ll be equipped with the knowledge and confidence to tackle any system design questions in interviews and excel in your new role.


Important Topics for Roadmap to Learn System Design

  • Getting Started with System Design
  • Basics of System Design
  • What is High-Level Design?
  • Unified Modeling Language (UML) Diagrams 
  • What is Low-Level Design?
  • Testing and Quality Assurance in System Design
  • System Design Interview Questions and Answers

Chapter 1: Getting Started with System Design

System design is the process of designing the architecture and components of a software system to meet specific business requirements. The process involves defining the system’s architecture, components, modules, and interfaces, and identifying the technologies and tools that will be used to implement the system.

  • What is System Design?
  • Why System Design is important?
  • Difference between System Design and System Analysis
  • Difference between System Design and System Architecture
  • Difference between System Design and System Development
  • What is System Design Life Cycle(SDLC)?
  • System Design Strategies

Chapter 2: Basics of System Design

System design is like creating a strong base for software. It involves understanding what the software needs to do and how it should perform. We decide how to handle more users or data and organize the software parts efficiently. We use smart ways of designing, like thinking about objects and their relationships. Understanding these basics helps us create reliable and efficient software.

  • Horizontal and Vertical Scaling
  • Components of System Design
  • Monolithic and Distributed Systems
  • What are microservices?
  • Monolithic vs Microservices
  • Event-Driven Architecture
  • Object-Oriented Analysis and Design | OOAD
  • Difference between Structured and Object-Oriented Analysis
  • Latency and Throughput in System Design
  • Redundancy in System Design
  • What is Domain Name System(DNS)?

Chapter 3: What is High-Level Design?

High-level design in system design is crucial as it provides a roadmap for creating complex software systems. It outlines the overall structure, components, and interactions within the system. Without a clear high-level design, developers may struggle to understand how different parts of the system relate to each other, leading to confusion and inefficiency during implementation . Ultimately, high-level design ensures that the resulting software system is well-organized, robust, and able to meet its intended objectives effectively

  • What is High Level Design
  • Eventual Consistency
  • CAP Theorem
  • Content Delivery Network
  • Load Balancer – System Design
  • Consistent Hashing
  • Caching | System Design
  • API Gateway
  • Message Queues
  • Distributed Messaging System
  • Web Servers and Proxies in System Design

Chapter 4: Databases in Designing Systems

Understanding databases is essential in system design because they are the foundation for managing and storing data efficiently. Having in-depth knowledge of database concepts allows designers to make informed decisions about how data will be stored, queried, and managed within the system. It ensures that the system can handle large volumes of data effectively, while also ensuring data integrity and security.

  • Which Database to Choose while designing a system – SQL or NoSQL
  • Block, Object, and File Storage
  • Database Sharding
  • Data Partitioning
  • Indexing in System Design

Chapter 5: Scalability in System Design

Understanding scalability in system design is crucial as it ensures that the system can handle increasing loads and growing demands efficiently. It ensures that the system remains responsive and reliable as demand increases, providing a positive user experience and supporting the system’s long-term success. Therefore, understanding scalability is essential for designing systems that can grow and adapt to meet changing needs effectively

  • What is Scalability and How to achieve it – Learn System Design

Chapter 6: Unified Modeling Language (UML) Diagrams 

Understanding UML (Unified Modeling Language) diagrams is crucial in system design as they provide a standardized way to visually represent various aspects of a software system. UML diagrams act as blueprints, helping designers communicate and document system requirements, architecture, and behavior effectively. Grasping UML concepts enables designers to create clear and concise diagrams that aid in the analysis, design, and implementation phases of the software development lifecycle.

Therefore, understanding UML diagrams is essential for creating well-designed and maintainable software systems.

  • Class Diagram
  • Object Diagram
  • Package Diagram
  • State Machine Diagram
  • Activity Diagram
  • Swimlane Diagram
  • Usecase Diagram
  • Sequence Diagram

Chapter 7: What is Low-Level Design?

Low-level design in system design is equally important as it delves into the detailed implementation of the system components outlined in the high-level design. While high-level design provides a broad overview, low-level design focuses on the specifics of how each component will be built and how they will interact at a granular level. It involves defining data structures, algorithms, interfaces, and modules required to realize the system’s functionality. It serves as a blueprint for translating high-level design concepts into executable code, ultimately contributing to the development of a robust and reliable software system.

  • What is Low Level Design or LLD
  • Software Design Patterns
  • Difference between Authentication and Authorization
  • What is Data Encryption?
  • Code Optimization Techniques
  • Unit Testing
  • Integration Testing
  • CI/CD: Continuous Integration and Continuous Delivery
  • Modularity and Interfaces In System Design

Chapter 8: Testing and Quality Assurance in System Design

Understanding testing and quality assurance in system design is essential for making sure the software works well. Testing involves checking that each part of the system does what it’s supposed to do, while quality assurance ensures the overall software meets the required standards. By doing this, designers can find and fix problems early, leading to better-quality software that works reliably for users

  • Types of Software Testing
  • Software Quality Assurance
  • Security Testing

Chapter 9: System Design Interview Questions and Answers

This System Design Interview Guide will provide the most commonly asked system design interview questions and equip you with the knowledge and techniques needed to design, build, and scale your robust applications, for professionals and newbies

  • Top Low-Level Design(LLD) Interview Questions 2024

Chapter 10: How to Crack System Design Interview Round

The system design interview is a crucial step in many technical job interviews, where candidates are tasked with designing scalable, efficient, and reliable systems to solve real-world problems. To excel in this round, candidates must demonstrate a deep understanding of architectural principles, problem-solving skills, and the ability to communicate effectively. This guide offers concise strategies and tips to help you prepare for and ace the system design interview.

  • Crack System Design Interview Round


Please Login to comment...

Similar reads.

  • System Design

Improve your Coding Skills with Practice


What kind of Experience do you want to share?

  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer

Additional menu

MindManager Blog

Nine essential problem solving tools: The ultimate guide to finding a solution

October 26, 2023 by MindManager Blog

Problem solving may unfold differently depending on the industry, or even the department you work in. However, most agree that before you can fix any issue, you need to be clear on what it is, why it’s happening, and what your ideal long-term solution will achieve.

Understanding both the nature and the cause of a problem is the only way to figure out which actions will help you resolve it.

Given that most problem-solving processes are part inspiration and part perspiration, you’ll be more successful if you can reach for a problem solving tool that facilitates collaboration, encourages creative thinking, and makes it easier to implement the fix you devise.

The problem solving tools include three unique categories: problem solving diagrams, problem solving mind maps, and problem solving software solutions.

They include:

  • Fishbone diagrams
  • Strategy maps
  • Mental maps
  • Concept maps
  • Layered process audit software
  • Charting software
  • MindManager

In this article, we’ve put together a roundup of versatile problem solving tools and software to help you and your team map out and repair workplace issues as efficiently as possible.

Let’s get started!

Problem solving diagrams

Mapping your way out of a problem is the simplest way to see where you are, and where you need to end up.

Not only do visual problem maps let you plot the most efficient route from Point A (dysfunctional situation) to Point B (flawless process), problem mapping diagrams make it easier to see:

  • The root cause of a dilemma.
  • The steps, resources, and personnel associated with each possible solution.
  • The least time-consuming, most cost-effective options.

A visual problem solving process help to solidify understanding. Furthermore, it’s a great way for you and your team to transform abstract ideas into a practical, reconstructive plan.

Here are three examples of common problem mapping diagrams you can try with your team:

1. Fishbone diagrams

Fishbone diagrams are a common problem solving tool so-named because, once complete, they resemble the skeleton of a fish.

With the possible root causes of an issue (the ribs) branching off from either side of a spine line attached to the head (the problem), dynamic fishbone diagrams let you:

  • Lay out a related set of possible reasons for an existing problem
  • Investigate each possibility by breaking it out into sub-causes
  • See how contributing factors relate to one another

MindManager Fishbone Diagram 1

Fishbone diagrams are also known as cause and effect or Ishikawa diagrams.

2. Flowcharts

A flowchart is an easy-to-understand diagram with a variety of applications. But you can use it to outline and examine how the steps of a flawed process connect.

Flowchart | MindManager

Made up of a few simple symbols linked with arrows indicating workflow direction, flowcharts clearly illustrate what happens at each stage of a process – and how each event impacts other events and decisions.

3. Strategy maps

Frequently used as a strategic planning tool, strategy maps also work well as problem mapping diagrams. Based on a hierarchal system, thoughts and ideas can be arranged on a single page to flesh out a potential resolution.

Strategy Toolkit MindManager 2018

Once you’ve got a few tactics you feel are worth exploring as possible ways to overcome a challenge, a strategy map will help you establish the best route to your problem-solving goal.

Problem solving mind maps

Problem solving mind maps are especially valuable in visualization. Because they facilitate the brainstorming process that plays a key role in both root cause analysis and the identification of potential solutions, they help make problems more solvable.

Mind maps are diagrams that represent your thinking. Since many people struggle taking or working with hand-written or typed notes, mind maps were designed to let you lay out and structure your thoughts visually so you can play with ideas, concepts, and solutions the same way your brain does.

By starting with a single notion that branches out into greater detail, problem solving mind maps make it easy to:

  • Explain unfamiliar problems or processes in less time
  • Share and elaborate on novel ideas
  • Achieve better group comprehension that can lead to more effective solutions

Mind maps are a valuable problem solving tool because they’re geared toward bringing out the flexible thinking that creative solutions require. Here are three types of problem solving mind maps you can use to facilitate the brainstorming process.

4. Mental maps

A mental map helps you get your thoughts about what might be causing a workplace issue out of your head and onto a shared digital space.

Mental Map | MindManager Blog

Because mental maps mirror the way our brains take in and analyze new information, using them to describe your theories visually will help you and your team work through and test those thought models.

5. Idea maps

Mental Map | MindManager Blog

Idea maps let you take advantage of a wide assortment of colors and images to lay down and organize your scattered thought process. Idea maps are ideal brainstorming tools because they allow you to present and explore ideas about the best way to solve a problem collaboratively, and with a shared sense of enthusiasm for outside-the-box thinking.

6. Concept maps

Concept maps are one of the best ways to shape your thoughts around a potential solution because they let you create interlinked, visual representations of intricate concepts.

Concept Map | MindManager Blog

By laying out your suggested problem-solving process digitally – and using lines to form and define relationship connections – your group will be able to see how each piece of the solution puzzle connects with another.

Problem solving software solutions

Problem solving software is the best way to take advantage of multiple problem solving tools in one platform. While some software programs are geared toward specific industries or processes – like manufacturing or customer relationship management, for example – others, like MindManager , are purpose-built to work across multiple trades, departments, and teams.

Here are three problem-solving software examples.

7. Layered process audit software

Layered process audits (LPAs) help companies oversee production processes and keep an eye on the cost and quality of the goods they create. Dedicated LPA software makes problem solving easier for manufacturers because it helps them see where costly leaks are occurring and allows all levels of management to get involved in repairing those leaks.

8. Charting software

Charting software comes in all shapes and sizes to fit a variety of business sectors. Pareto charts, for example, combine bar charts with line graphs so companies can compare different problems or contributing factors to determine their frequency, cost, and significance. Charting software is often used in marketing, where a variety of bar charts and X-Y axis diagrams make it possible to display and examine competitor profiles, customer segmentation, and sales trends.

9. MindManager

No matter where you work, or what your problem-solving role looks like, MindManager is a problem solving software that will make your team more productive in figuring out why a process, plan, or project isn’t working the way it should.

Once you know why an obstruction, shortfall, or difficulty exists, you can use MindManager’s wide range of brainstorming and problem mapping diagrams to:

  • Find the most promising way to correct the situation
  • Activate your chosen solution, and
  • Conduct regular checks to make sure your repair work is sustainable

MindManager is the ultimate problem solving software.

Not only is it versatile enough to use as your go-to system for puzzling out all types of workplace problems, MindManager’s built-in forecasting tools, timeline charts, and warning indicators let you plan, implement, and monitor your solutions.

By allowing your group to work together more effectively to break down problems, uncover solutions, and rebuild processes and workflows, MindManager’s versatile collection of problem solving tools will help make everyone on your team a more efficient problem solver.

Download a free trial today to get started!

Ready to take the next step?

MindManager helps boost collaboration and productivity among remote and hybrid teams to achieve better results, faster.

problem solving and system design

Why choose MindManager?

MindManager® helps individuals, teams, and enterprises bring greater clarity and structure to plans, projects, and processes. It provides visual productivity tools and mind mapping software to help take you and your organization to where you want to be.

Explore MindManager

7 System Design Interview Questions Every Software Engineer Should Know

HackerRank AI Promotion

System design interviews have been a critical component of technical hiring for decades. If you’re a software engineer on the job market, the ability to demonstrate your skills in a design interview is critical to landing your next role. 

The key to succeeding in these interviews is preparing for the styles of problems you might encounter. In this post, we’ll break down seven different system design interview questions you need to know to land the next job of your dreams.

What a System Design Interview Looks Like

A system design interview is a type of interview that challenges candidates to design a back-end system, often on a physical or virtual whiteboard. Candidates are asked to verbally explain their solution and thought process as they develop their answer.

System design questions grant candidates a look into an organization’s tech stack and operations and give hiring managers an understanding of the candidate’s approach to problem solving. These interviews should ideally proceed like discussions, with the candidate thinking aloud about scalability, storage, reliability, and other aspects of the system. System design interviews are more commonly found in hiring processes for senior-level roles, though developers of other experience levels may encounter this type of interview, as well.

System design interviews are considered one of the more difficult types of interviews. They require a fundamental understanding of systems and advanced preparation to succeed. By their nature, system design questions are broad, open-ended questions with a variety of possible answers.

7 System Design Questions

There are a number of different types of system design questions hiring managers can use to help showcase a developer’s skills and potential. The difficulty and composition of these tests usually varies based on the experience-level of the role. 

While answering this style of question, the main goal of a software engineer should be to demonstrate the ability to design and build integrated and scalable systems.

The following is a list of the types of system design questions an engineer might encounter during a design interview.

Design a Flash Sale System (eCommerce)

Your company has launched a hot new product. The marketing team has recommended promoting it through flash sales. The features of a flash product sale are as follows:

  • The sale starts at a particular time.
  • The requests to purchase the product may be greater than the stock count for the product.
  • Each user can purchase only one unit of the product.
  • There is no “Add to Cart” functionality.
  • Each order should be placed on a first-come-first-serve basis, and the product should go out of stock the moment the entire stock of the product is exhausted.

Using diagramming tools, design a system that implements these features in a robust, scalable way.

Components to consider:

  • As soon as the user clicks the add to cart button, trigger an API call and show a loader until the API returns a response.
  • If the request count is greater than the stock available, return an error instantly with a ‘no stock’ error.
  • Otherwise, just return a response with success, the order id, and in the background, keep processing the queue .  
  • If there is an error, show the appropriate error and remove the product from the list.
  • If successful, show the success status.

Design a ride-sharing service

Design a ride-sharing service that enables users to request rides through an app. The system should account for workflows for both passengers and drivers.

  • Payment processing
  • Encryption and storage of payment methods
  • Push notifications and in-app messaging
  • Databases to manage user and driver data (SQL, MySQL)
  • Data privacy and encryption
  • GPS and mapping technology
  • User reviews and score aggregation
  • Data tracking to identify patterns and spikes in activity
  • Image hosting system

Design a simple social media application

Designing a social media application is a common system design question that tests the candidate’s ability to plan out the structure of a wide range of technologies. Databases, media hosting, and algorithms are just a few of the topics you’ll need to cover to successfully answer this question.

And, because social media companies are among the largest employers of software engineers, there’s a good chance you might find yourself facing this question during an interview.

  • Ranking algorithms
  • Databases to manage user data (SQL, MySQL)
  • Privacy controls
  • Engagement features (following, liking, commenting, sharing)
  • Hosting of user generated content (images, video, gifs)
  • Database schema

Design a video streaming service

Design a video streaming service that allows users to view and search videos. The service should also enable internal teams to upload content through the back end. The service needs to be highly scalable, supporting large numbers of users on the platform. The application should also be able to upload, store, edit, and transmit large data files.

  • Video and image hosting system
  • Privacy controls and age restrictions
  • Recording data about video performance
  • Ranking and recommendation algorithm
  • Push notifications and announcements
  • Video player functionality

Design a URL shortening service

Design a URL shortening service that returns a short and unique URL when a user enters a long URL. Applications such TinyURL and are examples of this service. However, many other technology companies, such as YouTube , also have their own URL shortening services built into their functionalities.

  • Generating a unique and short URL
  • Scalability to handle thousands of requests
  • Functionality to redirect from the short link to the original
  • Support for custom URLs
  • Analytics and tracking of clicks
  • High availability and uptime

Design a file-storing and sharing service

Design a file hosting service that enables users to upload, store, edit, download, share, and delete files. The service should provide synchronization across various devices. Examples of this service include Dropbox and Google Drive.

  • ​File management functionality (upload, view, download)
  • Automatic synchronization between devices
  • ACID properties on database transactions
  • File sharing and permission tracking
  • Search functionality to locate files
  • Storage of large files

Design a search engine

A search engine is a software system that conducts web searches and delivers an organized list of results.  The algorithm should rank results based on a variety of factors, including: 

  • Accessibility
  • Trustworthiness
  • Website performance
  • Mobile-first design
  • User experience
  • Result ranking algorithm
  • Personalized search results
  • Voice, image, and video search
  • Machine learning and artificial intelligence
  • Recommendations for related and popular searches
  • Recording data on search volume and other statistics
  • Website crawling and indexing

System Design Interview Tips

One factor that can make system design interviews so difficult is that they involve explaining complex, technical concepts through verbal communication. To get around this, it’s helpful to use an answering method to structure your response. Here are a few tried-and-true methods to employ in your next system design interview.

Reference Examples and Experience

One way to ground the details of your answer is to frame the response around real-world experience. By sharing an example of a time you solved a similar problem, it adds detail and credibility to your answer. It also helps bolster your candidacy by demonstrating to the hiring manager that you’ve already performed the responsibilities of the position.

STAR Method

Situation, Task, Action, and Result is a great method that can be employed to answer a problem-solving or design interview question. Here’s a breakdown of these steps:

  • Situation : A good way to address almost any interview question is to lay out and define the situation and circumstances. 
  • Task : Define the problem or goal that needs to be addressed. System design questions are often multifaceted, so this step is particularly important when answering technical problem-solving questions.
  • Action : How would you go about solving the problem? How have you approached similar obstacles in the past? What technologies will you use? Try to be as specific as possible, and state your plan in steps if you can.
  • Result: Wrap it up by stating the outcome achieved. 

PREP Method

Traditionally used as a method to make effective presentations, the Point, Reason, Example, Point method can also be used to answer design questions.  

  • Point: State the solution in plain terms. 
  • Reasons: Follow up the solution by detailing your case — and include any data or insights that support your solution. 
  • Example: In addition to objective data and insights, drive your answer home by contextualizing the solution in a real-world example.
  • Point: Reiterate the solution to make it come full circle.

Resources to Prepare for Coding Interviews

HackerRank for Developers

Free Developer Skills Platform

HackerRank’s Technical Recruiting Learning Series

Tech with Tim

Get started with HackerRank

Over 2,500 companies and 40% of developers worldwide use HackerRank to hire tech talent and sharpen their skills.

Recommended topics

  • Coding Questions
  • Interview Preparation
  • System Design
  • Technical Interviews

Abstract, futuristic image generated by AI

How to Create a Developer-Friendly Interview Process


Top 20+ System Design Project Ideas For Students [2024]

system design project ideas

In education, system design plays a crucial role in bridging theoretical knowledge with practical applications. Practical skills are paramount in system design, as they empower students to tackle real-world challenges with confidence and efficacy.

Utilizing project ideas in system design not only enhances students’ problem-solving abilities but also cultivates creativity and innovation. 

These projects are invaluable learning experiences, providing students with hands-on opportunities to apply theoretical concepts to tangible solutions.

In this blog, we will explore various system design project ideas specifically tailored for students. From developing scalable web applications to optimizing database systems, we aim to inspire and equip students with the tools and knowledge to excel in their academic and professional endeavors.

What is System Design?

Table of Contents

System design is the process of creating and defining the architecture, components, and interactions of a system to fulfill specified requirements. 

It involves analyzing complex problems, breaking them into manageable components, and designing solutions that integrate seamlessly to achieve desired functionality. 

In essence, system design encompasses the conceptualization and implementation of systems across various domains, including software engineering, hardware development, and organizational management. 

It requires careful consideration of factors such as performance, scalability, reliability, and maintainability to ensure the resulting system meets user needs effectively and efficiently.

Criteria for Selecting a System Design Project

Selecting a system design project involves considering various factors to ensure it aligns with your goals, resources, and constraints. Here are some criteria to help you evaluate and choose a suitable system design project:

criteria for selecting a system design project

1. Define Objectives

Clearly outline the goals and objectives of the project, including the problem statement and desired outcomes.

2. Assess Feasibility

Evaluate the feasibility of the project in terms of available resources, time constraints, and technical expertise.

3. Consider Relevance

Ensure the project aligns with your academic curriculum, career aspirations, or personal interests to maximize engagement and motivation.

4. Scope Definition

Define the scope of the project, identifying boundaries and limitations to prevent scope creep and maintain focus.

5. Research and Innovation

Explore innovative ideas and leverage existing research to add value and relevance to the project.

6. Stakeholder Engagement  

Involve relevant stakeholders such as instructors, mentors, or industry professionals to provide guidance and support throughout the project lifecycle.

7. Risk Analysis

Identify potential risks and challenges associated with the project and develop mitigation strategies to address them effectively.

8. Evaluation Criteria

Establish clear criteria for evaluating project success, considering factors such as functionality, scalability, usability, and impact.

9. Ethical Considerations

Ensure the project adheres to ethical standards and principles, respecting privacy, security, and social responsibility.

10. Documentation and Communication

Document project requirements, progress, and outcomes comprehensively and maintain regular communication with stakeholders to ensure alignment and transparency.

Simple System Design Project Ideas For Students

Here are some simple system design project ideas suitable for students:

1. To-Do List Application

Develop a simple to-do list app that allows users to add, edit, and delete tasks. Focus on user-friendly interface design and basic functionality to help students understand database management and user interaction.

2. Weather Forecasting System

Create a weather forecasting system that retrieves data from an API and displays current weather conditions and forecasts for selected locations. This project introduces students to API integration, data parsing, and visualization techniques.

3. Library Management System

Design a system to manage library resources, including book cataloging, borrowing, and returning. Students can learn about database management, user authentication, and transaction processing through this project.

4. Online Food Ordering System

Build an online platform for ordering food from local restaurants. This project teaches students about e-commerce functionalities such as user accounts, product listings, shopping carts, and payment processing.

5. Student Attendance Tracker

Develop a system for tracking student attendance in classrooms or events. Students can learn about database management, user authentication, and data visualization while creating this application.

6. E-commerce Website for Handmade Crafts

Create a marketplace for buying and selling handmade crafts. Students can gain experience in website development, database management, and payment integration while showcasing artisan products.

7. Fitness Tracker App

Design a mobile app that tracks users’ fitness activities, including workouts, calories burned, and progress charts. This project introduces students to mobile app development, data tracking, and visualization techniques.

8. Online Quiz Platform

Build an online platform for creating and taking quizzes on various subjects. Students can learn about database management, user authentication, and quiz generation algorithms while developing this application.

9. Movie Recommendation System

Develop a movie recommendation system based on user preferences and viewing history. This project involves data analysis, machine learning techniques, and user interface design to provide personalized recommendations.

10. Expense Tracker

Create an expense-tracking application to help users manage their finances. Students can learn about database management, user authentication, and budgeting functionalities while developing this project.

11. Event Management System

Design a system for organizing and managing events, including scheduling, attendee registration, and communication. This project introduces students to event-driven programming, database management, and user interface design.

12. Travel Planner Application

Develop a travel planning app that helps users organize their trips, including itinerary creation, accommodation booking, and activity recommendations. This project teaches students about API integration, geolocation services, and user experience design.

13. Online Banking System

Create a simulation of an online banking platform with features such as account management, fund transfers, and transaction history. This project introduces students to security protocols, database management, and financial transactions.

14. Recipe Sharing Platform

Build a platform where users can share and discover recipes, including search functionality, rating systems, and ingredient lists. Students can learn about database management, user-generated content, and social interaction features.

15. Inventory Management System

Design a system for tracking inventory in a warehouse or store, including stock updates, order processing, and reporting functionalities. This project teaches students about database management, inventory control, and business logistics.

16. Health Monitoring Wearable Device

Develop a wearable device that monitors users’ health metrics such as heart rate, sleep patterns, and activity levels. This project involves hardware integration, sensor data processing, and mobile app development.

17. Online Course Platform

Create an online learning platform with features such as course catalog, enrollment, progress tracking, and quizzes. Students can learn about database management, content delivery, and student engagement strategies.

18. Social Networking Site for Hobbyists

Build a social networking site tailored for hobbyists to connect, share projects, and collaborate. This project introduces students to user authentication, content moderation, and community-building features.

19. Appointment Scheduling System

Design a system for scheduling appointments with service providers, including calendar integration, availability checks, and reminder notifications. This project teaches students about time management, user experience design, and communication protocols.

20. Real-time Chat Application

Develop a real-time messaging app that allows users to communicate with each other instantly. This project involves socket programming, message encryption, and user interface design for a seamless chat experience.

21. Pet Adoption Platform

Create an online platform connecting shelters, adopters, and pets in need of homes. Features may include pet profiles, search filters, adoption applications, and donation options. This project introduces students to database management , user authentication, and social impact considerations.

These project ideas offer opportunities for students to apply system design principles and practice building practical, real-world applications. They can be tailored to different programming languages, frameworks, and platforms based on students’ skills and preferences.

Benefits of Using System Design Project Ideas

Using system design project ideas offers several benefits for students:

Hands-On Learning

System design projects offer practical experience, allowing students to apply theoretical knowledge to real-world scenarios.

Problem-Solving Skills

Engaging in project-based learning sharpens students’ problem-solving abilities as they navigate challenges and find solutions.

Creativity and Innovation

Working on project ideas encourages creativity and innovation as students design unique solutions to complex problems.

Collaboration Opportunities

Projects often require teamwork, fostering collaboration and communication skills essential for success in various fields.

Career Readiness

By undertaking system design projects, students develop skills and knowledge that prepare them for future careers in technology, engineering, business, and other domains.

Implementation Strategies and Resources of System Design Projects

Implementing system design projects requires careful planning, execution, and utilization of various resources. Here are some implementation strategies and resources for system design projects:

Research and Planning

Begin by thoroughly researching the project requirements and planning the implementation process to ensure clarity and efficiency.

Utilize Online Tutorials and Documentation

Take advantage of online tutorials, documentation, and resources available for various programming languages, frameworks, and tools.

Seek Guidance from Mentors and Peers

Reach out to mentors, professors, or peers for guidance and support throughout the project implementation, leveraging their expertise and feedback.

Collaborate with Open Source Communities

Engage with open-source communities to access resources, share insights, and collaborate on relevant projects, fostering a supportive learning environment.

Experiment with Prototyping Tools

Explore prototyping tools and software that facilitate the visualization and testing of system designs, helping to refine concepts and identify potential improvements early in the implementation process.

Wrapping Up

System design project ideas offer students invaluable opportunities for hands-on learning, creativity, and skill development. 

By engaging in these projects, students gain practical experience, hone their problem-solving abilities, and foster innovation in diverse domains. 

Collaboration with peers and mentors, utilization of online resources, and experimentation with prototyping tools further enhance the implementation process. 

Ultimately, embarking on system design projects equips students with the knowledge, capabilities, and portfolio assets necessary for success in their academic and professional journeys. 

As they navigate through these projects, students refine their technical skills and cultivate a mindset of continuous learning and exploration in the ever-evolving landscape of system design.

Frequently Asked Questions (FAQs)

1. what are some common challenges students face when undertaking system design projects.

Students may encounter difficulties in defining project scope, managing time and resources effectively, integrating various components, and troubleshooting technical issues. Collaboration and seeking guidance from mentors can help overcome these challenges.

2. Are system design projects suitable for beginners?

Yes, system design projects can be tailored to accommodate beginners by starting with simpler concepts and gradually increasing complexity. Engaging in smaller projects, seeking assistance from online tutorials, and collaborating with peers can help beginners build confidence and skills in system design.

3. What is the difference between system design and software development?

System design focuses on creating the architecture and structure of a system to meet specific requirements, while software development involves coding and implementing the functionalities of a software application within that system.

4. How can students find mentors or advisors for their system design projects?

Students can reach out to faculty members, industry professionals, or alumni networks for mentorship and guidance throughout their project journey.

Related Posts

Tips on How to Design Professional Venn Diagrams in Python

Tips on How to Design Professional Venn Diagrams in Python

Venn diagram is the most popular diagram in scientific research articles and can be utilized to describe the relationship between various data sets. From the…

How to Get Help With Programming in R With Online Resources

How to Get Help With Programming in R With Online Resources

Writing a programming assignment is not an easy task for many students. In the modern education system, students need R programming assignments because of the…

Problem solvers by design

Students collaborate to solve ‘real-life’ problems in engineering design course.

The Untethered RoboBee

Changes to the Robobee — including an additional pair of wings and improvements to the actuators and transmission ratio — made the vehicle more efficient and allowed the addition of solar cells and an electronics panel. This Robobee is the first to fly without a power cord and is the lightest, untethered vehicle to achieve sustained flight. (Image courtesy of the Harvard Microrobotics Lab/Harvard SEAS)

Rats on campus, disruptive noise pollution, and costly deep-sea research seem to have nothing in common—except that they could all be solved using an engineering design approach.

Students in the Harvard John A. Paulson School of Engineering and Applied Sciences course Engineering Problem Solving and Design Project (ES 96) did just that, applying their engineering know-how, in collaboration with real-world clients, to come up with actionable solutions.

The course requires students to analyze a challenge as a broad system and identify social, economic, ethical, technical, and sustainable components; examine systems feedback and enforcing loops to determine root causes of the issues; and investigate and design different solutions that satisfy the boundaries that surround the challenge, explained Fawwaz Habbal , Executive Dean for Education and Research, who co-taught the course with Kelly Miller , Senior Preceptor in Applied Physics, Nabil Harfoush , Visiting Associate Professor in Engineering Sciences, and Peter Stark , Lecturer on Engineering Sciences.

“With such unique and thorough experience, students become more prepared to engage in future challenges and exercise their leadership to address and possibly resolve important human issues,” Habbal said. “This year, the students did an amazing job finding root causes for three different challenges, and together found exciting solutions. The clients were excited by the solutions and will implement some of them. It was an exciting experience for the students, rewarding for the clients, and rewarding for the instructors who observed the students’ growth and maturity.”

problem solving and system design

Noise Pollution Challenge

The Harvard University Dining Services (HUDS) loading dock is a busy place, with a steady stream of trucks entering and leaving to drop off or pick up food that is used to serve 25,000 meals each day. With so much activity, much of it occurring in the early morning hours, students living in houses adjacent to the loading dock—Eliot, Kirkland, Winthrop, and Lowell—have voiced concerns about noise that disrupts their studying and sleep. One ES 96 section worked with HUDS, identifying ways to reduce noise without negatively affecting operations.

After studying the loading dock traffic and noise levels, the students came up with several short-term and long-term solutions. In the long-term, they proposed changing the layouts of Eliot and Kirkland house, in conjunction with the house renewal project, so fewer bedroom windows face the loading dock. They also proposed keeping storm windows in place, even after double-paned windows are installed. The students found that maintaining a five-inch gap between the storm window and dual-paned windows reduced noise by nearly 60 percent, for an additional cost of $200 per storm window.

In the short-term, the students suggested coating flaps of truck beds to reduce noise when they slam against the loading dock deck. By adding a foam rubber coating to the end of a flap, and pouring silicone onto the deck to provide a soft landing space, the students were able to reduce noise levels from 100 to 86 decibels. They also developed a weatherproof box, containing acoustic foam and dense sound panels, to place over a truck’s back up alarm, which reduced noise levels from 102 to 88 decibels.

“The biggest challenges we faced were learning how to work efficiently and effectively over the course of the project,” said Jessica Klusty, S.B. ’20, a bioengineering concentrator. We were a group of 11 people, working together towards one common goal, but there were fluctuating sub-groups that changed week to week. This presented problems with coordination and communication in the beginning, but I believe it made us stronger over the long run.  The most rewarding part of this project was seeing that, in the end, we actually helped our client and the changes we suggested were immediately going into effect.”

problem solving and system design

Containing the Pest Problem at Harvard

Harvard’s office of Environmental Health and Safety receives hundreds of reports each week about pests on campus, mostly rats and mice that students spot rummaging through trashcans or skittering around buildings in search of food. The sanitary and reputational issues posed by rats on campus is a serious concern, but current actions, including artificial rocks that contain poison, video surveillance, and pest-proofing trash cans, do not keep up with the pace of the problem. One ES 96 section set out to improve the effectiveness of pest control measures and decrease pest access to food sources at Harvard.

The students studied a number of solutions, and even (briefly) considered introducing predatory animals on campus, before opting to engineer a more robust rat trap and improve Harvard’s pest report database. The students developed a trap that sits underneath the lid of a trash can; a pipe through the can lid offers rats a one-way entrance into the trap. Once inside the sealed box, a T-Rex Rat Trap kills the rat. A magnetic mechanism the students developed enables a worker to open the box, empty the unlucky rat into the trash can, then close the box and reset the trap with the push of one button.

The students also took a data-driven approach to the problem by developing a web app to consolidate pest reports EHS receives on a daily or weekly basis. Individuals use the app to report pest sightings, which are automatically populated into a database and onto a map that shows pest hot spots around campus. In addition to taking data from human reports, the app is also designed to receive information from the pest detection device the students developed. The device uses an infrared sensor to detect rats that pass nearby, then uses GPS data to automatically log the location in the app’s database and map, streamlining the pest reporting process.

“My instinct when faced with a tough problem is usually to jump right into figuring out how to solve it, but one thing this class did well was to force me not to do that. We spent the first few weeks of the semester defining the problem, rather than solving it,” said Charlie Colt-Simonds, S.B. ’20, an electrical engineering concentrator. “At first, this process was incredibly frustrating, but I soon realized that there was a lot to learn about the problem itself before we could even start thinking about solutions. It taught me to take my time when first approaching a problem, to make sure I understand it fully before jumping to solutions.”

problem solving and system design

An Intelligently Designed, Inexpensive Pressure Vessel

The lab of Peter Girguis , Professor of Organismic and Evolutionary Biology, studies the biogeochemistry of the deep sea, often taking measurements up to 4,000 feet below the ocean’s surface. Since the lab’s sensitive monitoring equipment can’t survive in such harsh conditions, they utilize titanium pressure vessels to keep equipment safe and dry, but these devices can cost up to $40,000 each, and a customized vessel is required for each new sensor the team sends to the ocean depths. One ES 96 section sought to enable researchers to obtain data more economically.

The students determined that current pressure vessels are so expensive, in part, because of the custom milling work involved in the production process. They found that using prefabricated titanium tube stock, rather than milling a vessel from a solid block of titanium, could cut production costs in half, but would lead to a reduction in durability and stability. They were able to overcome this problem by adding a series of titanium stiffening rings to the tube, effectively thickening the walls of the vessel while saving money on production and decreasing fabrication time.

The students also developed a web-based system to streamline the design of pressure vessels. A user simply inputs desired specifications—vessel size, target depth, etc.—and the application searches through data on all available pieces of titanium tube stock that fit those specs, compiling a report that lists relevant suppliers and prices. The software goes one step further by running stress validation algorithms on the pressure vessel design, automatically determining how many stiffening rings should be added to ensure the tube can stand up to the pressure at the desired depth. The system then creates engineering drawings, a description of the production process, and a user manual, which can be sent directly to the fabrication company.

“The most important lesson I learned from this project was how important one’s team is. Working with people with such a variety of skills and perspectives, but with the same drive and desire to come together and create something worthwhile made all the difference for me, and determined the success of our project,” said Rainy Michelsen, S.B. ’20, a mechanical engineering concentrator. “The fulfillment that comes from working within such a great team, and the challenge and opportunity that came in connecting seemingly separate fields of thought, and the innovation born from it, were the most rewarding aspects of the project.”

Topics: Academics , Environment

Cutting-edge science delivered direct to your inbox.

Join the Harvard SEAS mailing list.

Scientist Profiles

problem solving and system design

Fawwaz Habbal

Senior Lecturer on Applied Physics

Press Contact

Adam Zewe | 617-496-5878 | [email protected]

Related News

Five SEAS post-baccalaureate students with staff members Edward Alexander, Kathryn Hollar and Paula Nicole Booke

A bridge from undergraduate to graduate studies

Post-baccalaureate program help students transition to the next academic level

Academics , Applied Physics , Bioengineering , Diversity / Inclusion , Environmental Science & Engineering , Materials Science & Mechanical Engineering , Optics / Photonics , Quantum Engineering , Robotics

Harvard SEAS students Sudhan Chitgopkar, Noah Dohrmann, Stephanie Monson and Jimmy Mendez with a poster for their master's capstone projects

Master's student capstone spotlight: AI-Enabled Information Extraction for Investment Management

Extracting complicated data from long documents

Academics , AI / Machine Learning , Applied Computation , Computer Science , Industry

Harvard SEAS student Susannah Su with a poster for her master's student capstone project

Master's student capstone spotlight: AI-Assisted Frontline Negotiation

Speeding up document analysis ahead of negotiations

Academics , AI / Machine Learning , Applied Computation , Computer Science


  1. The 5 Steps of Problem Solving

    problem solving and system design

  2. Infographic: Harness the Power of Design Thinking to Retool How You

    problem solving and system design

  3. 6 steps of the problem solving process

    problem solving and system design

  4. Problem-Solving Strategies: Definition and 5 Techniques to Try

    problem solving and system design

  5. Systems engineering and design problem-solving cycle for ORF

    problem solving and system design

  6. Design Thinking Process

    problem solving and system design


  1. Introduction to System Analysis and Design. PART 2

  2. Problem-Solving skills for UX Designers #uxdesign

  3. Design Thinking an Problem Solving

  4. Can you solve this system of equations ?

  5. Introduction to System Analysis and Design. PART 1

  6. Systems Analysis and Design 8: Effective Output Design


  1. Design thinking, explained

    Design thinking is an innovative problem-solving process rooted in a set of skills.The approach has been around for decades, but it only started gaining traction outside of the design community after the 2008 Harvard Business Review article [subscription required] titled "Design Thinking" by Tim Brown, CEO and president of design company IDEO.

  2. How to solve problems with design thinking

    The proof is in the pudding: From 2013 to 2018, companies that embraced the business value of design had TSR that were 56 percentage points higher than that of their industry peers. Check out these insights to understand how to use design thinking to unleash the power of creativity in strategy and problem solving. Designing out of difficult times.

  3. The complete guide to System Design in 2024

    System Design is the process of defining the architecture, interfaces, and data for a system that satisfies specific requirements. It requires a systematic approach to building and engineering systems. ... You'll go through a similar method of problem-solving to answer questions about system design, machine learning, and machine learning ...

  4. What is Design Thinking?

    Design thinking is a problem-solving methodology that helps teams better identify, understand, and solve business and customer problems. ... Systems Thinking is a distinct discipline with a broader approach to problem-solving "Systems thinking is a way of exploring and developing effective action by looking at connected wholes rather than ...

  5. Tools for Systems Thinkers: The 6 Fundamental Concepts of Systems

    2. Synthesis. In general, synthesis refers to the combining of two or more things to create something new. When it comes to systems thinking, the goal is synthesis, as opposed to analysis, which ...

  6. The Six Systems Thinking Steps to Solve Complex Problems

    A quick overview of common problem solving techniques indicates that most of these methods focus on the problem rather than the whole eco-system where the problem exists. Along with the challenges of global economy, problems turn out to be more complicated and sometimes awakening problems.Climate change, traffic problems, and organizational problems that have developed through the years are ...

  7. How to solve problems using the design thinking process

    Summary. The design thinking process is a problem-solving design methodology that helps you develop solutions in a human-focused way. Initially designed at Stanford's, the five stage design thinking method can help solve ambiguous questions, or more open-ended problems. Learn how these five steps can help your team create innovative ...

  8. Systems Thinking vs Design Thinking, What's the Difference?

    1. Introduction. Systems thinking and design thinking are both approaches to problem solving and innovation. Systems thinking starts with understanding entire systems rather than individualized elements to spot opportunities for change, whereas design thinking is focused on understanding people's real needs to create human-centered products ...

  9. Unravelling the Differences: Design Thinking vs Systems Thinking

    Systems thinking is a problem-solving approach that identifies the relationship between systems and their constituent parts, acknowledging that a modification in one component can impact the entire system. ... Design thinking is a problem-solving methodology that centres on understanding user needs, brainstorming creative solutions, and ...

  10. Solving Complex Problems: Structured Thinking, Design Principles, and AI

    In our new course Solving Complex Problems: Structured Thinking, Design Principles, ... in order to significantly increase the likelihood of success in developing more complex systems. Implement effective problem-solving techniques, including abstracting the problem, idea generation, concept development and refinement, system-level thinking ...

  11. Taking a systems thinking approach to problem solving

    A systems thinking approach to problem solving recognizes the problem as part of a wider system and addresses the whole system in any solution rather than just the problem area. A popular way of applying a systems thinking lens is to examine the issue from multiple perspectives, zooming out from single and visible elements to the bigger and ...

  12. Framing Complex Problems with Systems Thinking

    At its core, systems thinking attempts to better align the way we think with how the real world works. Our thinking is based on our mental models, but these models, created from our unique perspective with its inherent biases, are usually inadequate representations of reality. The Cabreras illustrate how we can use feedback to recognize and ...

  13. System Design Examples: 4 Problems & Solutions

    We will, of course, be solving the problem in a distributed setting. In other words, the solution should be highly available and consistent. This means that we will be using several nodes that communicate with each other. ... a 3-step framework to solve any system design problem, and you watched us design simple systems from scratch. Plus, you ...

  14. Systems Analysis and Design: Exploring Modern Systems

    Problem-Solving Systems Analysis and Design Provides a Structured Approach to Problem-Solving. It enables organizations to identify and address issues systematically rather than relying on ad-hoc fixes. By understanding the root causes of problems and their implications, systems analysis helps in implementing sustainable solutions that prevent ...

  15. 40 problem-solving techniques and processes

    7. Solution evaluation. 1. Problem identification. The first stage of any problem solving process is to identify the problem (s) you need to solve. This often looks like using group discussions and activities to help a group surface and effectively articulate the challenges they're facing and wish to resolve.

  16. What is Design Thinking, and how is it used to problem-solve?

    Design Thinking is a problem-solving framework. Unlike other brainstorming methods, design thinking uses empathetic observation to focus on human-centered needs first before diving into ideation. The process of design thinking is derived from the methods that designers, architects, and engineers all use to do their work.

  17. Top 14 System Design interview questions for software engineers

    The system design interview is an important factor in the hiring process. Today, we explore 14 top SDI questions and go over suggestions and tips to help you ace your next design interview. ... Learn how to solve this problem in our step-by-step guide Design TinyURl and Instagram. 4. Design a mass social media service like Facebook, Twitter, or ...

  18. Top 30 System Design Interview Questions and Answers (2024)

    Interviewer ask System design questions to check technical knowledge of candidate. It's a great way to know whether candidate really understand how things work and computer and tech fundamentals ...

  19. Complete Roadmap to Learn System Design for Beginners

    Chapter 9: System Design Interview Questions and Answers. ... To excel in this round, candidates must demonstrate a deep understanding of architectural principles, problem-solving skills, and the ability to communicate effectively. This guide offers concise strategies and tips to help you prepare for and ace the system design interview.

  20. PDF Design, system, value: The role of problem-solving and critical ...

    thinking and problem-solving mode: (1) the design approach, (2) the systems approach, and (3) the values approach. Even though the present Swedish technology curriculum does not explicitly mention these skills, the teachers say they incorporate critical thinking and problem-solving in different settings within the subject of technology.

  21. 9 essential problem solving tools: the ultimate guide

    The problem solving tools include three unique categories: problem solving diagrams, problem solving mind maps, and problem solving software solutions. They include: Fishbone diagrams. Flowcharts. Strategy maps. Mental maps. Idea maps. Concept maps. Layered process audit software.

  22. 7 System Design Interview Questions to Know

    System design questions grant candidates a look into an organization's tech stack and operations and give hiring managers an understanding of the candidate's approach to problem solving. These interviews should ideally proceed like discussions, with the candidate thinking aloud about scalability, storage, reliability, and other aspects of ...

  23. 20+ Interesting System Design Project Ideas For Students

    Here are some simple system design project ideas suitable for students: 1. To-Do List Application. Develop a simple to-do list app that allows users to add, edit, and delete tasks. Focus on user-friendly interface design and basic functionality to help students understand database management and user interaction. 2.

  24. Problem solvers by design

    Students in the Harvard John A. Paulson School of Engineering and Applied Sciences course Engineering Problem Solving and Design Project (ES 96) did just that, applying their engineering know-how, in collaboration with real-world clients, to come up with actionable solutions. The course requires students to analyze a challenge as a broad system ...