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.

How to engage your business in community and economic development

Why companies are turning to ‘citizen developers’

‘Climate capitalism’ can help scale green solutions

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.

Implementation

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

MORE FROM MCKINSEY

How design helps incumbents build new businesses

Grokking the System Design Interview: A Comprehensive Guide

Image

System design interviews have become an integral part of the hiring process in the tech industry. As companies strive to build scalable and efficient systems, they are seeking candidates who possess strong system design skills. In this comprehensive guide, we will delve into the world of system design interviews and explore everything you need to know to excel in these interviews.

Understanding the Importance of System Design Interviews

System design plays a crucial role in tech industries. It involves designing and implementing complex software systems, ensuring they are scalable, reliable, and performant. System design interviews assess a candidate's ability to solve real-world problems by designing system architectures.

Employers value system design skills for several reasons. Firstly, a strong system design foundation allows engineers to build robust and scalable systems that can handle large user bases and high traffic. This is particularly important in today's digital age, where online platforms and applications need to support millions, if not billions, of users. Without effective system design, these systems would crumble under the weight of user demands.

Secondly, system design skills enable engineers to optimize performance, reduce costs, and improve overall efficiency. By carefully considering factors such as data storage, network communication, and computational resources, engineers can create systems that operate at peak performance while minimizing unnecessary expenses. This not only benefits the company's bottom line but also enhances the user experience by ensuring fast response times and seamless interactions.

Furthermore, system design is closely related to problem-solving and critical thinking skills, which are highly valued in the tech industry. When designing a system, engineers must consider various constraints and trade-offs, such as balancing performance with cost or choosing between different technologies. They need to analyze and evaluate different options, making informed decisions that align with the goals of the organization. System design interviews provide a platform for candidates to showcase their ability to think critically and creatively, demonstrating their problem-solving prowess.

In addition, system design interviews also assess a candidate's communication skills. Designing a system involves collaborating with various stakeholders, including product managers, developers, and operations teams. Engineers must effectively communicate their ideas, explain complex concepts, and justify their design choices. By evaluating a candidate's ability to articulate their thoughts and engage in meaningful discussions, employers can ensure that they hire individuals who can effectively collaborate and contribute to the success of the organization.

In conclusion, system design interviews are essential in the tech industry as they evaluate a candidate's ability to design robust and scalable software systems. Employers value system design skills for their impact on performance, cost-efficiency, and problem-solving capabilities. Additionally, these interviews also assess a candidate's communication skills, ensuring they can effectively collaborate with various stakeholders. By understanding the importance of system design interviews, candidates can better prepare themselves for these assessments and showcase their expertise in designing complex and efficient systems.

Fundamentals of System Design

Before diving into the specifics of system design interviews, let's explore some key concepts and methodologies in system design. These fundamentals serve as building blocks for designing scalable and efficient systems.

System design is a crucial aspect of building robust and reliable software applications. It involves creating a blueprint for the architecture and structure of a system, considering various factors such as scalability, fault tolerance, availability, and consistency.

Key Concepts in System Design

When designing a system, it's essential to consider various key concepts such as scalability, fault tolerance, availability, and consistency. Scalability refers to the system's ability to handle an increasing load without sacrificing performance. It involves designing the system in a way that allows it to efficiently scale up or down based on the demand.

Fault tolerance ensures that the system continues to function even in the presence of failures. It involves implementing mechanisms such as redundancy, replication, and error handling to ensure that the system can recover from failures and continue to provide uninterrupted service.

Availability guarantees that the system is accessible to users at all times. It involves designing the system with high availability in mind, using techniques such as load balancing, failover mechanisms, and distributed architectures.

Consistency ensures that data remains in sync across multiple instances of the system. It involves designing the system in a way that ensures that updates to data are propagated correctly and consistently across all nodes or replicas of the system.

Common System Design Methodologies

Several methodologies can help guide the system design process. These methodologies provide a structured approach to designing systems and offer various benefits and trade-offs.

The Object-Oriented Design (OOD) approach is a popular methodology that focuses on modeling the system as a collection of objects that interact with each other. It emphasizes encapsulation, inheritance, and polymorphism to create modular and reusable components.

Service-Oriented Architecture (SOA) is another widely used methodology that emphasizes designing systems as a collection of loosely coupled services. Each service performs a specific function and communicates with other services through well-defined interfaces. SOA promotes reusability, flexibility, and scalability.

Microservices Architecture is a more recent methodology that builds on the principles of SOA but takes it a step further by breaking down the system into even smaller, independent services. Each microservice is responsible for a specific business capability and can be developed, deployed, and scaled independently. Microservices architecture enables agility, scalability, and fault isolation.

By understanding these methodologies and their strengths and weaknesses, you can choose the most suitable approach for a given problem and design a system that meets the desired requirements.

Preparing for the System Design Interview

Now that we have covered the fundamentals, let's focus on preparing for the system design interview. This section will highlight essential topics to review and provide resources for effective system design study.

When it comes to the system design interview, thorough preparation is key. This interview assesses your ability to design scalable and efficient systems, taking into account various factors such as performance, availability, and reliability. To excel in this interview, it is crucial to have a solid understanding of the core topics and principles related to system design.

Essential Topics to Review

While the exact topics covered in a system design interview may vary, there are some core areas worth reviewing. These include database design, distributed systems, caching, data partitioning, load balancing, and system architecture patterns. Familiarize yourself with these topics and ensure you understand the underlying principles.

Database design is an important aspect of system design, as it involves designing efficient and scalable data storage solutions. Understanding concepts such as normalization, indexing, and query optimization will help you design robust and performant databases.

Distributed systems play a crucial role in modern software architecture. Having a solid understanding of concepts like replication, sharding, and consistency models will enable you to design systems that can handle high traffic and scale horizontally.

Caching is another essential topic in system design. Knowing how to leverage caching mechanisms like in-memory caches and content delivery networks (CDNs) can significantly improve the performance and scalability of your systems.

Data partitioning involves dividing large datasets into smaller, manageable partitions. Understanding different partitioning strategies, such as range partitioning and hash partitioning, will help you design systems that can handle large volumes of data efficiently.

Load balancing is a critical aspect of system design, especially in distributed systems. Being familiar with load balancing algorithms and techniques, such as round-robin and consistent hashing, will enable you to distribute incoming traffic evenly across multiple servers, ensuring optimal performance and high availability.

System architecture patterns provide reusable solutions to common design problems. By studying patterns like client-server architecture, microservices, and event-driven architecture, you can gain insights into how to structure your systems for scalability, fault tolerance, and maintainability.

Resources for System Design Study

Luckily, numerous resources are available to aid in your system design study. Online platforms like LeetCode, System Design Primer, and Grokking the System Design Interview offer a wealth of practice questions, tutorials, and articles. These platforms provide hands-on practice and help you familiarize yourself with real-world system design scenarios.

In addition to online platforms, reading books can provide valuable insights into system design. "Designing Data-Intensive Applications" by Martin Kleppmann is a comprehensive guide that covers various aspects of designing data-intensive systems. It explores topics like data modeling, distributed systems, and fault tolerance, offering practical advice and real-world examples.

"The Distributed Systems Primer" by Martin Kleppmann is another excellent resource that delves into the fundamentals of distributed systems. This book covers topics such as replication, consistency, and distributed consensus algorithms, providing a solid foundation for designing scalable and reliable distributed systems.

Attending system design workshops, webinars, and conferences can also enhance your understanding and provide opportunities for networking with industry experts. These events often feature talks and discussions on the latest trends and best practices in system design.

Remember, effective system design study requires a combination of theoretical knowledge and practical experience. By leveraging the resources mentioned above and actively engaging in hands-on practice, you can build the skills and confidence needed to excel in system design interviews.

During the System Design Interview

Once you have adequately prepared, it's time to focus on the actual system design interview. This section will provide an overview of what to expect in the interview and outline effective communication strategies.

During a system design interview, you will be challenged to solve a real-world problem by designing a system architecture. This is an opportunity for you to showcase your ability to think critically, analyze requirements, propose a high-level design, discuss trade-offs, and dive into specific components of the system. It is important to approach this interview with a problem-solving mindset and a clear understanding of the principles of system design.

Expect the interview to be an interactive discussion with the interviewer. You will be expected to explain your thought process, justify your design decisions, and engage in a back-and-forth dialogue. The interviewer may ask probing questions to assess your understanding of the problem and your ability to come up with innovative and scalable solutions.

What to Expect in the Interview

System design interviews typically involve solving a real-world problem by designing a system architecture. You may be asked to evaluate requirements, propose a high-level design, discuss trade-offs, and dive into specific components of the system. Expect to engage in an interactive discussion with the interviewer, where you explain your thought process and justify your design decisions.

When faced with a system design problem, it is important to approach it systematically. Begin by understanding the problem statement and the requirements. Take the time to clarify any ambiguities and ask questions to gain a deeper understanding of the problem domain. This will help you frame the problem in a way that allows you to design an effective solution.

Once you have a clear understanding of the problem, start by defining the system's goals and constraints. This will help you establish the scope of your design and guide your decision-making process. Consider factors such as scalability, availability, reliability, performance, and cost when defining the goals and constraints of the system.

Next, think about the high-level design of the system. Break it down into smaller components and identify the relationships and interactions between them. Consider the different layers of the system, such as the front-end, back-end, and database layers, and how they will communicate with each other. This will help you design a modular and scalable architecture.

During the interview, be prepared to discuss trade-offs. System design is all about making decisions and weighing the pros and cons of different options. Consider factors such as performance, scalability, maintainability, and cost when evaluating different design choices. Articulate your thought process and explain why you made certain design decisions.

Effective Communication Strategies

Clear and concise communication is crucial during a system design interview. Practice explaining complex ideas in a simple and concise manner, highlighting the trade-offs you consider and justifying your design decisions. Actively listen to the interviewer and ask clarifying questions to ensure a mutual understanding. Remember, effective communication not only showcases your technical skills but also demonstrates your ability to collaborate and work in a team.

When explaining your design decisions, break down complex concepts into smaller, digestible pieces. Use diagrams, flowcharts, or any visual aids that can help you convey your ideas more effectively. This will make it easier for the interviewer to follow along and understand your thought process.

During the interview, actively listen to the interviewer's questions and take the time to understand their perspective. If you are unsure about any part of the question or need further clarification, don't hesitate to ask for it. Clarifying questions can help you align your understanding with the interviewer's expectations and avoid any misunderstandings.

Remember to be open to feedback and be willing to adjust your design based on the interviewer's input. The ability to adapt and iterate on your design is an important skill in system design. Be receptive to suggestions and be prepared to defend or modify your design choices based on the feedback you receive.

In summary, the system design interview is an opportunity for you to demonstrate your problem-solving skills, ability to communicate complex ideas, and your understanding of system design principles. Approach the interview with a structured mindset, consider trade-offs when making design decisions, and actively listen and communicate effectively with the interviewer. With preparation and practice, you can excel in the system design interview and showcase your expertise in designing scalable and efficient systems.

Common System Design Interview Questions

Now, let's explore some common system design interview questions. By analyzing and answering these questions, you can gain a deeper understanding of the design process and familiarize yourself with the types of problems you may encounter.

One common system design interview question involves designing a social media feed system. In this case, you would need to consider the scalability of the system to handle a large number of users and their posts. Additionally, fault tolerance is crucial to ensure that the system remains operational even in the event of failures. Data consistency is another important aspect to consider, as users should see the most up-to-date posts in their feed. Availability is also a key factor, as users expect to access their feed at any time.

Another interesting case study is designing a ride-sharing service. When tackling this problem, scalability is again a critical consideration. The system should be able to handle a high volume of ride requests and match them with available drivers in real-time. Fault tolerance is important to ensure that the service remains reliable even if there are issues with individual drivers or server failures. Data consistency is essential to maintain accurate records of rides and payments. Availability is crucial for users who rely on the service for transportation.

A distributed messaging platform is another challenging system to design. Scalability is vital to handle a large number of users sending messages simultaneously. Fault tolerance is necessary to ensure that messages are delivered even if some nodes in the network fail. Data consistency is important to maintain the order of messages across different nodes. Availability is crucial to provide real-time messaging capabilities to users.

Analyzing and Answering Design Questions

When faced with a system design question, start by clarifying and understanding the requirements. Break down the problem into smaller components and prioritize the most critical aspects. Propose a high-level design, considering scalability, fault tolerance, data consistency, and availability. Evaluate different approaches and discuss the trade-offs of each. Lastly, communicate your design clearly and explain your design decisions.

During the analysis phase, it is important to identify the key components of the system and how they interact with each other. For example, in the social media feed system, you would need to consider the user profiles, posts, and the algorithm used to determine the order of posts in the feed. Understanding these components will help you make informed design decisions.

When proposing a high-level design, consider the various technologies and architectural patterns that can be used. For instance, in the ride-sharing service, you might consider using a microservices architecture to decouple different functionalities like user management, ride matching, and payment processing. This would allow for easier scalability and fault tolerance.

When evaluating different approaches, it is important to discuss the trade-offs of each option. For example, in the distributed messaging platform, you might consider using a message broker like Apache Kafka for its scalability and fault tolerance. However, this approach might introduce additional complexity and overhead. Discussing these trade-offs demonstrates your ability to make informed design decisions.

Case Studies of Typical Interview Questions

Examining case studies of typical system design interview questions can provide valuable insights. Explore examples like designing a social media feed system, a ride-sharing service, or a distributed messaging platform. Understand the challenges faced in each scenario and learn from the design choices made to overcome them.

For the social media feed system, you can study how platforms like Facebook or Instagram handle the large volume of user-generated content and deliver personalized feeds. Understanding their approaches will give you valuable insights into scalability, fault tolerance, data consistency, and availability.

When examining the ride-sharing service case study, you can learn from companies like Uber or Lyft, which have built highly scalable and reliable platforms. Analyze how they handle ride requests, driver matching, and real-time updates to provide a seamless user experience.

Lastly, for the distributed messaging platform, you can explore technologies like Apache Kafka, RabbitMQ, or Amazon SQS. These platforms provide reliable message delivery and can handle high throughput. Understanding their architecture and design choices will help you design a robust messaging system.

Post-Interview Reflection and Improvement

After completing a system design interview, it's essential to reflect on your performance and identify areas for improvement. This section will guide you in evaluating your performance, learning from feedback, and leveraging mistakes as learning opportunities.

Evaluating Your Performance

Take the time to review your performance in the system design interview objectively. Assess your ability to understand requirements, propose a scalable and robust design, and communicate effectively. Identify any areas where you struggled and consider how you can improve your understanding and approach in future interviews.

Learning from Feedback and Mistakes

Feedback is invaluable for growth. If you receive feedback after the interview, carefully consider it and identify areas where you can enhance your skills. Embrace your mistakes as learning opportunities, and actively seek ways to address any knowledge gaps. Reflecting on your performance and incorporating feedback will accelerate your progress as a system design interview candidate.

Conclusion: Mastering the System Design Interview

In conclusion, mastering the system design interview requires a solid foundation in key concepts, comprehensive preparation, effective communication, and continuous improvement. By understanding the importance of system design interviews, familiarizing yourself with the fundamentals, preparing extensively, and reflecting on your performance, you can increase your chances of excelling in system design interviews and landing your dream job. Remember, becoming a system design expert is a journey that requires continuous learning, practice, and perseverance. Best of luck!

Image

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

system-analysis-and-design-main

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

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:

industries-benefitting-from-system-analysis

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.

Transportation

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....

Software Application Rescue: Strategies for Recovery & Revival

Software Application Rescue: Strategies for Recovery & Revival

Understanding software application rescue Sometimes, application development doesn’t go the way you expect it to, and sometimes it REALLY goes...

Software Project Failure: Tips To Rebuild Your Failed Project

Software Project Failure: Tips To Rebuild Your Failed Project

Understanding Software Project Failure Software Project Failure does very little in its naming to hide what it entails. A Software...

Project Rescue Consulting: Common Challenges and Solutions

Project Rescue Consulting: Common Challenges and Solutions

What is Project Rescue Consulting? Have you ever been deep into a project that is hitting snags at every corner?...

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

  • 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?

Requirements.

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:

  • https://expandedramblings.com/index.php/pastebin-statistics-and-facts/
  • https://en.wikipedia.org/wiki/Pastebin.com

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.

Consistency

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 interviewing.io .

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!)

interviewing.io-approved 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

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

Illustration showing five icons, each one represents a different stage in the design thinking process.

The 5 Stages in the Design Thinking Process

Design thinking is a methodology which provides a solution-based approach to solving problems. It’s extremely useful when used to tackle complex problems that are ill-defined or unknown—because it serves to understand the human needs involved, reframe the problem in human-centric ways, create numerous ideas in brainstorming sessions and adopt a hands-on approach to prototyping and testing. When you know how to apply the five stages of design thinking you will be impowered because you can apply the methodology to solve complex problems that occur in our companies, our countries, and across the world.

Design thinking is a non-linear, iterative process that can have anywhere from three to seven phases, depending on whom you talk to. We focus on the five-stage design thinking model proposed by the Hasso Plattner Institute of Design at Stanford (the d.school) because they are world-renowned for the way they teach and apply design thinking.

What are the 5 Stages of the Design Thinking Process

The five stages of design thinking, according to the d.school, are:

Empathize : research your users' needs .

Define : state your users' needs and problems.

Ideate : challenge assumptions and create ideas.

Prototype : start to create solutions.

Test : try your solutions out.

Let’s dive into each stage of the design thinking process.

  • Transcript loading…

Hasso-Platner Institute Panorama

Ludwig Wilhelm Wall, CC BY-SA 3.0 <https://creativecommons.org/licenses/by-sa/3.0>, via Wikimedia Commons

Stage 1: Empathize—Research Your Users' Needs

Illustration of Empathize showing two profile heads looking at each other and overlapping about 25%.

Empathize: the first phase of design thinking, where you gain real insight into users and their needs.

© Teo Yu Siang and the Interaction Design Foundation, CC BY-NC-SA 3.0.

The first stage of the design thinking process focuses on user-centric research . You want to gain an empathic understanding of the problem you are trying to solve. Consult experts to find out more about the area of concern and conduct observations to engage and empathize with your users. You may also want to immerse yourself in your users’ physical environment to gain a deeper, personal understanding of the issues involved—as well as their experiences and motivations . Empathy is crucial to problem solving and a human-centered design process as it allows design thinkers to set aside their own assumptions about the world and gain real insight into users and their needs.

Depending on time constraints, you will gather a substantial amount of information to use during the next stage. The main aim of the Empathize stage is to develop the best possible understanding of your users, their needs and the problems that underlie the development of the product or service you want to create.

Stage 2: Define—State Your Users' Needs and Problems

Illustration of a target with an arrow in the center to represent the Define stage of the Design Thinking process.

Define: the second phase of design thinking, where you define the problem statement in a human-centered manner.

In the Define stage, you will organize the information you have gathered during the Empathize stage. You’ll analyze your observations to define the core problems you and your team have identified up to this point. Defining the problem and problem statement must be done in a human-centered manner .

For example, you should not define the problem as your own wish or need of the company: “We need to increase our food-product market share among young teenage girls by 5%.”

You should pitch the problem statement from your perception of the users’ needs: “Teenage girls need to eat nutritious food in order to thrive, be healthy and grow.”

The Define stage will help the design team collect great ideas to establish features, functions and other elements to solve the problem at hand—or, at the very least, allow real users to resolve issues themselves with minimal difficulty. In this stage, you will start to progress to the third stage, the ideation phase, where you ask questions to help you look for solutions: “How might we encourage teenage girls to perform an action that benefits them and also involves your company’s food-related product or service?” for instance.

Stage 3: Ideate—Challenge Assumptions and Create Ideas

Illustration of three light bulbs going off as a representation of the Ideate part of the design process.

Ideate: the third phase of design thinking, where you identify innovative solutions to the problem statement you’ve created.

During the third stage of the design thinking process, designers are ready to generate ideas. You’ve grown to understand your users and their needs in the Empathize stage, and you’ve analyzed your observations in the Define stage to create a user centric problem statement. With this solid background, you and your team members can start to look at the problem from different perspectives and ideate innovative solutions to your problem statement .

There are hundreds of ideation techniques you can use—such as Brainstorm, Brainwrite , Worst Possible Idea and SCAMPER . Brainstorm and Worst Possible Idea techniques are typically used at the start of the ideation stage to stimulate free thinking and expand the problem space. This allows you to generate as many ideas as possible at the start of ideation. You should pick other ideation techniques towards the end of this stage to help you investigate and test your ideas, and choose the best ones to move forward with—either because they seem to solve the problem or provide the elements required to circumvent it.

Stage 4: Prototype—Start to Create Solutions

Illustration of the Prototype phase of the design process showing a pencil, wireframes on paper, and a ruler.

Prototype: the fourth phase of design thinking, where you identify the best possible solution.

The design team will now produce a number of inexpensive, scaled down versions of the product (or specific features found within the product) to investigate the key solutions generated in the ideation phase. These prototypes can be shared and tested within the team itself, in other departments or on a small group of people outside the design team.

This is an experimental phase, and the aim is to identify the best possible solution for each of the problems identified during the first three stages . The solutions are implemented within the prototypes and, one by one, they are investigated and then accepted, improved or rejected based on the users’ experiences.

By the end of the Prototype stage, the design team will have a better idea of the product’s limitations and the problems it faces. They’ll also have a clearer view of how real users would behave, think and feel when they interact with the end product.

Stage 5: Test—Try Your Solutions Out

Illustration of the Test phase of the design process showing a checklist on a clipboard.

Test: the fifth and final phase of the design thinking process, where you test solutions to derive a deep understanding of the product and its users.

Designers or evaluators rigorously test the complete product using the best solutions identified in the Prototype stage. This is the final stage of the five-stage model; however, in an iterative process such as design thinking, the results generated are often used to redefine one or more further problems. This increased level of understanding may help you investigate the conditions of use and how people think, behave and feel towards the product, and even lead you to loop back to a previous stage in the design thinking process. You can then proceed with further iterations and make alterations and refinements to rule out alternative solutions. The ultimate goal is to get as deep an understanding of the product and its users as possible.

Did You Know Design Thinking is a Non-Linear Process?

We’ve outlined a direct and linear design thinking process here, in which one stage seemingly leads to the next with a logical conclusion at user testing . However, in practice, the process is carried out in a more flexible and non-linear fashion . For example, different groups within the design team may conduct more than one stage concurrently, or designers may collect information and prototype throughout each stage of the project to bring their ideas to life and visualize the problem solutions as they go. What’s more, results from the Test stage may reveal new insights about users which lead to another brainstorming session (Ideate) or the development of new prototypes (Prototype).

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.

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.

The design thinking process should not be seen as a concrete and inflexible approach to design; the component stages identified should serve as a guide to the activities you carry out. The stages might be switched, conducted concurrently or repeated several times to gain the most informative insights about your users, expand the solution space and hone in on innovative solutions.

This is one of the main benefits of the five-stage model. Knowledge acquired in the latter stages of the process can inform repeats of earlier stages . Information is continually used to inform the understanding of the problem and solution spaces, and to redefine the problem itself. This creates a perpetual loop, in which the designers continue to gain new insights, develop new ways to view the product (or service) and its possible uses and develop a far more profound understanding of their real users and the problems they face.

Design Thinking: A Non-Linear Process

The Take Away

Design thinking is an iterative, non-linear process which focuses on a collaboration between designers and users. It brings innovative solutions to life based on how real users think, feel and behave.

This human-centered design process consists of five core stages Empathize, Define, Ideate, Prototype and Test.

It’s important to note that these stages are a guide. The iterative, non-linear nature of design thinking means you and your design team can carry these stages out simultaneously, repeat them and even circle back to previous stages at any point in the design thinking process.

References & Where to Learn More

Take our Design Thinking course which is the ultimate guide when you want to learn how to you can apply design thinking methods throughout a design thinking process. Herbert Simon, The Sciences of the Artificial (3rd Edition), 1996.

d.school, An Introduction to Design Thinking PROCESS GUIDE , 2010.

Gerd Waloszek, Introduction to Design Thinking , 2012.

Hero Image: © the Interaction Design Foundation, CC BY-NC-SA 3.0.

Design Thinking: The Ultimate Guide

problem solving and system design

Get Weekly Design Tips

Topics in this article, what you should read next, what is design thinking and why is it so popular.

problem solving and system design

  • 1.6k shares

Personas – A Simple Introduction

problem solving and system design

  • 1.5k shares

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

problem solving and system design

  • 1.3k shares

What is Ideation – and How to Prepare for Ideation Sessions

problem solving and system design

  • 1.2k shares

Affinity Diagrams: How to Cluster Your Ideas and Reveal Insights

problem solving and system design

  • 2 years ago

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

problem solving and system design

  • 3 years ago

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

  • 1.1k shares

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 article , 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 article.

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!

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

Top 14 System Design interview questions for software engineers

problem solving and system design

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 .

widget

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 bit.ly

This question asks you to create a program that shortens long URLs like TinyURL or bit.ly. 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

Assessments

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

Cheatsheets

Frequently Asked Questions

Privacy Policy

Cookie Policy

Terms of Service

Business Terms of Service

Data Processing Agreement

Copyright © 2024 Educative, Inc. All rights reserved.

logo-sm

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

What is Systems Engineering? A Guide to Understanding Complex Systems

Leave a Reply Cancel reply

You must be logged in to post a comment.

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.

JUMP TO SECTION

  • 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?

Courses starting soon.

Foundations In Design Thinking - 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.

Back Home

  • Search Search Search …
  • Search Search …

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.

Whether in environmental science, organizational change management, or geopolitics, some problems are so large, so complicated and so enduring that it’s hard to know where to begin when seeking a solution.

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?

Systems thinking is an approach that views an issue or problem as part of a wider, dynamic system. It entails accepting the system as an entity in its own right rather than just the sum of its parts, as well as understanding how individual elements of a system influence one another.

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.

In a systems thinking approach, as well as the specific issue or problem in question, you must also look at its wider place in an overall system, the nature of relationships between that issue and other elements of the system, and the tensions and synergies that arise from the various elements and their interactions.

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 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 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:

  • The issue has high impact for many people.
  • The issue is long-term or chronic rather than a one-off incident.
  • There is no obvious solution or answer to the issue and previous attempts to solve it have failed.
  • We have a good knowledge of the issue’s environment and history through which we can sensibly place it in a systems context.

If your problem does not have most of these characteristics, systems thinking analysis may not work well in solving it.

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?

A tool called the iceberg mode l can be useful in learning to examine issues from a systems thinking perspective. This model frames an issue as an iceberg floating in a wider sea, with one small section above the water and three large sections unseen below.

The very tip of the iceberg, visible above the waterline, shows discrete events or occurrences which are easily seen and understood. For example, successive failures of a political party to win national elections.

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.

Even deeper under the water we can find underlying causes and supporting structures which underpin the patterns and trends.

For our failing political party, this could mean party rules and processes which encourage internal conflict and division rather than resolving them, and put off the best potential candidates from standing for the party in elections.

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.

In this case, this could be the belief amongst senior party figures that they’ve won in the past and can therefore win again someday by repeating old campaigns. Or a widespread attitude amongst activists in all party wings that with the right party leader, all internal problems will melt away and voter preferences will turn overnight.

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.

For example, if a volcano erupts and the local area needs to be immediately evacuated, applying a thorough systems thinking approach to life in the vicinity of an active volcano is unlikely to result in a more efficient crisis response or save more lives. After the event, systems thinking might be more constructive when considering town rebuilding, local logistics and transport links.

In general, if a problem is short-term, narrow and/or linear, systems thinking may not be the right model of thinking to use.

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.

If you’d like to know more about applying systems thinking in real life there are many online resources, books and courses you can access, including in specific fields (e.g. FutureLearn’s course on Understanding Systems Thinking in Healthcare ).

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

Critical Thinking vs. Systems Thinking

Exploring Critical Thinking vs. Systems Thinking

There are many differences between Critical Thinking vs Systems Thinking. Critical Thinking involves examining and challenging thoughts or ideas, while Systems Thinking […]

How Systems Thinking Enhances Decision Making Skills

How Systems Thinking Enhances Decision Making Skills: A Quick Guide

In today’s complex world, effective decision-making skills are more important than ever. One powerful approach to enhance these skills is through the […]

Systems Thinking for School Leaders

Systems Thinking for School Leaders: A Comprehensive Approach to Educational Management

Systems thinking is a powerful approach that school leaders can harness to navigate the complex landscape of education. With increasing challenges, such […]

problem solving and system design

Best Books on Systems Thinking: Top Picks for 2023

Systems thinking is an approach to problem-solving that embraces viewing complex systems as a whole, rather than focusing on individual components. This […]

Stanford Social Innovation Review Logo

  • Arts & Culture
  • Civic Engagement
  • Economic Development
  • Environment
  • Human Rights
  • Social Services
  • Water & Sanitation
  • Foundations
  • Nonprofits & NGOs
  • Social Enterprise
  • Collaboration

Design Thinking

  • Impact Investing
  • Measurement & Evaluation
  • Organizational Development
  • Philanthropy & Funding
  • Current Issue
  • Sponsored Supplements
  • Global Editions
  • In-Depth Series
  • Stanford PACS
  • Submission Guidelines

Human-Centered, Systems-Minded Design

Both human-centered and systems-thinking methods fit within an effective design approach, and can work in conjunction to address social challenges.

  • order reprints
  • related stories

By Thomas Both Mar. 9, 2018

For some time, Jill Vialet felt there were deep problems with the substitute teaching system in the United States. Vialet had seen these problems during her years of work as founder and CEO of Playworks , an organization that helps schools and youth programs create recess and play environments for children.

School leaders expressed one immediate, persistent problem: a shortage of substitutes. When a teacher called in sick and a registered substitute was not available, schools had to scramble to find an in-school replacement or move students around to other classrooms—a logistical headache for staff that often led to poor learning experiences. Many schools felt they needed to recruit more substitutes, yet they had precious little time to do so.

The feeling that the US school system could and should rethink and redesign substitute teaching nagged at her, and in Fall of 2015, she determined to take a design approach to tackling the problem.

Vialet learned how the substitute system worked and studied school district data, and was surprised to find that many districts actually had large pools of registered substitutes, or “subs,” who had invested time and effort in becoming certified and enrolling in the program. Yet only a small percentage of registered subs taught on a regular basis, while others subbed only occasionally or not at all. Describing the problem as a “substitute shortage” over-simplified the issue. So why was it so difficult for districts to fill substitute needs from such large sub pools?

Are you enjoying this article? Read more like this, plus SSIR's full archive of content, when you subscribe .

To answer this question, Vialet turned to human-centered design methods, which emphasize first-hand investigation, understanding who you are designing for, and an iterative experimental approach. She started by conducting ethnographic interviews with substitute teachers. Their stories were bleak: Substitutes felt they weren’t respected or valued by schools, and felt they didn’t have a community of support in schools or among their fellow subs. “At best, subs are an afterthought,” said Vialet. “At worst, they’re the butt of a joke.”

She realized her initial impulse to simply recruit and staff more subs would have minimal benefit if the existing sub pool remained underutilized. Staffing substitutes wouldn’t solve a more fundamental issue: the system and experience that greets subs on the job. This shifted Jill’s perspective and directed her efforts toward empowering schools and districts to adapt their own approaches of supporting subs.

Grappling with complex social challenges

Vialet’s challenge—how to redesign K-12 substitute teaching to ensure high-quality learning when regular teachers are absent—is a deeply human one, yet it is also embedded within complex social systems. And her challenge is hardly unique. Rita Nguyen, a past Stanford d.school Civic Innovation Fellow, for example, is working on making access to nutritious food part of US health care and health insurance systems. Jae Rhim Lee, also a past d.school fellow, is working to make burial practices in the United States more environmentally sound in the face of the funeral industry and well-established societal expectations.

Challenges like these require understanding people and their motivations, while taking into account larger issues at play. It is essential to know where to act within a network of different stakeholders and entities to create the greatest benefits. It is also important to know the short- and long-term effectiveness of solutions within the conditions of a particular social system—that is, the full range of human and institutional elements that compose and feed into a given issue, and connections between them.

Adopting a design approach

A design approach emphasizes discovering the right problem to solve, and investing in both problem-finding and problem-solving. For both human- and systems-level challenges, we need to identify the problems worth addressing if we are to create meaningful change. Understanding the right problem, we can better create effective solutions. A very simple characterization of a design approach is that we move from working to understand a challenge, to working on creating solutions in response to the challenge.

problem solving and system design

To create impactful solutions—and not just incremental change—we need to gain new perspectives on challenges. We need to analyze qualitative and quantitative data for insights that can point us to better opportunities. With new perspectives, we can conceptualize and create more effective solutions.

This work of sense-making is an act of abstraction: We move from the concrete (gathered information and observations) to abstract (a new perspective), and then back to concrete (new solutions). This abstraction helps us achieve new and meaningful viewpoints and solutions, rather than simply jumping to a quick fix for the visible symptoms of a deeper issue.

Combining the emphasis on problem-finding with the need for abstraction, we can create a new visualization of a design approach. (This is an adaptation of a model of Charles Owen’s presented in his 1998 paper “Design, Advanced Planning and Product Development.”)

problem solving and system design

Our approach is now split into four modes, with one in each quadrant:

  • Gathering qualitative and quantitative data (concrete-understanding)
  • Making sense of these data to gain insights and a new perspective on the challenge (abstract-understanding)
  • Using these insights to inform new opportunities (abstract-creation) and framing what you aim to achieve
  • Responding to those opportunities to conceptualize and build new products, services, and systems solutions (concrete-creation)

problem solving and system design

There are many tools and techniques we can use for each of these modes. Which tool a team selects depends on the challenge at hand. (I will note some typical tools in the coming sections.) Four guiding questions can help frame our work: What do we notice? What’s the meaning? What’s our direction? And what’s our solution?

problem solving and system design

Human-centered tools for a design approach

With this frame of a design approach, if we were to advance a project using human-centered methods, we might use this series of tools:

  • Obtaining data by interviewing users to gather stories and information
  • Unpacking those stories and inferring the meaning to gain insights
  • Creating brainstorming questions to describe the design opportunities—we often call these “How Might We” or HMW questions
  • Prototyping solutions to make them tangible and testable.

This is a simplified description, naming one common human-centered tool per quadrant. Again, there are many different tools we could use in each of the modes. For example, for data gathering, techniques could include arranged interviews, intercept interviews, participant and non-participant observation, user diaries, cultural probes, and analogous research—just within the practice of qualitative design research alone.

problem solving and system design

Imagine a team using human-centered tools to redesign substitute teaching, with a focus on improving the learning experiences delivered by substitutes. The following example reflects one of Vialet’s early design cycles through the four quadrants, including the team’s verbal descriptions of each cycle:

  • Data: The team starts by interviewing substitute teachers, day-to-day classroom teachers, and students. They hear a lot about people’s feelings about classes taught by substitutes. “We’re working to improve the teaching of substitutes, so we are talking to subs and students.”
  • Insights: The team tries to make sense of all they have learned by unpacking and retelling stories, and getting that information up on a board. They then work to infer new meanings to gain insights and a new perspective. “It’s all about rapport between sub and students. While many subs struggle to gain traction in the classroom, successful ones often put the planned lesson aside and connect with the students (using some go-to tricks they have).”
  • Opportunities: They use that new perspective to frame new opportunities for which to design. “How might we help every substitute develop their go-to techniques to gain rapport in the classroom?”
  • Solutions: The team can then generate new ideas and test those ideas by prototyping. They create new artifacts and experiences people (i.e. potential users) can react to. “We’re experimenting with a ‘bag-of-tricks’ kit that subs could pull from in the classroom.”

Practitioners consistently achieve high-impact solutions using human-centered design tools. However, a human-centered design approach is most successful when you primarily need to understand and create solutions for the customer or beneficiary of your product, service, or offering. Your task is also easier if you more or less control the implementation of the solution. If you manufacture a product or operate a service yourself, you can focus more on what you are creating, and less on convincing and designing for other stakeholders that impact the group you are trying to serve.

But a human-centered approach has its shortcomings. You might create solutions that address the symptoms of a problem, but in turn overlook opportunities to address root causes of the problem. You could get preoccupied with solving for human needs that are not highly impactful. You might overlook downstream consequences of your creations—not only for your beneficiaries, but also for other stakeholders or society as a whole.

The scope of your project—how deeply you delve into underlying causes—will dictate whether a solely human-centered design approach is appropriate. In the above example, a human-centered design approach might produce a very effective new set of classroom tools for subs, and if subs use them, that could have meaningful results for students. But the team may overlook other factors that more significantly impact learning outcomes when teachers are absent—for example, the difficulty in getting enough skilled and effective substitutes to fill in. That’s a more complex challenge, but one that could become part of the project simply by changing its scope.

Systems thinking tools for a design approach

Social systems problems present a number of difficulties. There are many stakeholders to consider, and a single product or solution won’t likely solve all problems.

Who should you design for? Or better yet, how do you design interventions that create positive ripples throughout a system? Where do you implement your solutions? What solutions will make a dent in the problem, or change conditions so large positive gains can occur? How do you deploy solutions in the system or get stakeholders to take action themselves?

When things are this complex, systems thinking tools can help us strategize. Here are four common systems thinking tools we might use here:

  • Obtaining data about the system by researching relevant stakeholders and noting the value exchange between them
  • Mapping cause and effect in the system to gain insights about what is enabling or inhibiting the progress we would like to see
  • Identifying points of leverage in the system as opportunities where interventions may have outsized effects
  • Experimenting with solutions to see if the desired outcomes are created

As with human-centered tools, there are many more systems tools that might be used.

problem solving and system design

Returning to the subject of substitute teaching: Imagine a team looking at the challenge with a larger scope than simply how well subs teach in the classroom. They may ask: How can we ensure there is always a substitute on hand to fill in for absent teachers? How could substitute teaching be an added benefit to schools, and to learning in general? How might we fundamentally redesign how substitute teaching is implemented in schools?

Imagine the team’s sequence of work using systems thinking tools:

  • Data: The team starts by mapping all the stakeholders and entities involved in substitute teaching—subs, day-to-day teachers, the school board, school district officers, HR personnel, parents, students, and so on—and how they relate to one another. “We’re working to redesign substitute teaching, so we are looking at the relationships between players in the system.”
  • Insights: The team then maps forces at play in the system to see what factors are positively or negatively affecting outcomes. How might changing one factor impact another? “We see a major issue is a shortage of substitutes, forcing teachers and staff to fill in or principals to redistribute students. This deteriorates classroom learning. The day-to-day reactionary management also leave no time to recruit new subs.”
  • Opportunities: Taking into consideration system stakeholders and forces, they assess areas of leverage, evaluating options for how and where in the system to act. “To recruit more substitutes, we could leverage community partners and appeal to a feeling of civic duty of potential subs.”
  • Solutions: They strategize interventions and proceed with experiments to test solutions. “A solution could be a third-party organization working with community partners to recruit and staff substitutes.”

For more complex challenges such as the above, the team benefits from the wider lens of systems thinking. They gain insight by looking at relationships in the system to find points of intervention and thus more effective solutions.

But there are potential drawbacks to a systems thinking approach. It can be difficult to see the motivations and actions of particular people within the system, which might be essential to changing human behavior. And it can be more difficult to quickly test initial hunches and assumptions. In a typical systems approach, a team may also jump from their well-thought-out-but-untested-strategy to a pilot. Pilots often aim to show the effectiveness of an intervention at a significant scale. They can test a solution in the true complete conditions of the system, but there is danger in committing extensive resources to an untested solution, and the motive shifts from learning to proving the idea works.

A framework for integrating human-centered and systems-thinking methods

Which brings us to our final point: how human-centered and systems thinking tools and mindsets might complement each other. Here, the eight previously discussed tools are placed together on the framework.

problem solving and system design

This shows a model of one possible sequence, moving through the quadrants using the tools in conjunction with each other. We can see how the two approaches contribute to the work in that mode, each through a different lens.

  • Data: Understanding which stakeholders are involved in the system helps you decide who to speak with first. And talking to individuals helps you gather rich human stories, plus you learn about other stakeholders and entities that might not be on your radar, expanding your consideration of potentially important stakeholders and the relationships between them.
  • Insights: Insights that shape how you think about the challenge come at different levels. Gaining insights at both the human level (about human mindsets and behavior) and the systems level (about structures and forces at play) gives you a more complete understanding of the challenge.
  • Opportunities: Identifying and framing the opportunity to create change in people’s lives sets you up to create meaningful solutions. In order to select the opportunities that have the most impact, consider where you should act to have the most leverage, given the dynamics of the system and where you have best access to intervene.
  • Solutions: Developing and prototyping solutions results in interventions that impact human behavior and experience. Ensure these interventions have lasting impact by considering how to best deploy and integrate the solutions within the system.

More importantly, we can generalize the objectives and roles of the two lenses: the human-centered and the system thinking methods. The following figure poses eight questions that outline what each approach brings to the table and how they can work in conjunction to effectively advance a project.

problem solving and system design

A key to benefitting from both human-centered and systems thinking methods is moving back and forth between the two. One lens may answer new questions we discovered through the other lens. (For example, we might understand an unexpected pattern we noticed through mapping cause-and-effect in the system by hearing individuals’ stories and realizing how their actions drive that pattern.) Deep understanding and attention toward specific people becomes contextualized and evaluated within the larger picture. The understanding of forces and relationships in the system is matched with the beliefs and behaviors of the people in the system.

Tackling tough questions requires a willingness to question assumptions, discover new possibilities, and experiment to see what works. We can make our practice better suited to take on the meaningful, social, and complex challenges of today by combining the human, intuitive, and exploratory nature of human-centered design with the relational, leverage-minded, and strategic nature of systems thinking.

Just ask Vialet. Her design work helped her found Substantial Classrooms in 2016. The organization is currently working to rethink student time with subs, by focusing on products and services that help school districts better train and support subs themselves.

By adopting a design approach, Vialet was able to see the challenge at both the human and systems level. Complex challenges often require this kind of dual mindset and the ability to move fluidly between the two. What some may see as two disparate or conflicting fields might actually function best when used together.

Support  SSIR ’s coverage of cross-sector solutions to global challenges.  Help us further the reach of innovative ideas.  Donate today .

Read more stories by Thomas Both .

SSIR.org and/or its third-party tools use cookies, which are necessary to its functioning and to our better understanding of user needs. By closing this banner, scrolling this page, clicking a link or continuing to otherwise browse this site, you agree to the use of cookies.

Systems Thinking vs. Design Thinking: Which One is Better?

Introduction.

In today’s complex and interconnected world, effective problem-solving and decision-making skills are crucial across various fields and industries. Two popular approaches that have gained significant attention in recent years are systems thinking and design thinking. While both methodologies aim to enhance problem-solving and decision-making processes, they approach the task from different angles.

Systems Thinking is a comprehensive approach that focuses on understanding the interdependencies and relationships between different components of a system. It views the system as a whole, rather than isolated parts, and aims to identify patterns, feedback loops, and causal relationships within the system. By considering the dynamic nature of systems and their underlying structures, systems thinking provides a holistic perspective and helps in uncovering interconnections and unintended consequences.

On the other hand, Design Thinking is a human-centered approach that emphasizes empathy, experimentation, and iterative problem-solving. It encourages cross-disciplinary collaboration and user-centric design to address and resolve complex problems. Design thinking involves a systematic process of understanding user needs, ideating creative solutions, prototyping, and testing to arrive at innovative and human-centered outcomes.

Both systems thinking and design thinking offer valuable frameworks to tackle complex problems, but they have distinct philosophies and methodologies. While systems thinking focuses on understanding complex systems and their underlying structures, design thinking concentrates on understanding and addressing users’ needs and experiences. Understanding the principles and applications of these approaches will help in determining which approach is better suited for specific problem-solving and decision-making scenarios.

Understanding Systems Thinking

Systems thinking is an approach to problem-solving and decision-making that focuses on understanding the interconnectedness and dynamics of complex systems. It recognizes that systems are composed of various components that work together to achieve a common purpose or goal.

Principles of Systems Thinking

Holistic View: Systems thinking emphasizes taking a holistic view of a problem or situation. Instead of focusing on isolated parts, it considers the entire system and the relationships between its components.

Feedback Loops: Systems thinking recognizes the presence of feedback loops within a system. These loops can be either reinforcing, causing exponential growth or decay, or balancing, maintaining a certain level of stability.

Emergence: Systems thinking acknowledges that new properties or behaviors can emerge from the interactions between components within a system. These emergent properties may not be predictable based on the characteristics of individual components.

Nonlinearity: Systems thinking recognizes that cause and effect relationships within a system are often nonlinear. Small changes in one component can lead to significant effects on the entire system, known as the butterfly effect.

Boundaries and Interconnections: Systems thinking considers the boundaries and interconnections between systems and subsystems. It recognizes that changes or events in one system can have ripple effects on other interconnected systems.

Application of Systems Thinking

Systems thinking can be applied to various problem-solving and decision-making contexts, across different fields such as business, healthcare, and environmental management. It provides a framework for understanding the underlying causes and dynamics of complex issues, enabling a more comprehensive and effective approach to problem-solving.

For example, in business, systems thinking can help identify the root causes of organizational problems by analyzing the interdependencies between different departments or processes. It can also aid in developing effective strategies by considering the potential ripple effects of decisions on various stakeholders.

Benefits and Limitations

The benefits of using a systems thinking approach include:

Enhanced understanding: Systems thinking allows for a deeper understanding of complex systems and the relationships between their components. This enables better problem diagnosis and more effective decision-making.

Comprehensive perspective: By considering the entire system, systems thinking helps to avoid narrow and short-sighted solutions. It encourages a broader perspective that takes into account the long-term implications and unintended consequences of actions.

Improved collaboration: Systems thinking promotes collaboration and interdisciplinary approaches, as it requires input and perspectives from various stakeholders. This can lead to more innovative and holistic solutions.

However, systems thinking also has its limitations:

Complexity: Understanding and analyzing complex systems can be challenging and time-consuming. It requires a multidimensional perspective and the ability to navigate through intricate relationships and feedback loops.

Data and information requirements: Systems thinking relies heavily on accurate and comprehensive data. Gathering and analyzing the necessary data can be a resource-intensive process, especially in contexts where data may be limited or unavailable.

Subjectivity: Systems thinking may involve subjective judgments and interpretations, as it requires understanding and representing the system based on the perspectives and mental models of individuals involved.

Overall, systems thinking provides a valuable framework for problem-solving and decision-making, particularly in complex and dynamic environments. By considering the interdependencies and dynamics of systems, it enables a more comprehensive understanding of issues and helps identify effective strategies for addressing them.

Understanding Design Thinking

Design thinking is a problem-solving approach that emphasizes a human-centered and iterative process to create innovative solutions. It is a methodology that originated from the field of design but has since been adopted across various industries and disciplines.

Definition and Principles of Design Thinking

Design thinking is defined as a non-linear, iterative process that seeks to understand users, challenge assumptions, redefine problems, and create innovative solutions. It is a holistic approach that involves empathy, experimentation, and collaboration.

The principles of design thinking include:

Empathy: Design thinking starts with a deep understanding of the needs, desires, and challenges of the users or stakeholders involved. It involves actively listening and observing to empathize with their experiences.

Define: Once the needs and problems are identified, the next step is to define the problem in a way that encourages creative thinking and ideation. Design thinkers reframe the problem to uncover new insights and opportunities.

Ideate: This stage involves generating a wide range of ideas and potential solutions. It encourages thinking beyond the obvious and embracing diversity of perspectives. Brainstorming techniques, such as mind mapping and prototyping, are commonly used.

Prototype: Design thinkers create tangible representations of their ideas to test and gather feedback. These prototypes can be low-fidelity sketches, mock-ups, or even physical prototypes. The goal is to quickly iterate and refine the solutions based on user feedback.

Test: In this stage, the design thinkers gather feedback from users to evaluate and refine their prototypes. The focus is on learning from failures and incorporating user insights to improve the solution.

Iterate: Design thinking is an iterative process, meaning it involves repeating the stages of ideation, prototyping, and testing to continuously refine and improve the solution.

Application of Design Thinking in Problem-Solving

Design thinking can be applied to a wide range of problem-solving contexts, from product design to business strategy development. It encourages a collaborative and multidisciplinary approach, involving individuals from different backgrounds and areas of expertise.

Some examples of how design thinking can be applied in problem-solving include:

Developing a new product or service that meets the needs and preferences of target users.

Improving customer experience by identifying pain points and designing solutions to address them.

Identifying and addressing complex social or environmental problems by understanding the underlying causes and designing innovative solutions.

Redesigning organizational processes and systems to increase efficiency and effectiveness.

Benefits and Limitations of Design Thinking Approach

The design thinking approach offers several benefits in problem-solving:

User-Centered: Design thinking places a strong emphasis on understanding the needs, desires, and challenges of users. By focusing on the end-users, it increases the chances of creating solutions that are relevant, meaningful, and impactful.

Iterative and Agile: The iterative nature of design thinking allows for quick prototyping, testing, and refinement of ideas. This flexibility enables design thinkers to adapt and pivot quickly based on user feedback and changing circumstances.

Creativity and Innovation: Design thinking encourages out-of-the-box thinking and embraces a diversity of perspectives. It provides a structured framework for nurturing creativity and generating innovative solutions.

However, design thinking also has its limitations:

Time and Resource-Intensive: The design thinking process can be time-consuming and resource-intensive, requiring dedicated teams and an investment of time and resources. This may not always be feasible in fast-paced or resource-constrained environments.

Subjectivity and Bias: The empathetic nature of design thinking can sometimes lead to subjective decision-making and biases. Without proper checks and balances, it may result in solutions that cater to a specific group or ignore certain perspectives.

Overall, design thinking is a powerful approach that fosters empathy, creativity, and collaboration in problem-solving. It is particularly well-suited for complex and ambiguous problems that require innovative and user-centered solutions.

Comparing Systems Thinking and Design Thinking

Similarities between systems thinking and design thinking.

  • Both systems thinking and design thinking are holistic approaches to problem-solving and decision-making.
  • They both emphasize the importance of understanding the interconnectedness and interactions within a system.
  • Both approaches recognize the significance of empathy and understanding user needs.
  • They both encourage a collaborative approach, involving multiple stakeholders in the problem-solving process.
  • Both systems thinking and design thinking promote iteration and learning from mistakes.
  • They both place an emphasis on creativity and innovation in problem-solving.

Differences between Systems Thinking and Design Thinking

  • Focus: Systems thinking focuses on understanding the overall system and its underlying structure, whereas design thinking focuses on finding innovative solutions to specific problems.
  • Mindset: Systems thinking requires a broader, more analytical mindset, while design thinking emphasizes a more creative and empathetic mindset.
  • Process: Systems thinking follows a systematic approach, often involving data analysis and modeling, while design thinking follows a more iterative and human-centered process.
  • Tools and Techniques: Systems thinking often uses tools like system dynamics and causal loop diagrams to analyze complex systems, while design thinking uses tools like personas, empathy maps, and prototyping to understand user needs and generate ideas.
  • Application: Systems thinking is commonly used in fields like engineering, management, and environmental science, while design thinking is frequently applied in fields like product design, user experience design, and innovation.

Strengths and Weaknesses of Systems Thinking

  • Systems thinking provides a comprehensive understanding of complex systems.
  • It helps identify and address the underlying causes of problems rather than just treating symptoms.
  • It promotes a holistic approach to problem-solving, considering the long-term consequences of decisions.
  • It helps in identifying feedback loops and potential unintended consequences.
  • It encourages collaboration and interdisciplinary thinking.

Weaknesses:

  • It can be time-consuming and requires a significant amount of data and analysis.
  • It may not offer immediate solutions to specific problems.
  • It can be challenging to communicate the complexities of system behavior to stakeholders.
  • It may be difficult to implement in organizations with rigid structures and hierarchies.

Strengths and Weaknesses of Design Thinking

  • Design thinking promotes empathy and a deep understanding of user needs.
  • It fosters a creative and innovative mindset, leading to novel solutions.
  • It encourages interdisciplinary collaboration and diverse perspectives.
  • It enables rapid prototyping and testing of ideas.
  • It offers a practical and tangible approach to problem-solving.
  • It may overlook broader system-level issues.
  • It relies heavily on individual creativity and may lack a systematic approach.
  • It may not always address underlying causes of problems.
  • It may not be suitable for highly technical or specialized problems.

In conclusion, both systems thinking and design thinking have their strengths and weaknesses. Systems thinking is effective in understanding complex systems and addressing underlying causes, while design thinking is valuable for user-centered problem-solving and fostering innovation. The best approach depends on the nature of the problem and the specific context in which it occurs. A combination of both approaches may enhance problem-solving and decision-making effectiveness by considering both the system-level and user-level perspectives.

Determining Effectiveness in Problem-Solving and Decision-Making

When evaluating the effectiveness of problem-solving and decision-making approaches, there are several factors to consider. These factors include the complexity of the problem, the resources available, the desired outcomes, and the context in which the problem exists.

Complexity of the Problem

One important factor to consider is the complexity of the problem at hand. Systems thinking is particularly effective when dealing with complex, interconnected problems. It allows for a holistic understanding of the problem and its underlying causes and dynamics. By considering the system as a whole, systems thinking enables problem solvers to identify and address the root causes of issues, rather than just treating the symptoms.

On the other hand, design thinking may be more suitable for solving problems that are more focused and specific. It provides a structured approach to generate creative solutions by emphasizing empathy, iteration, and user-centered design. Design thinking is often used in fields such as product design, user experience design, and innovation.

Available Resources

Another factor to consider is the resources available for problem-solving and decision-making. Systems thinking can be resource-intensive, as it requires collecting and analyzing a large amount of data and information about the system under study. It may also involve collaboration and coordination among multiple stakeholders. Therefore, it may not be suitable for situations where resources are limited or time is of the essence.

Design thinking, on the other hand, is more flexible and adaptable to resource constraints. It encourages rapid prototyping and iteration, allowing problem solvers to test and refine their solutions with minimal resources. Design thinking also promotes a bias towards action, enabling teams to quickly generate and test ideas in a real-world context.

Desired Outcomes

The desired outcomes of problem-solving and decision-making also play a role in determining the effectiveness of different approaches. Systems thinking is often used to address complex, systemic issues that require long-term, sustainable solutions. It takes into account the broader impacts and unintended consequences of actions, ensuring that the desired outcomes are aligned with the overall system goals.

Design thinking, on the other hand, is more focused on finding innovative and user-centered solutions. It is often used when the desired outcome is to create products, services, or experiences that meet the needs and preferences of the end-users. Design thinking encourages divergent thinking, allowing for a wide range of possible solutions that can be evaluated based on their desirability, feasibility, and viability.

Contextual Factors

Lastly, the context in which the problem exists should be taken into consideration when evaluating the effectiveness of problem-solving approaches. Systems thinking is particularly effective in complex, dynamic environments where multiple stakeholders and factors interact. It helps problem solvers understand the interdependencies and feedback loops within the system, allowing them to anticipate and manage potential risks and uncertainties.

Design thinking, on the other hand, is more adaptable to different contexts and can be applied in various domains. It is often used in situations where innovation and creativity are required, as it promotes an iterative and user-centered approach to problem-solving. Design thinking can be used in both stable and rapidly changing environments.

In conclusion, both systems thinking and design thinking have their strengths and weaknesses in problem-solving and decision-making. Systems thinking is effective for complex, systemic issues that require a holistic understanding of the problem, while design thinking is suitable for focused, user-centered problems that require innovative solutions. The choice between these approaches should be based on the complexity of the problem, the available resources, the desired outcomes, and the contextual factors. It may also be beneficial to integrate elements of both approaches in order to achieve a more comprehensive and effective problem-solving and decision-making process.

In conclusion, both systems thinking and design thinking are valuable approaches to problem-solving and decision-making. However, they differ in their focus and application.

Systems thinking emphasizes understanding the interconnectedness and interdependencies within a system. It seeks to identify the underlying causes of a problem and considers the larger context in which the problem exists. By taking a holistic view, systems thinking enables a comprehensive understanding of complex problems, leading to more effective solutions. However, its limitations lie in its complexity and the difficulty in quantifying the impact of different factors within a system.

On the other hand, design thinking focuses on gaining empathy for the users and developing innovative solutions. It employs a human-centered approach, placing the needs of end-users at the forefront. Design thinking encourages iteration and prototyping, allowing for the exploration of multiple possible solutions. Its limitations include the potential bias towards aesthetic considerations and the challenge of scaling solutions to larger systems.

Both systems thinking and design thinking have their strengths and weaknesses. Systems thinking promotes a deep understanding of complex systems, whereas design thinking encourages creativity and innovative problem-solving. The choice between the two approaches depends on the nature of the problem and the goals of the problem-solving process.

To determine the effectiveness of either approach, factors such as the complexity of the problem, the availability of resources, and the specific goals of problem-solving need to be considered. Case studies have shown successful problem-solving and decision-making using both systems thinking and design thinking. However, the choice between the two approaches should be based on careful evaluation and consideration of these factors.

In the future, it is likely that a combination of systems thinking and design thinking will be necessary to meet the challenges of an increasingly complex and interconnected world. Leveraging the strengths of both approaches can lead to more effective problem-solving and decision-making. Furthermore, the ongoing development and refinement of these approaches will play a crucial role in adapting to new and emerging challenges.

Ultimately, the choice between systems thinking and design thinking should not be seen as a competition between two approaches but rather as complementary tools in a problem-solving toolkit. By understanding and embracing the principles and methodologies of both approaches, individuals and organizations can enhance their problem-solving and decision-making capabilities, leading to more innovative and sustainable solutions.

Solving Workplace Conflicts

Why mindfulness is a trending topic: exploring the science and benefits, the psychology behind systems thinking: an exclusive insight, why systems thinking beats linear thinking any day, the success stories of companies that embrace systems thinking, the role of systems thinking in solving global crises.

35 problem-solving techniques and methods for solving complex problems

Problem solving workshop

Design your next session with SessionLab

Join the 150,000+ facilitators 
using SessionLab.

Recommended Articles

A step-by-step guide to planning a workshop, how to create an unforgettable training session in 8 simple steps, 47 useful online tools for workshop planning and meeting facilitation.

All teams and organizations encounter challenges as they grow. There are problems that might occur for teams when it comes to miscommunication or resolving business-critical issues . You may face challenges around growth , design , user engagement, and even team culture and happiness. In short, problem-solving techniques should be part of every team’s skillset.

Problem-solving methods are primarily designed to help a group or team through a process of first identifying problems and challenges , ideating possible solutions , and then evaluating the most suitable .

Finding effective solutions to complex problems isn’t easy, but by using the right process and techniques, you can help your team be more efficient in the process.

So how do you develop strategies that are engaging, and empower your team to solve problems effectively?

In this blog post, we share a series of problem-solving tools you can use in your next workshop or team meeting. You’ll also find some tips for facilitating the process and how to enable others to solve complex problems.

Let’s get started! 

How do you identify problems?

How do you identify the right solution.

  • Tips for more effective problem-solving

Complete problem-solving methods

  • Problem-solving techniques to identify and analyze problems
  • Problem-solving techniques for developing solutions

Problem-solving warm-up activities

Closing activities for a problem-solving process.

Before you can move towards finding the right solution for a given problem, you first need to identify and define the problem you wish to solve. 

Here, you want to clearly articulate what the problem is and allow your group to do the same. Remember that everyone in a group is likely to have differing perspectives and alignment is necessary in order to help the group move forward. 

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 scary for people to stand up and contribute, especially if the problems or challenges are emotive or personal in nature. Be sure to try and create a psychologically safe space for these kinds of discussions.

Remember that problem analysis and further discussion are also important. Not taking the time to fully analyze and discuss a challenge can result in the development of solutions that are not fit for purpose or do not address the underlying issue.

Successfully identifying and then analyzing a problem means facilitating a group through activities designed to help them clearly and honestly articulate their thoughts and produce usable insight.

With this data, you might then produce a problem statement that clearly describes the problem you wish to be addressed and also state the goal of any process you undertake to tackle this issue.  

Finding solutions is the end goal of any process. Complex organizational challenges can only be solved with an appropriate solution but discovering them requires using the right problem-solving tool.

After you’ve explored a problem and discussed ideas, you need to help a team discuss and choose the right solution. Consensus tools and methods such as those below help a group explore possible solutions before then voting for the best. They’re a great way to tap into the collective intelligence of the group for great results!

Remember that the process is often iterative. Great problem solvers often roadtest a viable solution in a measured way to see what works too. While you might not get the right solution on your first try, the methods below help teams land on the most likely to succeed solution while also holding space for improvement.

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

In 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

Tips for more 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.

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!

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
  • Lightning Decision Jam
  • Problem Definition Process
  • Discovery & Action Dialogue
Design Sprint 2.0
  • Open Space Technology

1. 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.

2. 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   The problem with anything that requires creative thinking is that it’s easy to get lost—lose focus and fall into the trap of having useless, open-ended, unstructured discussions. Here’s the most effective solution I’ve found: Replace all open, unstructured discussion with a clear process. What to use this exercise for: Anything which requires a group of people to make decisions, solve problems or discuss challenges. It’s always good to frame an LDJ session with a broad topic, here are some examples: The conversion flow of our checkout Our internal design process How we organise events Keeping up with our competition Improving sales flow

3. 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.

4. 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.

5. World Cafe

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.

6. 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.

7. 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.

8. 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!

  • The Creativity Dice
  • Fishbone Analysis
  • Problem Tree
  • SWOT Analysis
  • Agreement-Certainty Matrix
  • The Journalistic Six
  • LEGO Challenge
  • What, So What, Now What?
  • Journalists

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.

10. 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.

11. 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.

12. 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.

13. 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.

14. 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.

16. Speed Boat

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.

17. 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.

18. 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.

19. 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!

20. Journalists  

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 developing 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 narrow down to the correct solution.

Use these problem-solving techniques when you want to help your team find consensus, compare possible solutions, and move towards taking action on a particular problem.

  • Improved Solutions
  • Four-Step Sketch
  • 15% Solutions
  • How-Now-Wow matrix
  • Impact Effort Matrix

21. Mindspin  

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.

22. 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.

23. 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

24. 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.

25. 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.

26. 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.

27. Dotmocracy

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.

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
  • Doodling Together
  • Show and Tell
  • Constellations
  • Draw a Tree

28. 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.

29. 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.

30. 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.

31. Constellations

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.

32. 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.

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
  • Who What When Matrix
  • Response Cards

How do I conclude a problem-solving process?

All good things must come to an end. With the bulk of the work done, it can be tempting to conclude your workshop swiftly and without a moment to debrief and align. This can be problematic in that it doesn’t allow your team to fully process the results or reflect on the process.

At the end of an effective session, your team will have gone through a process that, while productive, can be exhausting. It’s important to give your group a moment to take a breath, ensure that they are clear on future actions, and provide short feedback before leaving the space. 

The primary purpose of any problem-solving method is to generate solutions and then implement them. Be sure to take the opportunity to ensure everyone is aligned and ready to effectively implement the solutions you produced in the workshop.

Remember that every process can be improved and by giving a short moment to collect feedback in the session, you can further refine your problem-solving methods and see further success in the future too.

33. 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.

34. 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.

35. 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.

Save time and effort discovering the right solutions

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 creative 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

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,…

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 online 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 job as a facilitator easier. In fact, there are plenty of free online workshop tools and meeting facilitation software you can…

Design your next workshop with SessionLab

Join the 150,000 facilitators using SessionLab

Sign up for free

  • JEE Main 2024
  • MHT CET 2024
  • JEE Advanced 2024
  • BITSAT 2024
  • View All Engineering Exams
  • Colleges Accepting B.Tech Applications
  • Top Engineering Colleges in India
  • Engineering Colleges in India
  • Engineering Colleges in Tamil Nadu
  • Engineering Colleges Accepting JEE Main
  • Top IITs in India
  • Top NITs in India
  • Top IIITs in India
  • JEE Main College Predictor
  • JEE Main Rank Predictor
  • MHT CET College Predictor
  • AP EAMCET College Predictor
  • GATE College Predictor
  • KCET College Predictor
  • JEE Advanced College Predictor
  • View All College Predictors
  • JEE Advanced Cutoff
  • JEE Main Cutoff
  • JEE Main Advanced Answer Key
  • JEE Advanced Result
  • Download E-Books and Sample Papers
  • Compare Colleges
  • B.Tech College Applications
  • KCET Result

Quick links

  • Mechanical Engineering
  • Civil Engineering
  • Aeronautical Engineering
  • Information Technology
  • Electronic Engineering

B.Tech Companion Use Now Your one-stop Counselling package for JEE Main, JEE Advanced and BITSAT

  • MAH MBA CET Exam
  • View All Management Exams

Colleges & Courses

  • MBA College Admissions
  • MBA Colleges in India
  • Top IIMs Colleges in India
  • Top Online MBA Colleges in India
  • MBA Colleges Accepting XAT Score
  • BBA Colleges in India
  • XAT College Predictor 2024
  • SNAP College Predictor
  • NMAT College Predictor
  • MAT College Predictor 2024
  • CMAT College Predictor 2024
  • CAT Percentile Predictor 2023
  • CAT 2023 College Predictor
  • CMAT 2024 Answer Key
  • TS ICET 2024 Hall Ticket
  • CMAT Result 2024
  • MAH MBA CET Cutoff 2024
  • Download Helpful Ebooks
  • List of Popular Branches
  • QnA - Get answers to your doubts
  • IIM Fees Structure
  • Colleges Accepting Admissions
  • Top Law Colleges in India
  • Law College Accepting CLAT Score
  • List of Law Colleges in India
  • Top Law Colleges in Delhi
  • Top NLUs Colleges in India
  • Top Law Colleges in Chandigarh
  • Top Law Collages in Lucknow

Predictors & E-Books

  • CLAT College Predictor
  • MHCET Law ( 5 Year L.L.B) College Predictor
  • AILET College Predictor
  • Sample Papers
  • Compare Law Collages
  • Careers360 Youtube Channel
  • CLAT Syllabus 2025
  • CLAT Previous Year Question Paper

Engineering Preparation

  • Knockout JEE Main 2024
  • Test Series JEE Main 2024
  • JEE Main 2024 Rank Booster

Medical Preparation

  • Knockout NEET 2024
  • Test Series NEET 2024
  • Rank Booster NEET 2024

Online Courses

  • JEE Main One Month Course
  • NEET One Month Course
  • IBSAT Free Mock Tests
  • IIT JEE Foundation Course
  • Knockout BITSAT 2024
  • Career Guidance Tool
  • IPU CET BJMC
  • JMI Mass Communication Entrance Exam
  • IIMC Entrance Exam
  • Media & Journalism colleges in Delhi
  • Media & Journalism colleges in Bangalore
  • Media & Journalism colleges in Mumbai
  • List of Media & Journalism Colleges in India
  • Free Ebooks
  • Free Sample Papers
  • NID DAT Exam
  • Pearl Academy Exam
  • Design Colleges in India
  • Top NIFT Colleges in India
  • Fashion Design Colleges in India
  • Top Interior Design Colleges in India
  • Top Graphic Designing Colleges in India
  • Fashion Design Colleges in Delhi
  • Fashion Design Colleges in Mumbai
  • Top Interior Design Colleges in Bangalore

Predictors & Articles

  • NIFT College Predictor
  • UCEED College Predictor
  • NID DAT College Predictor
  • NID DAT Syllabus 2025
  • NID DAT 2025
  • NIFT Result 2024
  • NIFT Fees Structure
  • NIFT Syllabus 2025
  • Free Design E-books
  • List of Branches
  • Careers360 Youtube channel
  • AIIMS Nursing
  • Top Medical Colleges in India
  • Top Medical Colleges in India accepting NEET Score
  • Medical Colleges accepting NEET
  • List of Medical Colleges in India
  • List of AIIMS Colleges In India
  • Medical Colleges in Maharashtra
  • Medical Colleges in India Accepting NEET PG
  • NEET College Predictor
  • NEET PG College Predictor
  • NEET MDS College Predictor
  • NEET Rank Predictor
  • DNB PDCET College Predictor
  • NEET Result 2024
  • NEET Asnwer Key 2024
  • NEET Cut off
  • NEET Online Preparation
  • Download Helpful E-books

NEET Companion Use Now Your one-stop Counselling package for NEET, AIIMS and JIPMER

  • CUET PG 2024
  • IGNOU B.Ed Admission 2024
  • DU Admission 2024
  • UP B.Ed JEE 2024
  • LPU NEST 2024
  • IIT JAM 2024
  • IGNOU Online Admission 2024
  • Universities in India
  • Top Universities in India 2024
  • Top Colleges in India
  • Top Universities in Uttar Pradesh 2024
  • Top Universities in Bihar
  • Top Universities in Madhya Pradesh 2024
  • Top Universities in Tamil Nadu 2024
  • Central Universities in India

Upcoming Events

  • CUET DU Cut off 2024
  • IGNOU Date Sheet
  • CUET Mock Test 2024
  • CUET Admit card 2024
  • CUET Result 2024
  • CUET Participating Universities 2024
  • CUET Previous Year Question Paper
  • CUET Syllabus 2024 for Science Students
  • E-Books and Sample Papers
  • CUET Exam Pattern 2024
  • CUET Exam Date 2024
  • CUET Cut Off 2024
  • CUET Exam Analysis 2024
  • IGNOU Exam Form 2024
  • CUET PG Counselling 2024
  • CUET Answer Key 2024
  • IT Colleges in Tamil Nadu
  • IT Colleges in Uttar Pradesh
  • MCA Colleges in India
  • BCA Colleges in India

Quick Links

  • Information Technology Courses
  • Programming Courses
  • Web Development Courses
  • Data Analytics Courses
  • Big Data Analytics Courses

Top Streams

  • IT & Software Certification Courses
  • Engineering and Architecture Certification Courses
  • Programming And Development Certification Courses
  • Business and Management Certification Courses
  • Marketing Certification Courses
  • Health and Fitness Certification Courses
  • Design Certification Courses

Specializations

  • Digital Marketing Certification Courses
  • Cyber Security Certification Courses
  • Artificial Intelligence Certification Courses
  • Business Analytics Certification Courses
  • Data Science Certification Courses
  • Cloud Computing Certification Courses
  • Machine Learning Certification Courses
  • View All Certification Courses
  • UG Degree Courses
  • PG Degree Courses
  • Short Term Courses
  • Free Courses
  • Online Degrees and Diplomas
  • Compare Courses

Top Providers

  • Coursera Courses
  • Udemy Courses
  • Edx Courses
  • Swayam Courses
  • upGrad Courses
  • Simplilearn Courses
  • Great Learning Courses
  • NCHMCT JEE 2024
  • Mah BHMCT CET
  • Top Hotel Management Colleges in Delhi
  • Top Hotel Management Colleges in Hyderabad
  • Top Hotel Management Colleges in Mumbai
  • Top Hotel Management Colleges in Tamil Nadu
  • Top Hotel Management Colleges in Maharashtra
  • B.Sc Hotel Management
  • Hotel Management
  • Diploma in Hotel Management and Catering Technology

Diploma Colleges

  • Top Diploma Colleges in Maharashtra
  • RUHS Pharmacy Admission Test
  • Top Pharmacy Colleges in India
  • Pharmacy Colleges in Pune
  • Pharmacy Colleges in Mumbai
  • Colleges Accepting GPAT Score
  • Pharmacy Colleges in Lucknow
  • List of Pharmacy Colleges in Nagpur
  • GPAT Result
  • GPAT 2024 Admit Card
  • GPAT Question Papers
  • CA Intermediate
  • CA Foundation
  • CS Executive
  • CS Professional
  • Difference between CA and CS
  • Difference between CA and CMA
  • CA Full form
  • CMA Full form
  • CS Full form
  • CA Salary In India

Top Courses & Careers

  • Bachelor of Commerce (B.Com)
  • Master of Commerce (M.Com)
  • Company Secretary
  • Cost Accountant
  • Charted Accountant
  • Credit Manager
  • Financial Advisor
  • Top Commerce Colleges in India
  • Top Government Commerce Colleges in India
  • Top Private Commerce Colleges in India
  • Top M.Com Colleges in Mumbai
  • Top B.Com Colleges in India
  • UPSC IAS 2024
  • SSC CGL 2024
  • IBPS RRB 2024
  • NDA Application Form 2024
  • UPSC IAS Application Form 2024
  • CDS Application Form 2024
  • CTET Admit card 2024
  • HP TET Result 2023
  • SSC GD Constable Admit Card 2024
  • UPTET Notification 2024
  • SBI Clerk Result 2024
  • Previous Year Sample Papers
  • Free Competition E-books
  • Sarkari Result
  • QnA- Get your doubts answered
  • UPSC Previous Year Sample Papers
  • CTET Previous Year Sample Papers
  • SBI Clerk Previous Year Sample Papers
  • NDA Previous Year Sample Papers

Other Exams

  • SSC CHSL 2024
  • UP PCS 2024
  • UGC NET 2024
  • RRB NTPC 2024
  • IBPS PO 2024
  • IBPS Clerk 2024
  • IBPS SO 2024
  • Top University in USA
  • Top University in Canada
  • Top University in Ireland
  • Top Universities in UK
  • Top Universities in Australia
  • Best MBA Colleges in Abroad
  • Business Management Studies Colleges

Top Countries

  • Study in USA
  • Study in UK
  • Study in Canada
  • Study in Australia
  • Study in Ireland
  • Study in Germany
  • Study in China
  • Study in Europe

Student Visas

  • Student Visa Canada
  • Student Visa UK
  • Student Visa USA
  • Student Visa Australia
  • Student Visa Germany
  • Student Visa New Zealand
  • Student Visa Ireland
  • CBSE Class 10th
  • CBSE Class 12th
  • UP Board 10th
  • UP Board 12th
  • Bihar Board 10th
  • Bihar Board 12th
  • Top Schools in India
  • Top Schools in Delhi
  • Top Schools in Mumbai
  • Top Schools in Chennai
  • Top Schools in Hyderabad
  • Top Schools in Kolkata
  • Top Schools in Pune
  • Top Schools in Bangalore

Products & Resources

  • JEE Main Knockout April
  • NCERT Notes
  • NCERT Syllabus
  • NCERT Books
  • RD Sharma Solutions
  • Navodaya Vidyalaya Admission 2024-25
  • NCERT Solutions
  • NCERT Solutions for Class 12
  • NCERT Solutions for Class 11
  • NCERT solutions for Class 10
  • NCERT solutions for Class 9
  • NCERT solutions for Class 8
  • NCERT Solutions for Class 7

Popular Searches

  • CAT Percentile Predictor
  • JEE Main Question Paper
  • CAT Score Vs Percentile

problem solving and system design

Scaler Academy

  • Problem Solving & System Design Beginner

Problem Solving & System Design - Beginner

Learn about binary number system, loops, string, decision tree & control with the Problem Solving & System Design - Beginner course.

The highlights

Who it is for, eligibility criteria, what you will learn.

  • Admission Details

The syllabus

  • Scholarship

How it helps

Similar courses, courses of your interest.

  • More courses by provider

Inclusive of GST

Quick facts

Course overview.

The Problem Solving & System Design - Beginner online course is a 47 weeks program. This Scaler Academy's problem-solving course is an organized, adaptable, and guided learning program. This flexible program is specially designed for  engineers to master system design and problem solving.

The training is deliberately intended to enable candidates to emerge confident and at ease. The course includes hands-on projects and exercises to help students put principles into practice. The course provides personalized subjects, peers, and learning pace that are tailored to the specific requirements of candidates. The course syllabus is industry-relevant and has been thoroughly tested to ensure that learners are job-ready. The training also includes electives such as product management , Advanced DSA and concurrent programming.

The Problem Solving & System Design - Beginner syllabus is well-structured and has been approved by the industry experts and it includes live lectures taught by academics, hands-on experience with real-world projects, and regular 1:1 mentoring from industry professionals. Candidates will receive career assistance from a specialized recruiting staff, an alumni network, and so forth. The course provider has a peer network of aspiring 2,000+ Scaler Academy students and graduates.

  • 47 weeks course
  • Offered by Scaler Academy
  • Structured curriculum
  • Hands-on projects
  • Self-paced learning
  • Personalised mentor support
  • Advanced electives
  • Career support
  • 1:1 Mentorship
  • Live classes
  • Practical experience
  • Industry-relevant program

Program offerings

  • Online classes
  • Live lectures
  • Assignments

Course and certificate fees

Fees information.

Problem Solving & System Design - Beginner Fees

certificate availability

Certificate providing authority.

Any student or working professional graduated on or before 2020 is eligible to enrol in the course.

Certification Qualifying Details

Candidates will have to complete the course syllabus, assignments, projects, specialization and electives to get the Problem Solving & System Design - Beginner certification.

After completing the Problem Solving & System Design - Beginner online training, students will learn about binary number system, decision trees & control, strings, loops, arithmetic operators, programming constructs, recursion, functions, asymptotic notations, structures, pointers, unions & dynamic arrays, problem solving &  computer science fundamentals,  computer networking , etc.

Admission details

To enrol in the Problem Solving & System Design - Beginner online course, follow the steps mentioned below:

Step 1. Open the official course page by following the link below.

(https://www.Scaler Academy.com/academy)

Step 2. Create a new account or sign in with social media.

Step 3. Give a 30 minute MCQ exam focusing on aptitude and fundamental coding to help you choose the best course for you.

Step 4. Sign up for one of the EMI plans to get started on your learning adventure right now.

Module 1: Programming Language Fundamentals

  • Introduction to Java
  • Input Output and Data Types
  • Pattern Problems
  • 1D and 2D Arrays
  • Memory Management
  • Basic OOP for Problem Solving

Module 2: Data Structures and Algorithms

Data structures and algorithms.

  • Time and Space Complexity
  • Array Problem Solving Techniques
  • Bit Manipulation
  • Maths for Problem Solving
  • Backtracking
  • Searching(Binary Search)
  • Two Pointers
  • Strings and Pattern Matching

Data Structures

  • Linked Lists
  • Queues and Deques
  • Trees and BST

Advanced Problem Solving Techniques

  • Dynamic Programming

Module 3: SQL

  • Relational Model
  • Aggregation
  • Transactions

Module 4: LLD and Project Specialisations

Fullstack engineering.

  • HTML, CSS, Javascript
  • Advanced HTML, CSS Case Studies
  • Advanced JS Concepts (OOP and Concurrency) and Popular Interview Questions
  • JS for Web Dev (DOM Manipulation, Event Handling)
  • Design Patterns
  • How Internet Works (TCP, UDP, HTTP, Layering Architecture)
  • Frontend LLD and Machine Coding Case Studies
  • Backend Architecture
  • Capstone Projects

Backend Engineering

  • Multithreading
  • Adv Lang Concepts and Popular Interview Questions
  • UML Diagrams
  • Schema Design
  • Backend LLD and Machine Coding Case Studies
  • Unit Testing
  • Spring Boot
  • Project Interview Questions (Spring/Hibernate)
  • Capstone Projects (include advance things like implementing Payment API)

Module 5: System Design Essentials

  • Introduction to Scale and Scaling Techniques
  • Introduction to Caching Techniques
  • Introduction to SQL and NoSQL Databases
  • Introduction to Event Driven Architecture
  • Introduction to Microservice Architecture

Module 6: Electives

Advanced software & system design.

  • Consistent Hashing
  • CAP Theorem
  • Distributed Systems & Databases
  • SQL and NoSQL
  • Scalability
  • Zookeeper + Kafka
  • Location Based Services (S3, Quad Trees)
  • Microservices
  • Case Studies

Data Engineering

  • Building efficient Data Processing Systems
  • Advanced SQL
  • Cloud Services - AWS, or GCP
  • Developing ETL pipelines
  • Map-Reduce Framework
  • Data Warehousing & Modelling
  • OLAP, Dashboarding
  • Workflow Orchestration
  • Logging, and Monitoring
  • MapReduce, HiveQL, Presto

DSA for Competitive Programming

  • Combinatorics and Probability
  • Matrix exponentiation
  • Advanced Trees: Segment Tree, k-D Tree
  • Disjoint Set Union
  • Advanced Dynamic Programming
  • Advanced Graphs: Bridges, Articulation point, Network Flow

Product Management for Engineers

  • Introduction to Product Management
  • Product Thinking & Product Discovery
  • Product Roadmap & Prioritization
  • Mental Models for Product Managers
  • Product Analytics
  • Hands-on case study & Mixpanel session
  • Delivery & Project Management
  • Practical ways to apply PM lessons as an Engineer

Scholarship Details

Students can get scholarship upto Rs. 25,000 based on their achievement in the 30 minutes MCQ test.

Candidates learning from Problem Solving & System Design - Beginner course by Scaler Academy will be benefited in the following ways:

  • Scaler Academy provides career assistance to students. In addition to preparing for a job, Scaler Academy assists individuals in optimizing their resumes and preparing for interviews.
  • Candidates can get upto Rs. 25,000 scholarship according to their performance in the entrance exam.
  • The program nature is flexible, candidates can learn at their own pace, even pause the course and resume in the next batch.

The total duration of the Problem Solving & System Design - Beginner course is 47 weeks.

Scaler Academy offers the Problem Solving & System Design - Beginner online course.

Yes, you can pause the Problem Solving & System Design - Beginner training and resume it with the next batch.

If you miss the Problem Solving & System Design - Beginner classes, class recordings are available for the learners.

You can always contact expert mentors and they will resolve your doubts over text or video.

Popular Articles

problem solving and system design

Latest Articles

problem solving and system design

C Programming Foundations

Jupyter notebook.

Great Learning

problem solving and system design

Eclipse Tutorial

problem solving and system design

Dev C++ Tutorial

problem solving and system design

Coding For Beginners You Can Learn to Code

Simpliv Learning

Scripting and Programming Foundations

WGS via Edx

problem solving and system design

How to Code Simple Data

The University of British Columbia, Vancouver

The University of British Columbia, Vancouver via Edx

problem solving and system design

Information Technology Fundamentals for Business P...

Polytechnic University of Valencia, Valencia

Polytechnic University of Valencia, Valencia via Edx

problem solving and system design

Introduction to C++

Microsoft Corporation

Microsoft Corporation via Edx

Professional Certificate Course in Data Science

Professional Certificate Course in Data Science

Newton School -->

JavaScript Foundations

PW Skills -->

Technical Analysis Series

Cracking the coding interview in java foundation, python foundations.

Getting Started with Generative AI APIs

Getting Started with Generative AI APIs

Codio --> via Coursera

Generating code with ChatGPT API

Generating code with ChatGPT API

Prompt Engineering for ChatGPT

Prompt Engineering for ChatGPT

Vanderbilt --> via Coursera

Data Structures and Algorithms in Java

Great Learning -->

Angular7 for Beginners

More courses by scaler academy.

Data Science and Machine Learning Program- Beginne...

Data Science and Machine Learning Program- Beginne...

Trending courses, popular courses, popular platforms, learn more about the courses.

The Brochure has been downloaded and sent to your registered email ID successfully.

Brochure has been downloaded.

Sign In/Sign Up

We endeavor to keep you informed and help you choose the right Career path. Sign in and access our resources on Exams, Study Material, Counseling, Colleges etc.

Help us to help you.

problem solving and system design

Download the Careers360 App on your Android phone

Regular exam updates, QnA, Predictors, College Applications & E-books now on your Mobile

Careers360 App

  • 150M + Students
  • 30,000 + Colleges
  • 500 + Exams
  • 1500 + E-books

problem solving and system design

  • Guidelines to Write Experiences
  • Write Interview Experience
  • Write Work Experience
  • Write Admission Experience
  • Write Campus Experience
  • Write Engineering Experience
  • Write Coaching Experience
  • Write Professional Degree Experience
  • Write Govt. Exam Experiences
  • Google STEP Intern Coding Challenge Experience
  • 100 Days of Code with GFG - Get Committed to a Challenge!
  • 30 Days to Form a New Habit of Coding – Are You In?
  • Top Company Coding Challenges
  • Top 15 Websites for Coding Challenges and Competitions
  • 7 Best Coding Challenge Websites in 2020
  • 100 Days of UI/UX: A Complete Guide For Beginners
  • My Code Frenzy Experience: Challenging Rounds and a Valuable Learning Journey
  • Geeks Coding Challenge [GCC 2019] - A Three Day Coding Challenge By GeeksforGeeks
  • Coding Experience - My First 30 Days of DSA
  • 100 Days of Code - A Complete Guide For Beginners and Experienced
  • Coder’s Journey featuring Chhavi Sharma (Software Engineer at Microsoft)
  • How Learning To Code Can Change Your Life?
  • Coder's Journey featuring Abhishree Shetty (Software Engineer at Microsoft)
  • Coder's Journey featuring Jaideep Pyne (Software Developer at Amazon)
  • Top 10 Coding Projects For Beginners
  • Coder's Journey featuring Tejas Sardana (Software Engineer at Google)
  • GFG CodeCamp - Build Coding Habit in Just 21 Days
  • 7 Ways to Make Money While Learning to Code

My career journey of 100 Days Of Coding Challenge

Introduction.

In our college, a fascinating contest named the “100 Days of Coding Challenge” was initiated. This challenge aimed to foster daily coding habits among students by requiring them to solve a coding problem every day on the HackerRank platform. Participants could choose to solve problems in any programming language, such as C, C++, Java, Python, and more. I chose to tackle the problems using C++.

Daily Practice and Consistency

The key to succeeding in this challenge was consistency. Every day, a new problem was posted on HackerRank, and I made it a point to solve each one diligently. The problems ranged from basic to advanced levels, covering a wide array of topics like algorithms, data structures, and problem-solving techniques.

Using C++ allowed me to deepen my understanding of the language’s intricacies and apply its features effectively. Whether it was managing memory with pointers or leveraging the Standard Template Library (STL), each problem presented a unique learning opportunity.

Mastery of HackerRank Platform

One of the significant benefits of this challenge was gaining proficiency with the HackerRank platform. Initially, navigating the platform, understanding the problem statements, and interpreting the output could be daunting. However, with daily practice, I became adept at using the platform efficiently, which will undoubtedly be beneficial in future coding competitions and technical assessments.

Enhanced Problem-Solving Skills

Solving a diverse range of problems daily honed my problem-solving skills. It required me to think critically and come up with optimized solutions. This practice not only improved my logical thinking but also taught me the importance of writing clean, efficient, and readable code.

Deepened Knowledge of C++

Choosing C++ as my language of preference allowed me to explore its depth comprehensively. From implementing basic algorithms to solving complex problems involving advanced data structures, my grasp of C++ strengthened significantly. The challenge pushed me to learn more about the language’s capabilities and apply them effectively.

Completion and Certification

After 100 days of persistent effort and dedication, I successfully completed the challenge. The sense of accomplishment was immense, and receiving a certificate validated my hard work. This certificate not only serves as a testament to my coding skills but also adds value to my resume, showcasing my commitment to continuous learning and self-improvement.

The 100 Days of Coding Challenge was a transformative experience. It instilled a disciplined approach to coding, enhanced my problem-solving abilities, and provided a platform to master C++. Such challenges are crucial in shaping the skills and mindset required for a successful career in technology. I am grateful for this opportunity and look forward to participating in more such initiatives in the future.

Participating in the 100 Days of Coding Challenge has been a rewarding journey. It has equipped me with valuable skills and knowledge that will serve as a solid foundation for my future endeavors in the world of coding and software development.

Please Login to comment...

Similar reads.

  • Career-Journey
  • Write It Up 2024
  • Experiences

Improve your Coding Skills with Practice

 alt=

What kind of Experience do you want to share?

IMAGES

  1. 5 step problem solving method

    problem solving and system design

  2. Problem-Solving Strategies: Definition and 5 Techniques to Try

    problem solving and system design

  3. Problem Solving Methods Steps Process Examples

    problem solving and system design

  4. 5 step problem solving method

    problem solving and system design

  5. Problem Solving Infographic 10 Steps Concept Vector Image

    problem solving and system design

  6. An Overview Of 9 Step Problem Solving Model

    problem solving and system design

VIDEO

  1. Problem-Solving skills for UX Designers #uxdesign

  2. System Analysis and Design

  3. Design Thinking an Problem Solving

  4. Can you solve this system of equations ?

  5. Introduction to System Analysis and Design. PART 1

  6. System Design

COMMENTS

  1. 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 ...

  2. System Analysis

    In conclusion, system analysis and design form the cornerstone of successful software development and problem-solving in different domains. System analysis and design are fundamental processes that help us navigate the complexities of modern systems and to make innovation in a rapidly changing world.

  3. 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.

  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. 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.

  6. Grokking the System Design Interview: A Comprehensive Guide

    In summary, the system design interview is an opportunity for you to demonstrate your problem-solving skills, ability to communicate complex ideas, and your understanding of system design principles. Approach the interview with a structured mindset, consider trade-offs when making design decisions, and actively listen and communicate ...

  7. 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 ...

  8. System Design Examples: 4 Problems & Solutions

    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. ... to be solving this problem. Because this is The Correct Answer, if this unique ID generation problem presents itself in the real life setting.

  9. The 5 Stages in the Design Thinking Process

    Design thinking is a methodology which provides a solution-based approach to solving problems. It's extremely useful when used to tackle complex problems that are ill-defined or unknown—because it serves to understand the human needs involved, reframe the problem in human-centric ways, create numerous ideas in brainstorming sessions and adopt a hands-on approach to prototyping and testing.

  10. Best System Design Courses Online with Certificates [2024]

    Explore top courses and programs in System Design. Enhance your skills with expert-led lessons from industry leaders. Start your learning journey today! ... Computational Thinking, Problem Solving, System Software, Product Design. 4.7. 4.7 stars (1.3K reviews) Intermediate · Course · 1 - 4 Weeks. C. IBM. IBM Full Stack Software Developer.

  11. 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 ...

  12. 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 ...

  13. 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 ...

  14. 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 ...

  15. 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.

  16. Human-Centered, Systems-Minded Design

    A design approach emphasizes discovering the right problem to solve, and investing in both problem-finding and problem-solving. For both human- and systems-level challenges, we need to identify the problems worth addressing if we are to create meaningful change. ... Systems thinking tools for a design approach. Social systems problems present a ...

  17. Systems Thinking vs. Design Thinking: Which One is Better?

    In conclusion, both systems thinking and design thinking have their strengths and weaknesses. Systems thinking is effective in understanding complex systems and addressing underlying causes, while design thinking is valuable for user-centered problem-solving and fostering innovation. The best approach depends on the nature of the problem and ...

  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. The Design of Problem-Solving Systems

    Abstract. Problem solving, from a systems point of view, is to be considered as a complex, cognitive-affective process of formation and reorganization of conceptual systems. Conceptualization of problem-solving systems includes the development of a problem solver's possible points of view, their naming by explicitly introduced terms, and ...

  20. What is Problem Solving? Steps, Process & Techniques

    Finding a suitable solution for issues can be accomplished by following the basic four-step problem-solving process and methodology outlined below. Step. Characteristics. 1. Define the problem. Differentiate fact from opinion. Specify underlying causes. Consult each faction involved for information. State the problem specifically.

  21. 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.

  22. 35 problem-solving techniques and methods for solving complex problems

    6. 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.

  23. Problem Solving & System Design

    The Problem Solving & System Design - Beginner online course is a 47 weeks program. This Scaler Academy's problem-solving course is an organized, adaptable, and guided learning program. This flexible program is specially designed for engineers to master system design and problem solving.

  24. My career journey of 100 Days Of Coding Challenge

    Introduction. In our college, a fascinating contest named the "100 Days of Coding Challenge" was initiated. This challenge aimed to foster daily coding habits among students by requiring them to solve a coding problem every day on the HackerRank platform. Participants could choose to solve problems in any programming language, such as C ...