The complete guide to System Design in 2024

Guide to System Design in 2023

Why should I learn system design?

Over the last two decades, there have been a lot of advancements in large-scale web applications. These advancements have redefined the way we think about software development. All of the apps and services that we use daily, like Facebook, Instagram, and Twitter, are scalable systems. Billions of people worldwide access these systems concurrently, so they need to be designed to handle large amounts of traffic and data. This is where system design comes in.

As a software developer, you’ll be increasingly expected to understand system design concepts and how to apply them. In the early stages of your career, learning system design will allow you to tackle software design problems with more confidence and apply design principles to your everyday work. As you progress through your career and begin interviewing for higher-level positions, system design will become a larger part of your interview process. So, no matter what your level is, system design matters to you.

Because of its increasing importance, we wanted to create a resource to help you navigate the world of system design. This guide details the fundamental concepts of system design and also links you to relevant resources to help you gain a deeper understanding and acquire real-world, hands-on experience.

This guide covers :

What is System Design?

Horizontal and vertical scaling, microservices, proxy servers, cap theorem, redundancy and replication, block storage, file storage, object storage, redundant disk arrays (raid), google file system (gfs), hadoop distributed file system (hdfs), bloom filters, consistent hashing, merkle trees, leader election, how to choose a database, database schemas, database queries, acid properties, database sharding and partitioning, database indexing, what are distributed systems, distributed system failures, stateless and stateful systems.

  • Distibuted system design patterns

DNS and load balancing

N-tier applications, http and rest, stream processing, cache invalidation, cache eviction, machine learning and system design, containerization and system design.

  • The cloud and System Design
For a guide specific to the System Design Interview, check out our popular course: Grokking the Modern System Design Interview for Engineers & Managers .

System design is the process of defining the architecture, interfaces, and data for a system that satisfies specific requirements. System design meets the needs of your business or organization through coherent and efficient systems. Once your business or organization determines its requirements, you can begin to build them into a physical system design that addresses the needs of your customers. The way you design your system will depend on whether you want to go for custom development, commercial solutions, or a combination of the two.

System design requires a systematic approach to building and engineering systems. A good system design requires you to think about everything in an infrastructure, from the hardware and software, all the way down to the data and how it’s stored.

Learn more about the basics of system design .

System Design fundamentals

Scalability refers to an application’s ability to handle and withstand an increased workload without sacrificing latency . An application needs solid computing power to scale well. The servers should be powerful enough to handle increased traffic loads. There are two main ways to scale an application: horizontally and vertically.

Horizontal scaling, or scaling out , means adding more hardware to the existing hardware resource pool. It increases the computational power of the system as a whole. Vertical scaling, or scaling up , means adding more power to your server. It increases the power of the hardware running the application.

There are pros and cons to both types of scaling. You’ll come across scenarios where you need to consider the tradeoffs and decide which type of scaling is best for your use case. To dive deeper into scaling, check out the scalability module in our hands-on course Web Application and Software Architecture 101 . You’ll learn about the benefits and risks of scaling, primary bottlenecks that hurt application scalability, and more.

Microservices , or microservice architecture , is an architectural style that structures an application using loosely coupled services . It divides a large application into a collection of separate, modular services. These modules can be independently developed, deployed, and maintained.

Microservices operate at a much faster and more reliable speed than traditional monolithic applications. Since the application is broken down into independent services, every service has its own logic and codebase. These services can communicate with one another through Application Programming Interfaces (APIs).

Microservices are ideal if you want to develop a more scalable application. With microservices, it’s much easier to scale your applications because of their modern capabilities and modules. If you work with a large or growing organization, microservices are great for your team because they’re easier to scale and customize over time. To learn more about microservices and their benefits, drawbacks, technology stacks, and more, check out this microservices architecture tutorial.

A proxy server , or forward proxy , acts as a channel between a user and the internet . It separates the end-user from the website they’re browsing. Proxy servers not only forward user requests but also provide many benefits, such as:

  • Improved security
  • Improved privacy
  • Access to blocked resources
  • Control of the internet usage of employees and children
  • Cache data to speed up requests

Whenever a user sends a request for an address from the end server, the traffic flows through a proxy server on its way to the address. When the request comes back to the user, it flows back through the same proxy server which then forwards it to the user.

The CAP theorem is a fundamental theorem within the field of system design. It states that a distributed system can only provide two of three properties simultaneously: consistency, availability, and partition tolerance. The theorem formalizes the tradeoff between consistency and availability when there’s a partition.

Learn more about CAP theorem .

Redundancy is the process of duplicating critical components of a system with the intention of increasing a system’s reliability or overall performance. It usually comes in the form of a backup or fail-safe. Redundancy plays a critical role in removing single points of failure in a system and providing backups when needed. For example, if we have two instances of a service running in production and one of those instances fails, the system can fail over to another one.

Replication is the process of sharing information to ensure consistency between redundant resources . You can replicate software or hardware components to improve reliability, fault-tolerance, or accessibility. Replication is used in many database management systems (DBMS), typically with a primary-replica relationship between the original and its copies. The primary server receives all of the updates, and those updates pass through the replica servers. Each replica server outputs a message when it successfully receives the update.

Learn more about redundancy and replication in the Web Application & Software Architecture module of Scalability & System Design for Developers .

Data is at the center of every system. When designing a system, we need to consider how we’re going to store our data. There are various storage techniques that we can implement depending on the needs of our system.

Block storage is a data storage technique where data is broken down into blocks of equal sizes , and each individual block is given a unique identifier for easy accessibility. These blocks are stored in physical storage. As opposed to adhering to a fixed path, blocks can be stored anywhere in the system, making more efficient use of the resources.

Learn more about block storage .

File storage is a hierarchical storage methodology . With this method, the data is stored in files. The files are stored in folders, which are then stored in directories. This storage method is only good for a limited amount of data, primarily structured data.

As the size of the data grows beyond a certain point, this data storage method can become a hassle.

Learn more about file storage .

Object storage is the storage designed to handle large amounts of unstructured data . Object storage is the preferred data storage method for data archiving and data backups because it offers dynamic scalability . Object storage isn’t directly accessible to an operating system. Communication happens through RESTful APIs at the application level. This type of storage provides immense flexibility and value to systems, because backups, unstructured data, and log files are important to any system. If you’re designing a system with large datasets, object storage would work well for your organization.

Learn more about object storage .

A redundant array of inexpensive disks, or RAID, is a technique to use multiple disks in concert to build a faster, bigger, and more reliable disk system. Externally, a RAID looks like a disk. Internally, it’s a complex tool, consisting of multiple disks, memory, and one or more processors to manage the system. A hardware RAID is similar to a computer system but is specialized for the task of managing a group of disks. There are different levels of RAID, all of which offer different functionalities. When designing a complex system, you may want to implement RAID storage techniques.

Learn more about the advantages and disadvantages of RAID .

  • Message queues

A message queue is a queue that routes messages from a source to a destination , or from the sender to the receiver. It follows the FIFO (first in first out) policy. The message that is sent first is delivered first. Message queues facilitate asynchronous behavior , which allows modules to communicate with each other in the background without hindering primary tasks. They also facilitate cross-module communication and provide temporary storage for messages until they are processed and consumed by the consumer.

Learn more about message queues in the Web Application & Software Architecture module of Scalability & System Design for Developers .

Apache Kafka started in 2011 as a messaging system for LinkedIn but has since grown to become a popular distributed event streaming platform . The platform is capable of handling trillions of records per day. Kafka is a distributed system consisting of servers and clients that communicate through a TCP network protocol. The system allows us to read, write, store, and process events. Kafka is primarily used for building data pipelines and implementing streaming solutions.

While Kafka is a popular messaging queue option, there are other popular options as well. To learn more about which messaging queue to use, we recommend the following resources:

  • Kafka vs RabbitMQ
  • Kafka vs Kinesis
  • Kafka vs Flink

File systems

File systems are processes that manage how and where data on a storage disk is stored . It manages the internal operations of the storage disk and explains how users or applications can access disk data. File systems manage multiple operations, such as:

  • File naming
  • Storage management
  • Directories
  • Access rules

Without file systems, it would be hard to identify files, retrieve files, or manage authorizations for individual files.

Google File System (GFS) is a scalable distributed file system designed for large data-intensive applications , like Gmail or YouTube. It was built to handle batch processing on large data sets. GFS is designed for system-to-system interaction, rather than user-to-user interaction. It’s scalable and fault-tolerant. The architecture consists of GFS clusters, which contain a single master and multiple ChunkServers that can be accessed by multiple clients.

It’s common to be asked to design a distributed file system, such as GFS, in system design interviews . To prepare for this xview question, check out the System Design Interview resources in Grokking Modern System Design for Engineers & Managers .

The Hadoop Distributed File System (HDFS) is a distributed file system that handles large sets of data and runs on commodity hardware. It was built to store unstructured data. HDFS is a more simplified version of GFS. A lot of its architectural decisions are inspired by the GFS design. HDFS is built around the idea that the most efficient data processing pattern is a “write once, read many times” pattern.

It’s common to be asked to design a distributed file storage system, such as HDFS, in system design interviews. To prepare for this system design interview question, check out Grokking Modern System Design for Engineers and Managers .

System Design patterns

Knowing system design patterns is very important because they can be applied to all types of distributed systems. They also play a major role in system design interviews. System design patterns refer to common design problems related to distributed systems and their solutions. Let’s take a look at some commonly used patterns.

Bloom filters are probabilistic data structures designed to answer the set membership question: Is this element present in the set?

Bloom filters are highly space-efficient and do not store actual items. They determine whether an item does not exist in a set or if an item might exist in a set. They can’t tell if an item is definitely present in a set. An empty Bloom filter is a bit vector with all bits set to zero. In the graphic below, each cell represents a bit. The number below the bit is its index in a 10-bit vector.

Consistent hashing maps data to physical nodes and ensures that only a small set of keys move when servers are added or removed. Consistent hashing stores the data managed by a distributed system in a ring. Each node in the ring is assigned a range of data. This concept is important within distributed systems and works closely with data partitioning and data replication. Consistent hashing also comes up in system design interviews.

Learn more about consistent hashing .

A quorum is the minimum number of servers on which a distributed operation needs to be performed successfully before declaring the operation’s overall success.

When moving data between components in a distributed system, it’s possible that the data fetched from a node may arrive corrupted. This corruption occurs because of faults in storage devices, networks, software, etc. When a system is storing data, it computes a checksum of the data and stores the checksum with the data. When a client retrieves data, it verifies that the data received from the server matches the stored checksum.

Learn more about Checksum .

A Merkle tree is a binary tree of hashes , in which each internal node is the hash of its two children, and each leaf node is a hash of a portion of the original data. Replicas can contain a lot of data. Splitting up the entire range to calculate checksums for comparison is not very feasible, because there’s so much data to be transferred. Merkle trees enable us to easily compare replicas of a range.

Learn more about Merkle trees .

Leader election is the process of designating a single process as the organizer of tasks distributed across several computers. It’s an algorithm that enables each node throughout the network to recognize a particular node as the task leader. Network nodes communicate with each other to determine which of them will be the leader. Leader election improves efficiency, simplifies architectures, and reduces operations.

Learn more about leader election .

Relational databases

Relational databases, or SQL databases , are structured . They have predefined schemas , just like phone books that store numbers and addresses. SQL databases store data in rows and columns. Each row contains all of the information available about a single entity, and each column holds all of the separate data points. Popular SQL databases include:

  • MS SQL Server

MySQL is an open-source relational database management system (RDBMS) that stores data in tables and rows. It uses SQL (structured query language) to transfer and access data, and it uses SQL joins to simplify querying and correlation. It follows client-server architecture and supports multithreading .

PostgreSQL, also known as Postgres, is an open-source RDBMS that emphasizes extensibility and SQL compliance. Postgres employs SQL to access and manipulate the database. It uses its own version of SQL called PL/pgSQL, which can perform more complex queries than SQL. Postgres transactions follow the ACID principle. Because it has a relational structure, the whole schema needs to be designed and configured at the time of creation. Postgres databases use foreign keys, which allow us to keep our data normalized.

SQL joins allow us to access information from two or more tables at once . They also keep our databases normalized, which ensures that data redundancy is low. When data redundancy is low, we can decrease the amount of data anomalies in our application when we delete or update records.

Non-relational databases

Non-relational databases, or no-SQL databases , are unstructured . They have a dynamic schema , like file folders that store information from someone’s address and number to their Facebook likes and online shopping preferences. There are different types of NoSQL. The most common types include:

  • Key-value stores, such as Redis and DynamoDB
  • Document databases, such as MongoDB and CouchDB
  • Wide-column databases, such as Cassandra and HBase
  • Graph databases, such as Neo4J and InfiniteGraph

MongoDB is a NoSQL, non-relational database management system (DBMS) that uses documents instead of tables or rows for data storage. This data model makes it possible to manipulate related data in a single database operation. MongoDB documents use JSON-like documents and files that are JavaScript supported. The document fields can vary, making it easy to change the structure over time.

Databases are a basic foundation of software development. They serve many different purposes for building projects of all sizes and types. When choosing your database structure, it’s important to factor in speed, reliability, and accuracy . We have relational databases that can guarantee data validity, and we have non-relational databases that can guarantee eventual consistency. When choosing your database structure, it’s important to factor in database fundamentals, such as:

  • Normalization
  • Persistence

Database decisions are an important part of system design interviews , so it’s important to get comfortable with making decisions based on unique use cases. The database you choose will depend upon your project. To learn more about how to choose the right database for your project, we recommend the following resources:

  • MongoDB vs PostgreSQL
  • MongoDB vs MySQL
  • SQL vs. NoSQL

Database schemas are abstract designs that represent the storage of the data in a database . They describe the organization of data and the relationships between tables in a given database. You plan database schemas in advance so you know what components are necessary and how they’ll connect to each other. A database schema doesn’t hold data but instead describes the shape of the data and how it relates to other tables or models. An entry in a database is an instance of a database schema.

There are two main database schema types that define different parts of the schema: logical and physical .

Database schemas include:

  • All important or relevant data
  • Consistent formatting for all data entries
  • Unique keys for all entries and database objects
  • Each column in a table has a name and a data type

The size and complexity of a database schema depend on the size of the project. The visual style of database schemas allows you to properly structure your database and its relationships before jumping into the code. The process of planning a database design is called data modeling . Database schemas are important for designing DBMS and RDBMS.

A database query is a request to access data from a database to manipulate or retrieve it . It’s most closely associated with CRUD operations . Database queries allow us to perform logic with the information we get in response to the query. There are many different approaches to queries, from using query strings to writing with a query language, to using a QBE (Query by Example) like GraphQL.

To maintain the integrity of a database , all transactions must obey ACID properties . ACID is an acronym that stands for atomicity, consistency, isolation, and durability.

  • Atomicity : A transaction is an atomic unit. All of the instructions within a transaction will successfully execute, or none of them will execute.
  • Consistency : A database is initially in a consistent state, and it should remain consistent after every transaction.
  • Isolation : If multiple transactions are running concurrently, they shouldn’t be affected by each other, meaning that the result should be the same as the result obtained if the transactions were running sequentially.
  • Durability : Changes that have been committed to the database should remain, even in the event of a software or system failure.

When sharding a database , you make partitions of data so that the data is divided into various smaller, distinct chunks called shards. Each shard could be a table, a Postgres schema, or a different physical database held on a separate database server instance. Some data within the database remains present in all shards, while some only appear in single shards. These two situations can be referred to as vertical sharding and horizontal sharding. Let’s take a look at a visual:

To shard your data, you need to determine a sharding key to partition your data. The sharding key can either be an indexed field or indexed compound fields that exist in every document in the collection. There’s no general rule for determining your sharding key. It all depends on your application.

Sharding allows your application to make fewer queries. When it receives a request, the application knows where to route the request. This means that it has to look through less data rather than going through the entire database. Sharding improves your application’s overall performance and scalability.

Data partitioning is a technique that breaks up a big database into smaller parts. This process allows us to split our database across multiple machines to improve our application’s performance, availability, load balancing, and manageability.

Database indexing allows you to make it faster and easier to search through your tables and find the rows or columns that you want. Indexes can be created using one or more columns of a database table, providing the basis for both rapid random lookups and efficient access of ordered information. While indexes dramatically speed up data retrieval, they typically slow down data insertion and updates because of their size.

Learn more about databases for system design in Grokking Modern System Design for Engineers and Managers .

Distributed systems make it easier for us to scale our applications at exponential rates . Many top tech companies use complex distributed systems to handle billions of requests and perform updates without downtime. A distributed system is a collection of computers that work together to form a single computer for the end user. All of the computers in the collection share the same state and operate concurrently. These machines can also fail independently without affecting the entire system.

Distributed systems can be difficult to deploy and maintain, but they provide many benefits, including:

  • Scaling : Distributed systems allow you to scale horizontally to account for more traffic.
  • Modular growth : There’s almost no cap on how much you can scale.
  • Fault tolerance : Distributed systems are more fault-tolerant than single machines.
  • Cost-effective : The initial cost is higher than traditional systems, but because of their capacity to scale, they quickly become more cost-effective.
  • Low latency : You can have a node in multiple locations, so traffic will hit the closest node.
  • Efficiency : Distributed systems break complex data into smaller pieces.
  • Parallelism : Distributed systems can be designed for parallelism, where multiple processors divide up a complex problem into smaller chunks.

A distributed system can encounter several types of failures. Four basic types of failures include:

System failure

System failures occur because of software or hardware failures. System failures usually result in the loss of the contents of the primary memory, but the secondary memory remains safe. Whenever there’s a system failure, the processor fails to perform the execution, and the system may reboot or freeze.

Communication medium failure

Communication medium failures occur as a result of communication link failures or the shifting of nodes.

Secondary storage failure

A secondary storage failure occurs when the information on the secondary storage device is inaccessible. It can be the result of many different things, including node crashing, dirt on the medium, and parity errors.

Method failure

Method failures usually halt the distributed system and make it unable to perform any executions at all. A system may enter a deadlock state or do protection violations during method failures.

Distributed system fundamentals

In this section, we’ll cover some fundamental concepts within the field of distributed systems.

For a more comprehensive list, we recommend the following resource: Distributed Systems for Practitioners . This course establishes the basic, fundamental principles of distributed systems, and it provides many additional resources for those who want to invest more time in gaining a deeper understanding.

MapReduce is a framework developed by Google to handle large amounts of data in an efficient manner. MapReduce uses numerous servers for data management and distribution. The framework provides abstractions to underlying processes happening during the execution of user commands. A few of these processes include fault tolerance, partitioning data, and aggregating data. The abstractions allow the user to focus on the higher-level logic of their programs while trusting the framework to smoothly continue underlying processes.

The MapReduce workflow is as follows:

Partitioning : The data is usually in the form of a big chunk. It’s necessary to begin by partitioning the data into smaller, more manageable pieces that can be efficiently handled by the map workers.

Map : Map workers receive the data in the form of a key-value pair. This data is processed by the map workers, according to the user-defined map function, to generate intermediate key-value pairs.

Intermediate files : The data is partitioned into R partitions (with R being the number of reduce workers). These files are buffered in the memory until the primary node forwards them to the reduce workers.

Reduce : As soon as the reduce workers get the data stored in the buffer, they sort it accordingly and group data with the same keys.

Aggregate : The primary node is notified when the reduce workers are done with their tasks. In the end, the sorted data is aggregated together and R output files are generated for the user.

Learn more about MapReduce .

Stateless and stateful systems are important concepts in the world of distributed systems. A system is either stateless or stateful. A stateless system maintains no state of past events . It executes based on the inputs we provide to it. Stateful systems are responsible for maintaining and mutating a state . To learn more about stateless vs. stateful systems and the advantages of stateless systems, check out the following resource: Distributed Systems for Practitioners .

Raft establishes the concept of a replicated state machine and the associated replicated log of commands as first-class citizens and supports multiple consecutive rounds of consensus by default. It requires a set of nodes that form a consensus group, or a Raft cluster. Each of these can be in one of these three states:

Learn more about Raft nodes and the implementation of Raft .

Distributed system design patterns

Design patterns give us ways to build systems that fit particular use cases. They are like building blocks that allow us to pull from existing knowledge rather than start every system from scratch. They also create a set of standard models for system design that help other developers see how their projects can interface with a given system.

Creational design patterns provide a baseline when building new objects. Structural patterns define the overall structure of a solution. Behavioral patterns describe objects and how they communicate with each other. Distributed system design patterns outline a software architecture for how different nodes communicate with each other, which nodes handle particular tasks, and what the process flows should look like for various tasks.

Most distributed system design patterns fall into one of three categories based on the functionality they work with:

Object communication : Describes the messaging protocols and permissions for different components of the system to communicate

Security : Handles confidentiality, integrity, and availability concerns to ensure the system is secure from unauthorized access

Event-driven : Describes the production, detection, consumption, and response to system events

Learn the top 5 distributed system design patterns .

Scalable web applications

DNS, or domain name system , averts the need to remember long IP addresses to visit websites by mapping simple domain names to IP addresses . You can set up DNS load balancing for large-scale applications and systems that need to spread user traffic across different clusters in different data centers.

Load balancing is very important to our scaling efforts. It allows us to scale effectively with increases in traffic and stay highly available . Load balancing is executed by load balancers , which are devices that act as reverse proxies. They’re responsible for distributing network traffic across multiple servers using different algorithms. The distribution of traffic helps avert the risks of all the traffic converging to a single machine or just a couple of machines in the cluster. If the traffic converges to only a couple of machines, this will overload them and bring them down.

Load balancing helps us avoid these problems. If a server goes down while the application is processing a user request, the load balancer automatically routes future requests to servers that are functioning.

Learn more about load balancing .

N-tier applications, or distributed applications , are applications that have more than three components involved . Those components can be:

  • Load balancers
  • Search servers
  • Components involved in processing large amounts of data
  • Components running heterogeneous tech, commonly known as web services

Large applications, such as Instagram, Facebook, and Uber, are n-tier applications.

Learn more about tiered applications .

HTTP stands for HyperText Transfer Protocol. This protocol dictates the format of messages, how and when messages are sent, appropriate responses, and how messages are interpreted . HTTP messages can be either requests or responses . HTTP APIs expose endpoints as API gateways for HTTP requests to have access to servers. They come in various forms based on their target use cases, and they can be further categorized by the architectural design principles used when they’re created.

REST stands for Representational State Transfer. It’s a software architectural style for implementing web services. REST is a ruleset that defines best practices for sharing data between clients and servers , and it emphasizes the scalability of components and the simplicity of interfaces. REST applications use HTTP methods, such as GET , POST , DELETE , and PUT .

REST APIs are API implementations that adhere to REST architectural principles. They act as interfaces where the communication between clients and servers happens over HTTP . REST APIs take advantage of HTTP methodologies to establish communication between clients and servers. REST also enables servers to cache responses that improve application performance.

HTTP and REST are important concepts and considerations for client-server communication in system design.

Learn more about HTTP and REST .

Stream processing refers to a computer programming architecture that focuses on the real-time processing of continuous streams of data . Popular stream processing tools include Kafka, Storm , and Flink.

Learn more about stream processing .

A cache is hardware or software that you use to temporarily store data so it can be accessed quickly . Caches are typically very small, which makes them cost-effective and efficient. They’re used by cache clients, such as web browsers, CPUs, operating systems, and DNS servers. Accessing data from a cache is a lot faster than accessing it from the main memory or any other type of storage.

What is caching? How does it work?

Let’s say that a client wants to access some data. First, the client can check if the data is stored in the cache. If they find the data, it will immediately be returned to the client. This is called a cache hit . If the data isn’t stored in the cache, a cache miss occurs. When this happens, the client obtains data from the main memory and stores it in the cache.

There are different types of caching strategies :

Cache invalidation is a process where a computer system declares cache entries as “invalid” and either removes or replaces them. The basic objective of this process is to ensure that when the client requests the affected content, the latest version is returned. There are three defined cache invalidation schemes:

Write-through cache

Write-around cache

Write-back cache

Learn more about cache invalidation .

If a cache has space, data will be easily inserted. If a cache is full, some data will be evicted. What gets evicted, and why, depends on the eviction policy used. Some commonly used cache eviction policies include:

First in first out (FIFO) : The cache evicts the first block accessed first without any regard to how often or how many times it was accessed before.

Last in first out (LIFO) : The cache evicts the block accessed most recently first without any regard to how often or how many times it was accessed before.

Least recently used (LRU) : The cache evicts the least recently used items first.

Most recently used (MRU) : The cache evicts the most recently used items first.

Least frequently used (LFU) : The cache counts how often an item is needed. The items that are used least frequently are evicted first.

Random replacement (RR) : The cache randomly selects a candidate and evicts it.

Learn more about cache eviction .

Machine learning (ML) applications and systems are increasing in popularity and are becoming more widely used throughout various industries. As these ML applications and systems continue to mature and expand, we need to begin thinking more deeply about how we design and build them. Machine learning system design is the process of defining the software architecture, algorithms, infrastructure, and data for machine learning systems to satisfy specific requirements.

If you want to be a machine learning engineer, you’ll be expected to have solid engineering foundations and hands-on ML experiences. ML interviews share similar components to traditional coding interviews. You’ll go through a similar method of problem-solving to answer questions about system design, machine learning, and machine learning system design.

The standard development cycle of machine learning includes data collection, problem, formulation, model creation, implementation of models, and enhancement of models. There are no common, standardized guidelines for approaching machine learning system design from end to end. However, we have a resource to help you approach ML system design with a top-down approach: Machine Learning System Design .

Containerization is the packaging of software code with its dependencies to create a “container” that can run on any infrastructure. We can think of containers as more lightweight versions of virtual machines (VMs) that don’t need their own operating system. All containers on a host share that host’s operating system, which frees up a lot of system resources. Containerization wasn’t very accessible until Docker came along. Docker is an open-source containerization platform that we can use to build and run containers. Docker containers create an abstraction layer at the application layer.

Docker often gets confused with Kubernetes, which is another popular containerization tool. The two technologies complement each other and are frequently used together. While Docker is a containerization platform, Kubernetes is a containerization software that allows us to control and manage containers and VMs. With Kubernetes, you can run Docker containers and manage your containerized applications. Containers are grouped into pods, and those pods can be scaled and managed however you want. To dive deeper into these two technologies, we recommend this resource: Docker vs Kubernetes .

Similar to ML technologies, containerization technologies are also growing in popularity and are becoming more widespread across various industries. Because of this, the design and implementation of containerization systems are also gaining ground.

Here are a few containerization resources to help you further your learning:

  • Docker for Developers
  • DevOps for Developers
  • Quick Start Kubernetes

The Cloud and System Design

Cloud computing allows access to services like storage or development platforms on-demand via internet-connected offsite data centers . Data centers are managed by third-party companies, or cloud providers . The cloud computing model not only addresses the problems that occur with on-premises systems, but also is more cost-effective, scalable, and convenient.

Different cloud providers offer different cloud services, such as storage, security, access management, and more. Cloud services give you the tools to be able to design and implement flexible and efficient systems. Cloud services vary in size and complexity, and there are various cloud deployment models that you can leverage. Different cloud system architectures include:

  • Multi-cloud
  • Hybrid cloud
  • Single cloud
  • Public cloud
  • Private cloud

Cloud computing continues to grow in popularity. It can play a major role in system design and architecture . It’s important to know about these services and models when designing a system.

Here’s are a few cloud resources to help further your learning:

  • Cloud Architecture: A Guide to Design & Architect your Cloud
  • Cloud Computing 101: Master the Fundamentals
  • Scalability & System Design for Developers

Continue learning about System Design

Grokking Modern System Design for Engineers & Managers

The complete guide to the System Design Interview

How to prepare for the System Design Interview

Haven’t found what you were looking for? Contact Us

How many months does it take to learn system design?

It is advised that you should dedicate 1–3 months to consistent study and practice. Aim at understanding various system architectures and engaging with increasingly intricate design challenges.

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.

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

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 […]

5 Ways to Apply Systems Thinking to Your Business Operations: A Strategic Guide

5 Ways to Apply Systems Thinking to Your Business Operations: A Strategic Guide

In today’s fast-paced business world, success depends on the ability to stay agile, resilient, and relevant. This is where systems thinking, an […]

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 […]

Systems Thinking vs. Linear Thinking

Systems Thinking vs. Linear Thinking: Understanding the Key Differences

Systems Thinking and Linear Thinking are two approaches to problem-solving and decision-making that can significantly impact the effectiveness of a given solution. […]

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

Agile vs. Traditional Project Management

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.

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

A Practical Guide to Problem-Solving Techniques in Systems Engineering

A Practical Guide to Problem-Solving Techniques in Systems Engineering

In the world of systems engineering, identifying and addressing issues is a significant part of the job. To ensure the smooth operation of complex systems, engineers employ various practical problem-solving techniques. Problem-solving techniques are not limited to solving issues specific to any one system, but can also be applied when generating new product ideas and solutions.

We'll start by exploring some common analytical and systematic problem-solving techniques, including thought experiments, the 5 Whys, and root cause analysis, before looking at some more creative techniques.

Analytical and Systematic Problem-Solving Techniques

Thought experiments.

A thought experiment is a disciplined imagination process that engineers use to ponder a problem or system without conducting physical experiments. By using hypothetical scenarios, engineers can predict potential challenges and find solutions without the cost and time of real-world testing.

For instance, consider the design of an urban traffic control system. Engineers can create a thought experiment about how the system would handle an emergency, such as a major traffic accident during rush hour. This mental exercise could help identify potential bottlenecks or gaps in the system, allowing engineers to design more effective controls or contingency plans.

The 5 Whys technique, originally developed by Toyota, is a simple yet effective method to drill down to the root of a problem. By repeatedly asking "why?" in response to the previous answer, engineers can uncover the underlying cause behind an issue.

Imagine a server crash in a data centre. The 5 Whys process might look like this:

  • Why did the server crash? Because it overheated.
  • Why did it overheat? Because the cooling system failed.
  • Why did the cooling system fail? Because the coolant was not circulating.
  • Why was the coolant not circulating? Because the pump was broken.
  • Why was the pump broken? Because it was not maintained as per the recommended schedule.

Through this process, we learn that the root cause of the server crash was inadequate maintenance, not merely a random hardware failure.

Root Cause Analysis (RCA)

Root cause analysis (RCA) is a systematic process for identifying the underlying causes of faults or problems. RCA aims to prevent the same problems from recurring by eliminating the root cause rather than treating the symptoms.

For example, suppose a manufacturing assembly line is regularly shutting down due to equipment failure. Rather than just fixing or replacing the equipment each time, an RCA might uncover that a specific part is consistently under high stress due to improper alignment, causing it to fail. By correcting this alignment, the systems engineer can prevent the problem from recurring.

Fault Tree Analysis (FTA)

Fault Tree Analysis (FTA) is a top-down, deductive analysis method used to explore the many different causes of a specific failure or undesirable outcome. It graphically represents the logical relationships between subsystem failures, potential human errors, and external events in the form of a tree.

Suppose a software system suffers from frequent downtime. The FTA would start with the undesired event at the top (downtime), and then branch out into various potential causes such as software bugs, hardware failure, network issues, and so on. Each of these branches can then be subdivided further into more specific faults, allowing the engineer to understand all potential causes of the problem and prioritise the most likely or serious ones for remediation.

Simulation Modelling

Simulation modelling is a powerful tool that allows systems engineers to predict the behaviour of a system under different conditions. By creating a digital twin of a real-world system, engineers can understand the system's response to changes in variables, identify potential issues, and test solutions.

For instance, in a complex logistics operation, a simulation model can be used to understand the impact of adding a new product line or increasing order volume. This could reveal potential bottlenecks or inefficiencies, allowing proactive adjustments to be made before they become real-world problems.

Creative Problem-Solving Techniques

Beyond the analytical and systematic problem-solving techniques traditionally used in engineering, there are numerous creative methods that can be applied. These techniques stimulate lateral thinking, enabling you to view problems from a fresh perspective and identify innovative solutions. Here are a few examples:

Brainstorming

Brainstorming is perhaps one of the most commonly used creative problem-solving techniques. It involves gathering a group of people and encouraging them to freely share their thoughts and ideas related to a specific problem. The key is to refrain from any judgment or criticism during the brainstorming process to encourage free thought and out-of-the-box ideas.

SCAMPER is a creative-thinking technique that uses seven types of transformations: Substitute, Combine, Adapt, Modify, Put to another use, Eliminate, and Reverse. By examining a problem through these different lenses, you can generate novel solutions. For example, if you're trying to enhance the efficiency of a manufacturing process, you might "Adapt" a method from a completely different industry or "Combine" two existing processes into one.

Mind Mapping

Mind Mapping is a visual tool that helps structure information, enabling you to better analyse, comprehend, and generate new ideas. Starting with a central concept, you add nodes branching out into related subtopics. This can reveal unexpected connections and encourage creative problem-solving.

Six Thinking Hats

This technique, devised by Edward de Bono, involves viewing a problem from six distinct perspectives, symbolised by hats of different colours. The white hat considers facts and information, the red hat looks at the issue emotionally, the black hat uses caution and considers risks, the yellow hat optimistically thinks about benefits, the green hat encourages creativity, and the blue hat manages the process and oversees the big picture.

Analogy Thinking

Analogy thinking, or analogous thinking, is a method of comparing the problem at hand to other similar situations or phenomena. By drawing parallels, you might find creative solutions that you would not have considered otherwise. For example, an engineer might draw inspiration from the natural world, such as how a bird flies or a tree distributes nutrients, to solve a complex mechanical or systems problem.

In conclusion, problem-solving in systems engineering represents a harmonious blend of art and science. It's not about completely discarding systematic, logical techniques, but instead complementing them with creative strategies. This combination of traditional and creative methods equips systems engineers with the tools to predict, identify, and address issues effectively and efficiently. By fostering a balance between analytical and innovative thinking, fresh insights can be gained and novel solutions developed. This fusion is often where the most impactful solutions are found. As these techniques are regularly practiced and mastered, they can lead to smoother operations, reduced downtime, and ultimately more successful projects. The artistry lies in the creativity, and the science in the application and understanding of these tools, culminating in an exciting, evolving, and rewarding field.

This content was generated using OpenAI's GPT Large Language Model (with some human curation!). Check out the post "Explain it like I'm 5: What is ChatGPT?" to learn more.

The Power of Active Inference in Systems Engineering

Applications of the pyramid principle in systems engineering, you might also like..., stock and flow modelling, the art of debugging, the importance of model testing and types.

Patching System Leaks

Patching System Leaks

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.

Accelerated research about generative AI

Disciplined entrepreneurship: 6 questions for startup success

Startup tactics: How and when to hire technical talent

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

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

Systems Thinking

What is systems thinking.

Systems thinking is an approach that designers use to analyze problems in an appropriate context. By looking beyond apparent problems to consider a system as a whole, designers can expose root causes and avoid merely treating symptoms. They can then tackle deeper problems and be more likely to find effective solutions. 

“You have to look at everything as a system and you have to make sure you're getting at the underlying root causes.”

— Don Norman, “Grand Old Man of User Experience” 

See why systems thinking helps prevent wasted time and resources on the wrong problem.

  • Transcript loading…

Everything is a System: Think of Each as One

Systems surround us, including within our own bodies, and they’re often highly complex. For example, that’s why doctors must know patients’ medical histories before prescribing them medicines. However, our brains are hardwired to find simple, direct causes of problems from the effects we see. We typically isolate issues we notice by considering how to combat their symptoms, since we’re more comfortable with “If X, then Y” cause-and-effect relationships. Cognitive science and usability engineering expert Don Norman identifies the need for designers to push far beyond this tendency if they want to address serious global-level problems effectively. That’s why systems thinking is not only an essential ingredient of 21st century design but also a principle of human-centered design .

The concept of systems thinking emerged in 1956, when Professor Jay W. Forrester of MIT’s Sloan School of Management created the Systems Dynamic Group. Its purpose was to predict system behavior graphically, including through the behavior over time graph and causal loop diagram. For designers, systems thinking is therefore vital to tackling larger global evils such as hunger, poor sanitation and environmental abuse. Norman calls such problems complex socio-technical systems , which, like wicked problems , are:

●      Difficult to define.

●      Complex systems.

●      Difficult to know how to approach.

●      Difficult to know whether a solution has worked.

The danger of not using a systems thinking approach is that we might oversimplify a situation, take problems out of context, treat symptoms and end up making matters even worse. Norman considers electric vehicles an example of an apparently good solution (to pollution) that can obscure what should be the real focus. If the fuel source that generates their electricity comes from coal, etc., it defeats the purpose and, worse, could cause even more world-damaging pollution, especially if so much electricity perishes between the generating source and the consumers’ power supply.  

Systems thinking is the third principle of Human-Centered Design. The other principles are Peopl-Centered, Solve the Right Problem, and Small & Simple Interventions.

© Daniel Skrok and Interaction Design Foundation, CC BY-SA 3.0

How to Use Systems Thinking in Design

Systems thinking is also the third principle of humanity-centered design ; therefore, integrate it within this approach:

●      Be people-centered. Spend a long time living among the people you want to help, to understand the true nature of their problems, their viewpoints and solutions they’ve tried. For example, a village’s crops might be failing even though the water source seems adequate.

●      Solve the right problem . Closely examine the factors driving the people’s problems. Try the 5 Whys approach. E.g., the soil is damp enough, so might it be exhausted of nutrients? Or does it contain toxins? Why? Sewage? If not, what then?

●      Consider everything as a system . Now, leverage systems thinking to untangle as many parts of the problem(s) as possible. Complex socio-technical systems such as (potential) famine demand hard investigation and working alongside others: principally, the community concerned; so:

Keep consulting the community leaders for their insights into the problems you uncover.

Evaluate the feedback loops . E.g., the collected clean water from a small stream and secondary well should be enough to irrigate the village’s few fields. The people seem to be doing things correctly: using pipes and a small ditch they’ve diverted from the stream and enclosed using plastic sheets strung over metal frames. The soil is adequately fertilized; the farmers water after dusk (operating taps and a sluice from the tunnel). Still, the problem persists.

Dig past the apparent problems to root causes. E.g., thinking of the village’s irrigation system as a system, you notice it’s not the amount of water or soil quality . The water is slightly too hot — due to the dark-colored plastic pipes and the black plastic sheeting of the improvised tunnel — for the crops to handle.

●      Proceed towards a viable solution using incrementalism :

Wait for the opportunity to do a small test of the small-scale solution you’ve co-created with the community. E.g., fortunately, here, a good solution involves just lightening the color of the irrigation system to reflect sunlight. The village has enough white paint for the pipes, and you collect white sheeting and tarpaulins to cover the stream tunnel.

If it’s successful, evaluate how successful; then adapt and modify it or repeat it several times until you fine-tune a sustainable solution. E.g., fortunately, you just need to find more light-colored tarpaulins.

Overall, systems thinking is about reframing a problem to expose its addressable underlying causes. Thinking broadly, you can deduce real problems and stop to consider potential solutions with (e.g.) design thinking . That’s how community-driven projects — and people-centered design — arrive at inventive, economical and culturally acceptable best-possible solutions.

At Ta Prohm's ancient temple ruins, the stone structures are covered in thick foliage. In this image, a large tree's roots cover an entire temple.

Learn More about Systems Thinking

Use the 5 Whys method to help you find the root causes. Take our 21st Century Design course with Don Norman if you want to dig deeper and help solve some of the world’s most complex problems. You can of course also use the insights to design “normal” products and services.

If you want to know more about how you can apply system thinking and many other humanity-centered design tools to help solve the world’s biggest problems you can take our course Design for a Better World with Don Norman .

Here’s an article on why we need to see our work through a systems thinking lens .

Here’s another designer’s insight-rich piece about what systems thinking means and how it’s related to design thinking .

Literature on Systems Thinking

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

Learn more about Systems Thinking

Take a deep dive into Systems Thinking with our course Design for the 21st Century with Don Norman .

In this course, taught by your instructor, Don Norman, you’ll learn how designers can improve the world , how you can apply human-centered design to solve complex global challenges , and what 21st century skills you’ll need to make a difference in the world . Each lesson will build upon another to expand your knowledge of human-centered design and provide you with practical skills to make a difference in the world.

“The challenge is to use the principles of human-centered design to produce positive results, products that enhance lives and add to our pleasure and enjoyment. The goal is to produce a great product, one that is successful, and that customers love. It can be done.” — Don Norman

All open-source articles on Systems Thinking

What are wicked problems and how might we solve them.

problem solving and system design

Which Skills Does a 21st Century Designer Need to Possess?

problem solving and system design

  • 2 years ago

Human-Centered Design: How to Focus on People When You Solve Complex Global Challenges

problem solving and system design

System Usability Scale for Data-Driven UX

problem solving and system design

Open Access—Link to us!

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

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

Privacy Settings

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

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

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

Enhanced Functionality

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

Referral Program

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

Error Reporting

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

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

Analytics Storage

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

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

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

Advertising Storage

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

Personalization Storage

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

Advertising Personalization

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

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

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

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

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

LinkedIn Insights

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

LinkedIn CAPI

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

Google Ads Tag

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

Share the knowledge!

Share this content on:

or copy link

Cite according to academic standards

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

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

The Basics of User Experience Design

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

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

7 System Design Interview Questions Every Software Engineer Should Know

HackerRank AI Promotion

System design interviews have been a critical component of technical hiring for decades. If you’re a software engineer on the job market, the ability to demonstrate your skills in a design interview is critical to landing your next role. 

The key to succeeding in these interviews is preparing for the styles of problems you might encounter. In this post, we’ll break down seven different system design interview questions you need to know to land the next job of your dreams.

What a System Design Interview Looks Like

A system design interview is a type of interview that challenges candidates to design a back-end system, often on a physical or virtual whiteboard. Candidates are asked to verbally explain their solution and thought process as they develop their answer.

System design questions grant candidates a look into an organization’s tech stack and operations and give hiring managers an understanding of the candidate’s approach to problem solving. These interviews should ideally proceed like discussions, with the candidate thinking aloud about scalability, storage, reliability, and other aspects of the system. System design interviews are more commonly found in hiring processes for senior-level roles, though developers of other experience levels may encounter this type of interview, as well.

System design interviews are considered one of the more difficult types of interviews. They require a fundamental understanding of systems and advanced preparation to succeed. By their nature, system design questions are broad, open-ended questions with a variety of possible answers.

7 System Design Questions

There are a number of different types of system design questions hiring managers can use to help showcase a developer’s skills and potential. The difficulty and composition of these tests usually varies based on the experience-level of the role. 

While answering this style of question, the main goal of a software engineer should be to demonstrate the ability to design and build integrated and scalable systems.

The following is a list of the types of system design questions an engineer might encounter during a design interview.

Design a Flash Sale System (eCommerce)

Your company has launched a hot new product. The marketing team has recommended promoting it through flash sales. The features of a flash product sale are as follows:

  • The sale starts at a particular time.
  • The requests to purchase the product may be greater than the stock count for the product.
  • Each user can purchase only one unit of the product.
  • There is no “Add to Cart” functionality.
  • Each order should be placed on a first-come-first-serve basis, and the product should go out of stock the moment the entire stock of the product is exhausted.

Using diagramming tools, design a system that implements these features in a robust, scalable way.

Components to consider:

  • As soon as the user clicks the add to cart button, trigger an API call and show a loader until the API returns a response.
  • If the request count is greater than the stock available, return an error instantly with a ‘no stock’ error.
  • Otherwise, just return a response with success, the order id, and in the background, keep processing the queue .  
  • If there is an error, show the appropriate error and remove the product from the list.
  • If successful, show the success status.

Design a ride-sharing service

Design a ride-sharing service that enables users to request rides through an app. The system should account for workflows for both passengers and drivers.

  • Payment processing
  • Encryption and storage of payment methods
  • Push notifications and in-app messaging
  • Databases to manage user and driver data (SQL, MySQL)
  • Data privacy and encryption
  • GPS and mapping technology
  • User reviews and score aggregation
  • Data tracking to identify patterns and spikes in activity
  • Image hosting system

Design a simple social media application

Designing a social media application is a common system design question that tests the candidate’s ability to plan out the structure of a wide range of technologies. Databases, media hosting, and algorithms are just a few of the topics you’ll need to cover to successfully answer this question.

And, because social media companies are among the largest employers of software engineers, there’s a good chance you might find yourself facing this question during an interview.

  • Ranking algorithms
  • Databases to manage user data (SQL, MySQL)
  • Privacy controls
  • Engagement features (following, liking, commenting, sharing)
  • Hosting of user generated content (images, video, gifs)
  • Database schema

Design a video streaming service

Design a video streaming service that allows users to view and search videos. The service should also enable internal teams to upload content through the back end. The service needs to be highly scalable, supporting large numbers of users on the platform. The application should also be able to upload, store, edit, and transmit large data files.

  • Video and image hosting system
  • Privacy controls and age restrictions
  • Recording data about video performance
  • Ranking and recommendation algorithm
  • Push notifications and announcements
  • Video player functionality

Design a URL shortening service

Design a URL shortening service that returns a short and unique URL when a user enters a long URL. Applications such TinyURL and bit.ly are examples of this service. However, many other technology companies, such as YouTube , also have their own URL shortening services built into their functionalities.

  • Generating a unique and short URL
  • Scalability to handle thousands of requests
  • Functionality to redirect from the short link to the original
  • Support for custom URLs
  • Analytics and tracking of clicks
  • High availability and uptime

Design a file-storing and sharing service

Design a file hosting service that enables users to upload, store, edit, download, share, and delete files. The service should provide synchronization across various devices. Examples of this service include Dropbox and Google Drive.

  • ​File management functionality (upload, view, download)
  • Automatic synchronization between devices
  • ACID properties on database transactions
  • File sharing and permission tracking
  • Search functionality to locate files
  • Storage of large files

Design a search engine

A search engine is a software system that conducts web searches and delivers an organized list of results.  The algorithm should rank results based on a variety of factors, including: 

  • Accessibility
  • Trustworthiness
  • Website performance
  • Mobile-first design
  • User experience
  • Result ranking algorithm
  • Personalized search results
  • Voice, image, and video search
  • Machine learning and artificial intelligence
  • Recommendations for related and popular searches
  • Recording data on search volume and other statistics
  • Website crawling and indexing

System Design Interview Tips

One factor that can make system design interviews so difficult is that they involve explaining complex, technical concepts through verbal communication. To get around this, it’s helpful to use an answering method to structure your response. Here are a few tried-and-true methods to employ in your next system design interview.

Reference Examples and Experience

One way to ground the details of your answer is to frame the response around real-world experience. By sharing an example of a time you solved a similar problem, it adds detail and credibility to your answer. It also helps bolster your candidacy by demonstrating to the hiring manager that you’ve already performed the responsibilities of the position.

STAR Method

Situation, Task, Action, and Result is a great method that can be employed to answer a problem-solving or design interview question. Here’s a breakdown of these steps:

  • Situation : A good way to address almost any interview question is to lay out and define the situation and circumstances. 
  • Task : Define the problem or goal that needs to be addressed. System design questions are often multifaceted, so this step is particularly important when answering technical problem-solving questions.
  • Action : How would you go about solving the problem? How have you approached similar obstacles in the past? What technologies will you use? Try to be as specific as possible, and state your plan in steps if you can.
  • Result: Wrap it up by stating the outcome achieved. 

PREP Method

Traditionally used as a method to make effective presentations, the Point, Reason, Example, Point method can also be used to answer design questions.  

  • Point: State the solution in plain terms. 
  • Reasons: Follow up the solution by detailing your case — and include any data or insights that support your solution. 
  • Example: In addition to objective data and insights, drive your answer home by contextualizing the solution in a real-world example.
  • Point: Reiterate the solution to make it come full circle.

Resources to Prepare for Coding Interviews

HackerRank for Developers

Free Developer Skills Platform

HackerRank’s Technical Recruiting Learning Series

Tech with Tim

Get started with HackerRank

Over 2,500 companies and 40% of developers worldwide use HackerRank to hire tech talent and sharpen their skills.

Recommended topics

  • Coding Questions
  • Interview Preparation
  • System Design
  • Technical Interviews

Abstract, futuristic image generated by AI

6 REST API Interview Questions Every Developer Should Know

Designorate

Designorate

Design thinking, innovation, user experience and healthcare design

The Six Systems Thinking Steps to Solve Complex Problems

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

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

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

Concepts of Systems Thinking

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

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

Systems Thinking in Six Steps

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

Set 1: Tell the Story

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

Wait, Join my Newsletters!

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

concept maps

Step 2: Draw Behavior Over Time (BOT) Graphs

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

behavior over time

Step 3: Create a Focusing Statement

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

Step 4: Identify the Structure

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

Step 5: Going Deeper into the Issues

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

Set 6: Plan an Intervention

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

concept maps

Practice Example of Systems Thinking

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

systems thinking

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

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

Dr Rafiq Elmansy

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

problem solving and system design

You May Also Like

design thinking in education

Can We Apply Design Thinking in Education?

problem solving and system design

Starbursting Technique: Evaluating New Ideas

critical thinking

Critical Thinking as a Catalyst of Change in Design

problem solving and system design

The Double Diamond Design Thinking Process and How to Use it

design process

The Role of Storytelling in the Design Process

journey map

7 Steps to Create a Successful Journey Map

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

problem solving and system design

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

problem solving and system design

Thank you so much Misi for the helpful information.

problem solving and system design

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

Leave a Reply Cancel reply

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

Sign me up for the newsletter!

  • 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

MIT

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

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

Accessibility

MIT

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

Sang-Gook Kim

Download the Course Schedule

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

THIS COURSE MAY BE TAKEN INDIVIDUALLY OR AS PART OF THE  PROFESSIONAL CERTIFICATE PROGRAM IN INNOVATION & TECHNOLOGY  OR THE  PROFESSIONAL CERTIFICATE PROGRAM IN DESIGN & MANUFACTURING .

problem solving and system design

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

Certificate of Completion from MIT Professional Education  

Solving Complex Problems cert image

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

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

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

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

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

Computer Requirements

A laptop with PowerPoint is required.

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

  • System Design Tutorial
  • What is System Design
  • System Design Life Cycle
  • High Level Design HLD
  • Low Level Design LLD
  • Design Patterns
  • UML Diagrams
  • System Design Interview Guide
  • Crack System Design Round
  • System Design Bootcamp
  • System Design Interview Questions
  • Microservices
  • Scalability
  • Advantages of System Design
  • Designing Facebook Messenger | System Design Interview
  • Leader Election in System Design
  • Redis Cache
  • System Development Life Cycle
  • Why are Abstractions Important in System Design?
  • Failure Models in System Design
  • Design Notification Services | System Design
  • Causal Consistency Model in System Design
  • Strict consistency or Linearizability in System Design
  • Byzantine Failure in System Design
  • Architecture of a System
  • Strategies for Achieving High Availability in Distributed Systems
  • Design Patterns for High Availability
  • Cache Stampede or Dogpile Problem in System Design
  • Vertical Partitioning vs Horizontal Partitioning
  • Availability in System Design
  • Maintainability in System Design
  • Reliability in System Design

System Analysis | System Design

In the areas of science, information technology, and knowledge, the difficulty of systems is of much importance. As systems became more complicated, the traditional method of problem-solving became inefficient. System analysis is to examine a business problem, identify its objectives and requirements, and then design the most optimal solution to fulfill those needs.

system_analysis_150

Important Topics for System Analysis

System Analysis

  • System Design

What is a System?

Constraints of a system, properties of a system, elements of a system, types of systems, system models, categories of information.

It is the very first step in any system development and the critical phase where developers come together to understand the problem, needs, and objectives of the project.

Some of the key aspects of system analysis are:

  • Problem Identification: It involves identifying the issues that the system is aiming to address. Whether it is automating a business process, improving data management, or improving the user experience, understanding the problem is the first and most important step.
  • Requirements Gathering: Once the problem is identified, the next step is to gather and write down the requirements. This involves communicating with the customer and developer to gather information about how the system is to be designed.
  • Feasibility study: Before going into development, it is important to check the feasibility of the project. This includes the evaluation of technical, operational, and financial aspects to determine the feasibility of the proposed solution.
  • Analysis and modeling: To get a deep insight into the system, analysts develop various models, such as Data Flow Diagrams(DFD), Use Cases, and Entity-Relationship(ER) diagrams. These models help the customer to visualize the system and its interactions.
  • Scope Definition: Defining the scope of the system is important to prevent adding excessive features to the system and ensure that the project stays within its limits. It identifies what is part of the system and what is not.
Fraud Detection Systems: Studying transaction patterns and inconsistencies in financial data to develop algorithms for detecting and preventing fraudulent activities.

System-Analysis-(System-Analysis--System-Design)

System design is where the project’s blueprint is created. It involves transforming the requirements identified in the analysis phase into a visual solution. The main components of system design are as follows:

  • Architecture design: This phase describes the high level structure of the system. This includes deciding software and hardware components, their connectivity with each other and the overall design of the system. Architects make critical designs ensuring scalability, performance, and security.
  • Database configuration : The design phase includes defining the database schema, data storage, and access methods. A database programmer ensures that data is organized correctly, and that the system can retrieve and process data efficiently.
  • Communication system: Communication controls are important components of most systems. In this phase, designers create the system’s visual elements and interactions.
  • Algorithm Design: Complex algorithms are designed in this phase. Algorithms are the logic or program that makes systems work, and their efficiency and accuracy are critical.
  • Security: Data security is a major concern in today’s digital world. Developers must plan for security measures to protect the system and its data, such as encryption, access control, and threat measures.
  • Test and Maintenance: System plans should also include plans for testing and validation. The designer must specify how the system will be tested to ensure that it meets specified requirements and performs as planned.
  • Documentation : Suitable documentation is necessary to maintain the system and enable future use. During the design phase, documentation should be created or updated to ensure that the development team and end users can access the necessary information.

Educational Management System:

  • Components: Student database, course details, management module, grading system.
  • Modules: Enrollment, attendance tracking, assignment submission, grades.
  • Interfaces: Student portals, teacher interfaces, parents portal.

System-Analysis-(System-Analysis--System-Design)-2

A system is a set of things that work together as an interconnecting network to achieve a particular goal. The set of things can be hardware, software, employees and much more. Systems are everywhere around us such as computer systems which have both hardware and software to execute certain functions.

Example: Biological system, Educational system, Physical system, etc.

Every system works within certain boundaries called constraints. These constraints define the limits within which the system can operate. Typical constraints include financial constraints, technical constraints, and time constraints, which are important in guiding program development and operation.

Systems exhibit several key homes:

  • Interconnectedness: Components inside a device are interconnected, change in one system might cause change in the another system.
  • Environment: Systems exist within an surroundings, interacting with it and being influenced through it.
  • Boundary: Systems have a described boundary that separates them from the external environment. This is essential for studying how the system interact with external environment.
  • Purpose: Systems are designed with clear purpose and specific objectives. The components of a system are organized in such a way to perform intended tasks.
  • Input and Output: Systems need input which leads to give the desired output.
  • Feedback: Feedbacks are most important part of the system as it helps the developers to upgrade it with the user requirements.
  • Input: The data that the device gets from external source.
  • Process : The activities that occur within the system.
  • Output : The result after processing the input.
  • Feedback : It is given by the customers end to improve the system.

Element-of-a-System-(-System-Analysis--System-Design)

  • Open Systems: An open system is the one that interacts freely with the external factors. These systems are capable of adapting the changes made within the system. Example: business organizations.
  • Closed Systems : A closed system is one which is contained within itself. It does not have any interaction with the environment. Example: A computer system.
  • Adaptive Systems : Adaptive systems are those that change their behavior with the changing environment. Example: constantly changing market.
  • Dynamic Systems : Dynamic systems are those that change and evolve over a period of time. Example: ecological system change with factors like climate change.

System models are simplified representations of real-world systems that help us to understand, analyze, and design complex systems. These models are important tools used in various fields such as engineering, computer science, economics, and biology to study and predict behavior of the system. System models can be visual, mathematical or conceptual. They provide insights into program design, communication, and development. Here are a few types of system models commonly used: Mathematical, Simulation, Graphical, Physical, Conceptual.

In the context of system, records may be categorized as follows:

  • Operational Information : Information used to perform each day operations.
  • Management Information : Information utilized by managers for decision-making.
  • Strategic Information : Information related to long-term making plans and approach formula.

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.

Please Login to comment...

Similar reads.

  • 5 Reasons to Start Using Claude 3 Instead of ChatGPT
  • 6 Ways to Identify Who an Unknown Caller
  • 10 Best Lavender AI Alternatives and Competitors 2024
  • The 7 Best AI Tools for Programmers to Streamline Development in 2024
  • 30 OOPs Interview Questions and Answers (2024)

Improve your Coding Skills with Practice

 alt=

What kind of Experience do you want to share?

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

Clutch Crowns DOOR3 Game-Changing Software Developers in NYC

Clutch Crowns DOOR3 Game-Changing Software Developers in NYC

A lot of businesses have migrated their operations and processes online! Thanks to the power of software solutions and technologies,...

How To Hire a Dedicated Software Development Team

How To Hire a Dedicated Software Development Team

The ability to innovate and scale rapidly when you hire a dedicated software development team is not just an advantage...

The Impact of Custom Software Application Development Services

The Impact of Custom Software Application Development Services

The World of Custom Software Application Development The importance of technology—especially custom software application development—plays a crucial role in driving...

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

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

A Systems View Across Time and Space

  • Open access
  • Published: 13 April 2023

Design thinking as an effective method for problem-setting and needfinding for entrepreneurial teams addressing wicked problems

  • Rahmin Bender-Salazar   ORCID: orcid.org/0000-0002-5783-6314 1  

Journal of Innovation and Entrepreneurship volume  12 , Article number:  24 ( 2023 ) Cite this article

11k Accesses

4 Citations

Metrics details

Organizations in a wide array of fields and disciplines are increasingly using design thinking as an innovative process to create products or services that address wicked problems in their industries. Design thinking, a method of creative and collaborative problem solving originating in the tactics of designers, is a product design and development process that is, more and more, being used as a tool to move innovation forward and structure creation processes in diverse disciplines, from product development to food creation to social science research. Increasingly design thinking has become popular beyond the confines of creative and design disciplines and into the realm of wicked problems in social and ecological systems. While design thinking has many forms and applications, this study uses a refined version built upon the key themes of inspiration, ideation, and implementation as defined by Tim Brown, CEO of IDEO (2009), and situates it within the social science discipline—namely, systems thinking, organizational learning, and action research. Through a distilled design structure this flexible methodology combines insights from organizational development, social psychology, systems theory, and design research. By embedding learning and reflective practices into the structure of design thinking, a hybrid model of design thinking emerges that is a more effective tool for framing, setting in context, and solving these types of problems within teams.

From large private companies to small NGOs, academic institutions, and government entities, all are striving to learn about and create innovative services, products, and experiences that address the problems the relevant stakeholders in their industries face. Design thinking, a methodology for problem solving that has its origins in designers’ approaches, tactics, and needs to make this multi-disciplinary process explicit (Gregory, 1966 ), has increasingly emerged in recent decades as a powerful method to drive the innovation process in the pursuit of improvement. Design thinking, as described by the emerging management and innovation scholar Michael Luchs, is “…a creative problem-solving approach—or, more completely, a systematic and collaborative approach for identifying and creatively solving problems” ( 2015 , p. 1). Design thinking’s holistic approach to stakeholders and systems, coupled with its participatory nature, has made it an approachable technique to use beyond the fields of art, architecture, engineering, and technology that traditionally have design disciplines. The theories and practice of design thinking have grown in popularity and have been more heavily used in the academic discourses on management and in the business industry over the past several decades. Thus, this discipline has emerged as a problem solving tool beyond the traditional confines of design (Johansson-Sköldberg et al., 2013 ).

This leads to the following research question: to what extent does the application of design thinking, tasked with addressing wicked problems, represent an effective means for team problem setting and problem solving in organizations?

To fully grasp the concepts discussed in this proposal, it is helpful to clarify a few definitions before proceeding. Wicked problems: these are difficult and challenging problems, which appear in all fields and organizations; the most complex, multifaceted, and intractable problems with systemic impact are referred to as wicked problems (Churchman, 1967 ; Rittel & Webber, 1973 ; Roberts, 2000 ). Organizations: This term is defined as “social units (or human groupings) deliberately constructed and reconstructed to seek specific goals” (Etzioni, 1964 , p. 3) and, in this study, they are defined as seeking to solve problems through the creation of a new product or service. Design thinking: The definition of design thinking in this study can be simply understood as the use of methods and research practices to solve problems that are traditionally not in the fields of design, architecture, or engineering.

A brief history of design thinking

Design thinking was evangelized and popularized by IDEO beginning in the early 1990s (Brown, 2009 ); however, it existed in the academic discourse much earlier in various forms. To understand the current and evolving use of design thinking, a historical review of this process is beneficial. Specifically, it is essential to examine the early work examining designers’ practice and research, occurring in the latter half of the twentieth century, by the parents of modern design thought: Lawson ( 1980 ), Rowe ( 1987 ), Archer ( 1979 ), and Cross ( 1991 ).

An initial push to make a more rigorous discipline out of design thinking sprang from what Michael Barry and Sarah Beckman—current researchers exploring learning in design thinking—refer to as “…a need to make design thinking explicit and a need to embrace the many disciplines that are engaged in some way with design” (Beckman & Barry, 2007 , p. 26). The movement towards an explicit design method began in the 1960s, which would later be referred to as the first generation, and the subsequent movement in the 1970s and 1980s, known as the second generation (Rittell, 1984 ). This second generation of design thought began to emphasize the social aspects of design, by including active participants in the process (Beckman & Barry, 2007 ).

As described by Archer, “there exists a designerly way of thinking and communication that is both different from scientific and scholarly methods of enquiry when applied to its own kinds of problems” (Archer, 1979 , p. 18). This assertion from Archer accents not only the thinking aspect but the unique way of communicating used by designers applying the design thinking method towards problem solving. Similar to this, Cross explains that the design thought process is a research practice and a way of processing information, described as “designerly ways of knowing” ( 2001 ), that is an independent methodology with rich theory and should not be dependent on social science theory ( 2007 ). These two scholars lay the groundwork for design thinking to emerge as a distinct discipline for tackling problems in a myriad of disciplines.

In addition, Rowe outlined a systematic design process to problem solving that emphasized the role of the designer to address the needs of the client ( 1987 ). He described this user-centered process as design thinking, which was one of the earliest uses of the term. In Rowe’s design thinking process, a designer intervenes in a client organization; interprets the evidence gathered through quantitative and qualitative investigation; and makes an effort to address the challenges presented in the form of a product or service. In Lawson’s work, the process of design thinking, though not explicitly called that, is explored as a process that utilizes experimentation and information gathering tactics to tailor products ( 1980 ). Lawson’s definition predates Rowe’s use of the term of design thinking but similarly focuses on the designer’s expert role in assessing the needs of a client and testing possible solutions. This process is a tool that designers can masterfully use, informed by their expertise and designerly ways of knowing (Cross, 2001 ), to ultimately solve challenges that often fall into the definition of wicked problems. Rowe and Lawson focus on the intrinsically unique features of design thinking, with an emphasis on how the use of data gathering and testing make it an ideal tool for finding appropriate and optimal solutions.

These foundations of design thinking led us to Tim Brown’s definition of three overlapping, sometimes non-sequential elements—inspiration, ideation, and implementation—as outlined in Change by Design ( 2009 ) and popularized by IDEO. This simple structure serves as the foundation in which to organize the foundational theories for the proposed method in this article. This definition of design thinking is informed by the work of Lawson ( 1980 ), Rowe ( 1987 ), Archer ( 1979 ), and Cross ( 1991 , 2001 ). This foundational design method is broadly defined as the three key elements can be repeated, can overlap, and can be non-sequential (Brown & Wyatt, 2010 ).

Design thinking adapted towards addressing wicked problems

For this exploration of design thinking’s effect and innovative potential in addressing wicked problems, it is essential to understand the corresponding academic discourse and how it has evolved with design thinking. The theory was first described in an editorial by management theorist Churchman ( 1967 ) as a reaction to the term, first coined by Horst Rittel. The article was an exploration of these difficult, virtually unsolvable problems in the management science discourse and responsibility of society and academia to accept their intractability and find innovation solutions to live with them (Churchman, 1967 ). This first formal definition of the concept was further expanded with more defined parameters with the article of Rittel and Melvin Webber in 1973 as uniquely complex problems. Rittel and Webber’s ( 1973 ) work framed wicked problems within the context of social policy planning, where problems are often not clear, and contrasted that with problems in mathematics and chess, where there are clear cut solutions. As stated by modern theorists Brian Head and Wei-Ning Xiang, “…the ubiquity of wicked problems is the norm, and present in almost every pressing issue area that matters to human society today…” ( 2016 , p. 1). This description describes the growing relevance and prevalence of wicked problems on human systems and how it has grown in importance from its inception.

Herbert Simon, a pioneer in design research and artificial intelligence, wanted to use a design approach, in the vein of the one described above, as a unique discipline, to tackle “ill-structured problems,” which he described as problems with undefined characteristics ( 1969 ). Simon described his approach to design as a means of “…devising artifacts to attain goals…” (Simon, 1969 , p. 114), which continued a trend of describing design as a solution making and transformative process. This interpretation of design thinking continued to gain momentum amongst theorists and practitioners throughout the twentieth century, which resulted in design thinking as a methodology becoming synonymous with problem solving, especially as a multidisciplinary practice for framing wicked problems (Buchanan, 1992 ). Design thinking as a method to solve problems outside the creative domain began with Herbert Simon, who applied design methodologies to science and his field of artificial intelligence ( 1969 ). This movement of applying the design thinking discipline to fields not traditionally associated with design continued with the product development process used by IDEO, know as Human Centered Design or HCD (Brown, 2008 ; IDEO, 2011 ). The degree of client participation and at which stages of the process vary between methods, but they agree on a key area of design thinking—that the client or product user is the primary focus.

As design thinking moves beyond the traditional creative sphere and enters the realm of addressing wicked problems across a wide spectrum of topics, the discipline is enriched by the rigorous research practices that the social sciences have to offer. The stand-alone discipline of design thinking explored in this article integrates some of the social science methodologies to effectively adapt to the new terrain of designing for social systems. Specifically, this discipline is informed by systems theory (Bertalanffy, 1969 ; Dentoni et al., 2023 ; Meadows, 2008 ; Senge, 1996 ), organizational learning (Argyris & Schön, 1978 ; Kolb, 1984 ; Senge, 1990 ) and action research (Lewin, 1946 ).

Design and systems

Systems are an essential element to implementing a design thinking process that addresses wicked problems, because they allow the designer to see a more expansive view of the problem. To understand how to design a specific product or service, the designer often analyzes the various systems that are involved, such as social, technological, ecological, or political systems. By understanding the inner workings of these systems and collaborating with relevant stakeholders, a designer can co-create a product or service that acts as a targeted intervention to improve the system. This perspective has its origins in general systems theory, formulated by biologist Ludwig Von Bertalanffy ( 1969 ), which expands the understanding of systems beyond science and analyzes all systems in an intricate, open, and holistic manner. The majority of design thinking approaches are human-centric perspectives on general systems theory in that they focus not only on the systems involved with a specific intervention but also on how the different systems interact with each other. Though most design thinking processes are human-centered, they are not exclusively focused on social systems, because the ecological and built environment are also considered. Expanding on this viewpoint is organisimic theory (Goldstein, 1995 ), which emphasizes human interconnectedness—that humans are intrinsically and inextricably intertwined with the natural environment and the ecological systems therein. In addition, Barry Commoner, in his work The Closing Circle , further stated that everything in living systems is connected to each other and what has an effect on one affects all (Commoner, 1971 ). These ideas inform systems thinking (Dentoni et al., 2023 ; Senge, 1996 ), which is an application of systems theory to interpret the intertwined and dynamic interactions among multiple interdependent elements to inform possible interventions. This approach to interconnected systems informs the design thinking approach through the very foundation of the process—placing the human at the center of the research and looking at all the ways this individual connects with the product, service, or system.

Design thinking to stimulate learning

The principles of design thinking are human-centered, that is, the results are specifically tailored to the end-user, and are created using a process of collaboration, active engagement, and reflection (IDEO, 2011 ). This process can be further explained using the double loop learning theory (Argyris & Schön, 1978 ), which informs how reflective practice foundationally builds on learning. Double loop learning involves single loop learning—repeated attempts to address the same issue with the same method—while additionally engaging in reflective practice to learn from past performance and emphasize repeat attempts to refine approaches (Argyris & Schön, 1978 ).

David Kolb, a scholar in learning science, similarly, outlines an experiential learning model ( 1984 ) rooted in social psychology, which focuses on concrete action, learning from experience, reflection, and experimentation. This theory involves an axis of learning with the y -axis containing two opposing methods of processing experience and an x -axis of opposing methods of transforming experience. This axis of learning can be seen in Fig.  1 , and display experience processing in learning from a spectrum of concrete examples as one extreme and abstract conceptualization of ideas as the opposition. The processing of information is similarly balanced that with two opposing methods of transforming experience (Beckman & Barry, 2007 ; Kolb, 1984 ). The two diametrically opposed information transformation processes include reflective observation on one end and active experimentation on the other (Beckman & Barry, 2007 ). In simple terms, the process as seen in Fig.  1 shows two forces of learning that of processing reality and transforming it within each there is a tangible and intangible component. The work of Kolb, Argrys, and Schön increase the potential to learn from the design thinking process with rapid prototyping practice—reacting and changing the product, system, or service based on reflective practices and adapting based on those reflections. Rapid prototyping is influenced by social learning models, which emphasize interaction in learning and the importance of experimentation with both thought and action.

figure 1

Kolb Learning model as adapted from Beckman and Barry ( 2007 ), Kolb ( 1984 ) and Kolb and Kolb ( 2005 )

Charles Owen, a design academic from the Illinois Institute of Technology who has advocated for design as an engine for innovation ( 2006a ), builds on the prototyping practice from Kolb, Argrys, and Schön. Owen theorized that the design process has discernable phases that, while often not in order, generally begin with the analytic research stage and end with the synthetic experimentation and creation stage (Owen, 1993). This innovation model begins with creating ideas and concepts from research and then applying them to experiments for testing. When used through the lens of learning, this proposed process, as illustrated in Fig.  2 , begins to take shape as a non-sequential, innovative method to interpret and address complex problems. This process is illustrated in the work of Beckman and Barry ( 2007 ) who combined the elements of Owen ( 2006b ) in a simple vestige of two axes and four quadrants. In this prescribed and infinitely repeatable process, concrete analysis brings about observable research that can then be applied to abstract analysis, that is, frameworks and theories. Finally, this leads to abstract synthesis, which is the creation of ideas that can be clearly synthesized to become concrete solutions.

figure 2

Innovation process as adapted from Beckman and Barry ( 2007 )

Using design thinking in concert with action research

Design thinking, as described by Owen, seeks to form knowledge through action (1997), which is similar in style and approach to Action Research (Lewin, 1946 ) in the social sciences. Action research was first created for researchers to take a participatory and active role in their studies to mold and guide their experience (Lewin, 1946 ), which echoes the role of the designer in a design thinking process. The designer or researcher needs to take account of their subjects and make observations, which is a traditional research paradigm while also understanding their impact as a participant in the process. In addition, reflective practice (Argyris & Schön, 1978 ) is a means to review and learn from past experience, and with this tool, a designer or researcher is able to build on observations of the research subject or client and create the best solutions for them. A similar approach to the use of knowledge aggregated from observations and reflective practice, is the needfinding model, which is an exploration of addressing the needs of a particular subject and working to create a solution tailored to solve this problem for them (Faste, 1987 ). Needfinding in design thinking does not occur as a sequential step after reflection and observation, but rather as a method to guide both of those processes to address the needs of the intended client or product user. Similarly, in action research, needfinding is necessary for the researcher to undertake to gain context of motivations of organizations and individuals involved. In action research, the subject and researchers are all participants and collaborators in the change process and its essential to understand their needs in this context, which parallels the collaborative and solution creating work of a designer.

Schön described design, in its traditional form, as a tacit process with designers’ knowledge that is difficult to transfer or explain ( 1983 ). This situates designers as having specific expertise that is difficult for those without the professional know-how to comprehend or utilize. Design thinking seeks to clarify the discipline of design into a process more akin to implicit knowledge (Nonaka & Takechi, 1995 ), allowing design expertise to be disseminated to a larger audience, including both the designer and the client or product user. This implies that the interaction between the designer and the client is a reciprocal transaction or a communication between interacting components and systems (Germain, 1991 ; Luhmann, 1995 ). This interactive method represents the action research process, where both parties contribute to the creation process, with the designer leading the exercise. The change desired in the design thinking process, rather than research study, is an output in the form of a product or service made in collaboration with the client.

This approach to learning is common within design in that it is meant to create the ideal solution through experimentation, iteration, and continually learning from both. Using participatory action research, that is focusing on rapid learning, repetition of the practice-driven design thinking framework, and reflection, is essential for innovating and solving wicked problems (Argyris & Schön, 1991 ; Lewin, 1946 ).

Innovating through design thinking

Innovation, described as the “core renewal process” in an organization purposed with creating new products and services (Bessant et al., 2005 ), is the mechanism for addressing wicked problems. To innovate effectively to remain competitive, organizations have increasingly turned to the application of design thinking as a process for product development in recent decades (Johansson-Sköldberg et al., 2013 ; Lockwood, 2010 ). Design thinking-driven problem solving is a powerful and disruptive method that creates innovative products and services that seek to address these types of problems across diverse fields.

This article uses a foundational approach to design thinking-driven problem solving, which is, in essence, a flexible framework that does not adhere to a strict structure. Rather, it is able to ebb and flow within the design challenge and cater to the relevant stakeholders. As stated by Sydney Gregory in the seminal work The Design Method , “[the] design method is a pattern of behavior employed in inventing things…which do not yet exist. Science is analytic; design is constructive” ( 1966 , p. 6). Design, in this context, is used as an engine of product, system, and service creation that addresses individuals’ needs and challenges.

The design thinking process explained above can be considered an innovation process (Brown & Wyatt, 2010 ) and has a social learning component (Beckman & Barry, 2007 ). More specifically, this process can be defined as a problem setting method (Schön, 1983 ). Problem setting, as explained by design cognition scholar Willemien Visser is “…the process by which we define the decision to be made, the ends to be achieved, and the means that may be chose[n]” ( 2010 , p. 4). Problem setting is the first step towards innovation and tackling a wicked problem. By defining the problem and understanding all of the pieces that interact with it, one can begin to address, but not necessarily solve a wicked problem. To understand how to use design thinking as a method within this innovative problem setting process, one must understand the context of the current design thinking discourse.

Towards a refined design thinking model

Organizations are consistently looking for innovative ways to advance their products, profits, and goals, and design thinking, though not clearly defined, has emerged as a driving force to meet these challenges. Despite the varying definitions (Brown, 2008 ; Dorst, 2006 , 2010 ; Kimbell, 2015 ), there are enough similarities that describe the key elements of design thinking that bring it in line with other design and social science research methodologies. By combining a few of the fundamental elements into a hybrid model of design thinking, it can be used as a powerful tool to address wicked problems that organizations face. This method, as illustrated in Fig.  3 , brings together the elements of Charles Owen’s map of innovation ( 1998 , 2006a , 2006b ), Kolb’s experiential learning ( 1984 ), and Tim Brown’s three signature elements of the design thinking process ( 2009 ).

figure 3

Hybrid model of design thinking, which is a design process workaround with design thinking and innovation adapted from the work of Beckman and Barry ( 2007 ), Brown ( 2008 , 2009 ), Brown and Wyatt ( 2010 ), Brown and Katz ( 2011 )

The components of inspiration, ideation, and implementation (Brown, 2009 ) serve as the foundation of this hybrid model. Using Brown’s simplified construction could be interpreted as embracing the recent, popular versions of design thinking as a third or independent discipline. However, its approachable three-pronged structure provides a categorical separation between steps and meshes well with Owen’s concepts of innovation—the interplay of analysis and synthesis with abstract and concrete ( 1998 , 2006a , 2006b ). This powerful combination creates a streamlined and flexible framework, where innovation can occur in a non-sequential order, dictated by the needs of the problem. Interestingly, Archer foresaw this hybrid approach when he stated, “time is rapidly approaching when design decision making and management decision making techniques will have so much in common that the one will become no more than the extension of the other” ( 1967 , p. 51). Archer’s foresight in the above hybrid design approach is in line with his third-way ( 1979 ) thought process but differs in that this design discipline works in concert with social science instead of wholly separate from it. Using this innovative hybrid design thinking model, wicked problems can be quickly identified and addressed, with an outlook towards finding specific solutions to fit users’ needs.

Research design

Building on the theoretical model, based on the literature review above, a case study was undertaken to better understand the model in practice. The case study used a participatory design thinking exercise with a cohort of students enrolled in an applied entrepreneurial Masters-level course at Wageningen University. This course was targeted at students interested in entrepreneurship and circular economy, and worked with eight student teams that were developing business ideas using renewable materials in garment production. Disruptive innovation—a product, service, or approach that fundamentally upends the status quo of an industry or field (Christensen, 1997 )—serves as a lens in this case study to analyze the effect of design thinking on problem solving and concept development of the student teams’ entrepreneurial ventures The course was focused on circular economic systems, which seeks to reuse resources in a closed, infinitely repeatable loop, which is in contrast to traditional linear economic models that use finite resources and create waste (Geissdoerfer et al., 2017 ). The Ellen MacArthur Foundation, a leader in applying the circular transition, define the concept as the following:

A circular economy is an industrial system that is restorative or regenerative by intention and design. It replaces the “end-of-life” concept with restoration, shifts towards the use of renewable energy, eliminates the use of toxic chemicals, which impair reuse, and aims for the elimination of waste through the superior design of materials, products, systems, and, within this, business models. (Ellen MacArthur Foundation, 2012, p. 7)

Circular economy seeks to reduce humanity’s impact on the environment and climate by decreasing waste and using resources more efficiently, thus attempting to solve the wicked problem of negative human impact on the environment.

Creating a baseline

Participants in the study came from two types of academic backgrounds: a science-based one, and one rooted in the social sciences. There was an observable difference between each group in their ability to learn and apply design thinking. Students from a science-based background, such as environmental science or biochemistry, were able to learn and use design thinking concepts with greater ease than those with a social science, humanities, or management studies background. This noticeable difference may be attributable to the science-based students’ ability to mix and match frameworks as needed to find solutions to complex problems. For example, in physics, students have been taught to use one formula for one situation with its own set of variables, and another formula for another situation with a second set of variables. In other words, the situation dictates what tools are used. Similarly, in the hybrid model of design thinking, which the students were exposed to, specific elements are only applied in certain circumstances and situations. Thus, as design thinking contains elements of the scientific method, this may have resonated more with the science-based students’ usual ways of learning and applying methods.

The overall purpose of creating a baseline was to see what portion of the design thinking concepts had permeated in participants’ minds and how they described those concepts. As such, I used what participants shared as their interpretation or impression of design thinking in their own words. In many cases their descriptions were of a concept without the use of the concept name (e.g., prototype, ideation), and I compared these explanations with the concepts used in the hybrid model of design thinking in an effort to make connections where possible. The students displayed their knowledge of design thinking during the interviews and through the course by describing important elements of the process, namely, creating prototypes, building on failed attempts, and repeated reflection on the implementation of their ideas. To establish a baseline, it was not necessary for participants to use the exact names or descriptions of the design thinking concepts, as the real test of whether they understood these concepts and could apply them would be uncovered during the design thinking in action (DTiA) section of data collection.

This qualitative methods study, informed by design thinking, was conducted in three phases: Phase 1 consisted of an ethnographic observational study and Phase 2 consisted of a series of six interviews (see Table 1 ) with past participants to assess their knowledge of and ability to apply design thinking to a real world problem.

The purpose of these two phases was to collectively gather data to understand the relationship between design thinking and problem solving in a team. Specifically, the data from the two phases seeks to answer to what extent design thinking represents an effective method for team problem setting and problem solving of wicked problems in organizations. Once collected, the data was codified (see Table 2 ) into four major themes: (1) the interviewee’s personal motivation in life and vocational goals; (2) their professed knowledge in the aspects, uses, and approaches of design thinking; (3) the interviewee’s application of design thinking in a scenario; and (4) their assessment of the effectiveness of design thinking.

The research findings examine the research question, “To what extent does the application of design thinking, tasked with addressing wicked problems, represent an effective means for team problem setting and problem solving in organizations?" To answer this question, I used the four themes outlined above to conduct the data analysis, and the interpretation of the data will continue to follow these themes. For the interpretation, I split the four overarching themes into two categories. The first category incorporates the first two themes (personal motivation and knowledge of design thinking) and acts as a baseline to gauge, where the individual is academically and what design thinking concepts they have retained. This is useful information, because it paints a clearer picture of the participants’ individual characteristics, which I then paired with the second category of themes to understand whether these characteristics play a role in the participants’ application of design thinking to solve a wicked problem. The richest set of data comes from the second category. The latter two themes (application of design thinking and perceived effectiveness) are included in this second category as a way to analyze DTiA through role-playing scenarios, which gives insight into the participants’ practical knowledge and application of the hybrid design thinking model used for this experiment.

This DTiA exercise revealed three key features of the hybrid model, which combines behavioral science and traditional design methods to create a flexible and foundational model for addressing wicked problems. Three key aspects within the hybrid model that were particularly apparent in this second category were “problem setting”, “needfinding”, and “double-loop learning”. First, interviewees successfully applied problem setting by outlining all the necessary information that would be required to solve an assignment—in this case, the hypothetical scenario of working with Apple to improve the iPhone’s falling market share. Interviewees correctly prioritized the following: (1) setting up a component team to tackle the issue; (2) collecting data on competitors to compare best practices; (3) understanding the needs of potential and past customers; and (4) creating a process to experiment and iterate on failures. These priorities exemplify the hybrid model’s three central elements and how organizational learning, needfinding, and problem setting are key to the success of the model in addressing wicked problems. What’s more, the interviewees were able to link ecological systems, such as environmental value chains and social systems while looking at both consumers and stakeholders to put the question into context. Second, participants used needfinding to distinguish what aspects of the real world problem were most important to take into consideration when evaluating possible solutions. These aspects focused mostly on the needs of human and ecological systems that were involved with the problem. Third, participants used double-loop learning to test possible solutions to the problems they faced and made iterative changes based on the positive or negative results. Specifically, the interviewees showed how they questioned all of the parameters of the prompt and laid a plan for testing, retesting, and iteration of ideas.

This study’s findings suggest that the hybrid model of design thinking is an effective framework for addressing wicked problems. Namely, participants were able to recall various terms, such as “prototyping” and “ideation” when defining this hybrid model. Furthermore, they displayed implicit knowledge by successfully using aspects of the model, including “double-loop learning,” “iteration,” and “reflective practices,” to find solutions during the DTiA exercise. For example, Interviewee C specifically defined “prototyping” as “a method to create quick test solutions that can then be iterated upon and improved with future versions towards a suitable solution.” Being an explicit definition of this design thinking concept, it is clear that Interviewee C understood and retained the information learned during the course. By contrast, Interviewee A did not identify “prototyping” by name but displayed use of the concept during the role-playing exercise.

The course participants used design thinking in the formulation of their entrepreneurial ventures, which were created to address the wicked problem of environmental sustainability. Two groups of participants in particular, Epsilon and Zeta, used design thinking to address very specific problems they identified within environmental sustainability, which are outlined below.

Epsilon team’s use of the hybrid design thinking method

Epsilon’s innovative solution was developed in response to the lack of incubation spaces for sustainable entrepreneurs in Wageningen, Netherlands—that is, workspaces and offices, where like-minded entrepreneurs can work and have access to investors and experts to grow their businesses. The team focused on Wageningen specifically, because they had the most experience in this city, as students at the local university and as entrepreneurs who had attempted a previous venture here already. Note that this was the team’s second venture attempt for this study. They first explored how to grow a mushroom skin, related to the “living skin” research project, so that they could experiment with different types of coating to make the material waterproof. They planned to sell the waterproof coating to companies to make durable clothing, bags, or car interiors. Through experimentation and the prototyping process, the team tried to grow mushrooms but faced challenges with a lack of expertise and a space to grow the fungi. The team expressed frustration about these obstacles and through reflection realized that getting expert assistance and finding a space to experiment were essential to their success as a venture; however, perhaps, these were problems they could address. As such, the team shifted their focus to a new venture, which was to find an innovative solution to the lack of incubation spaces in Wageningen.

The team researched and tested their new venture concept of creating an organic, sustainably, and locally sourced café that is an office space for ventures in the city, has a network of experts to help entrepreneurs, and offers a location for entrepreneurs to sell and test their products and services. With this shift, the team then went to collect data and surveyed people around the city and the results showed that there was, in fact, demand from residents and sustainable entrepreneurs for this type of space and that Wageningen did not currently have any locations that met these entrepreneurs’ needs. Specifically, they found that a co-working space and having access to experts are actually crucial for entrepreneurs in the early stages of their ventures, because it allows them to test their ideas and learn from others as they iterate on better solutions. Similarly, the team itself was able to learn from the failure and challenges of their first venture attempt, which inspired them to address that problem directly with a different venture. Epsilon’s venture evolved to become a café, store, and incubation space for entrepreneurs in Wageningen that sought to create products or services that are environmentally sustainable and have closed-loop, circular waste streams. Their final venture concept included a plan for further development, testing, and iteration to continue learning as they grow and improve their products.

This team’s journey from one venture to another provides an exemplary use of the hybrid design thinking model. This shift embodies Argyris and Schön’s definition of double-loop learning, the students not only explored their original question related to their venture but also if it was the right question in itself. Argyris and Schön ( 1978 ) described the concept with the following metaphor:

Single loop learning can be compared with a thermostat that learns when it is too hot or too cold and then turns the heat on or off. The thermostat is able to perform this task, because it can receive information (the temperature of the room) and, therefore, take corrective action. If the thermostat could question itself about whether it should be set at 68 degrees, it would be capable not only of detecting error but of questioning the underlying policies and goals as well as its own program. That is a second and more comprehensive inquiry; hence it might be called double loop learning. (pp. 2–3)

I shared the metaphor above with the students during the beginning of the course, and this group exemplified double-loop learning in the selection and refinement of their venture. Team Epsilon showed their understanding of the context of a venture and how that can change the very nature of a proposed solution as it was for them, when they shifted the problem they focused on. Furthermore, their reaction to changing circumstance can be interpreted as the team displaying Schön’s ( 1983 ) concept of “reflection-in-action” (p. 79). The team struggled with their concept and made changes that ebbed and flowed with the challenges they faced, which in Schön’s definition would be part of the designer’s reflective “conversation with the situation.” Their use of double-loop learning in regard to building on lessons learned and changing approaches based on feedback led them to their new venture and guided how they continued to iterate and improve that new venture. Furthermore, they expertly displayed problem setting and understanding the context of a venture and how that can change the very nature of a proposed solution as it was for them, when they shifted their problem. The final project from this team was well thought out, fit to context and was an exemplary use of the hybrid model.

Zeta team’s use of the hybrid design thinking method

The Zeta team faced very different challenges in creating their venture. The team members, who came from diverse backgrounds and had varying interests and skillsets, came up with a plethora of ideas and had a difficult time choosing one idea to move forward with. The ideation and brainstorming process was not decisive or iterative, and the students expressed their frustration as the process rolled on without a clear venture in sight. The team worried that they had fallen behind and would not have enough time to complete all aspects of the project. With design thinking coaching by the researcher, the team was encouraged to refocus their efforts to think about any problem, not necessarily related to environmental sustainability, and see how they could collectively address it. Once they had decided on a problem, they could then begin introducing aspects related to reducing waste streams and circular economy in an organic way that would connect the problem they chose to the bigger, wicked problem of environmental sustainability.

The team used needfinding to find the requirements of the problem and then utilized framing and reframing to make their venture work in that context. This venture’s process exemplifies frame innovation, coined by Dorst ( 2015 ), which he describes as a “key entrepreneurial activity” (p. 149). The team shifted frames, from seeing their venture as a means to solve an aspect of environmental sustainability, to solving a real-world problem that can be connected to environmental sustainability. The Zeta team went through further consultation and began discussing one team member’s proposed problem based on her experience working with the United Nations (UN) on disaster recovery in Latin America. She described the problem of people needing quick housing when a disaster strikes; the logistic challenges of getting temporary, single use housing into the disaster area; and the waste the homes leave once they are no longer used. This discussion led the group to connect this issue to the “living skin” fungi material to create temporary housing that could be lighter weight, biodegradable, and reusable. This idea connects the problem posed within the problem of environmental sustainability, which was their task. Furthermore, this shift exemplifies an understanding of systems thinking and interconnectedness of social and ecological systems. Once the initial concept was developed, they began to refine the idea using team members’ expertise working in international development and aid as well as environmental sustainability. They then turned to the questions of how to make this into a venture and who would be their target audience. This process led them to brainstorm how they could balance the needs of potential clients (disaster response organizations), potential users (disaster victims), and the natural environment (ecological footprint). The team conducted surveys and found that potential clients would be interested in cost and scale of the potential solution, while potential users would be most interested in comfort and durability. Those considerations were then balanced with creating the minimalist ecological footprint and having a viable business model so the venture would thrive. They made two crucial decisions at this juncture: first, they decided not to manufacture the material but to source it from a third party, and second, they decided to structure their venture as a non-profit focused on the UN and disaster recovery agencies.

Using the design thinking concepts of rapid prototyping and reflection they were able to quickly figure out which ideas were working and abandon those that were not, which ultimately led to a venture they described as “living houses.” This iterative process they embodied shows the power of using design thinking for concept refinement. The team’s final venture concept was a not-for-profit organization that sourced biodegradable and reusable materials to create light-weight, temporary housing to be sold to NGOs, governments, and public international institutions for disaster victims around the globe. Their plan included next steps for further testing and iteration to improve the product and business model. In both cases, the Epsilon and Zeta teams used the hybrid design thinking model to problem set and problem solve as they set up and executed their ventures. This clearly helps address the central research question of the study by showing the utility of design thinking as tool for addressing wicked problems both in the internal venture creation process and the problem the venture sought to address, environmental sustainability.

Connecting team’s use of design thinking hybrid method to interview data

While these team examples provide evidence to support the positive impact of design thinking on problem setting and solving for wicked problems, the most interesting results came from the Phase 3 interviews that took place 1 year after completion of the course. During these interviews the participants were tasked with using the hybrid design thinking model in a theoretical applied scenario. Through these participant interviews, I was able to explore which features of design thinking they had internalized and how they might apply those to a real world problem. As explained in the following discussion, the participants’ ability to use design thinking concepts implicitly and explicitly over a year later shows that the concepts were adopted as a modus operandi, at least in part. As shown in the matrix in Fig.  4 , the participants all showed a high ability to apply the competencies regardless of their ability to define them as. In addition, the participants who did not recall the definitions were able apply the competencies to a higher level of specificity and knowledge than two out of the three interviewees that could.

figure 4

Matrix showing interviewees’ ability to define ( x -axis) and apply ( y -axis) on key design thinking competencie s

In the scenario with the interview, participants were tasked with describing the steps they would take to tackle the problem of declining market share of the iPhone. Without being specifically prompted, all interviewees included some form of waste reduction and environmental sustainability into their action plan in the scenario. Some causation for the inclusion of these environmental themes could be the students’ backgrounds, their association with the course’s focus on this particular wicked problem, and/or a general growing awareness of the global climate crisis. That said, their ability to connect a problem to a deeper, wicked problem demonstrates their use of the competencies of system thinking and problem setting from the hybrid design thinking model. They were able to place a practical task within a wider context and connect it with wicked problems involved, such as climate change and electronic waste.

Much like in the case of the Zeta team described above, any seemingly unrelated problem can be used as a gateway to begin discerning the mechanics needed to address a specific, wicked problem, which will lead to creating experimental solutions that can be further tested. Furthermore, the participants were able to identify, in name or description, the three core elements of the hybrid design thinking model—inspiration, ideation, and implementation—and delineate corresponding activities for each while also explicitly and implicitly describing design thinking’s approach to solving wicked problems. The participants’ perception of and demonstrated application of design thinking elements in their problem solving procedure in the interview sheds light on the effectiveness of design thinking as a problem setting and solving tool. This suggests that the participants embraced design thinking, specifically the three-pronged hybrid model that melds design methodologies and behavioral science, as a useful process for problem solving. More important than the interviewees identification of the steps of the model, was their application of problem setting and problem solving strategies that follow the three main elements of design thinking. Participants were able to show the use of brainstorming (inspiration), prototyping (ideation), and iteration (implementation) in various ways and interchangeably. This nimble and engrained use of the concept shows its effectiveness as a problem setting and problem solving tool as well as its impact on users.

Connecting findings to the existing literature

This study was informed by a literature review which examined the history, theories, and application of design thinking in addressing wicked problems. In this study, design thinking is considered a “third discipline” or independent area of study that applies behavioral science and design methodologies to a proposed hybrid model. This hybrid design thinking model strengthens typical design methodologies by including (1) systems thinking, taking into account interconnectedness of ecological and social systems; (2) organizational learning, using double-loop learning, reflective practice, and iterative prototyping; and (3) elements of action research, such as collaborative and cyclical feedback with designer and client. This integrated process is particularly pertinent when working on problems beyond traditional design, for it lends a structural framework to behavioral science research using the three phases of ideation, prototyping, and implementation. In the hybrid design thinking model, behavioral and organizational considerations are not merely optional, but rather an essential element that works in congress with design methodologies.

As outlined above, the findings of this study are in line with the literature and research that indicate that design thinking is a potent tool for addressing wicked problems. By their nature, wicked problems are intractable and complex, so when testing ways to solve them effectively the method must be able to adapt with that nature. Specifically, this research suggests that design thinking represents an innovative process uniquely equipped to address wicked problems through its use of “problem setting.” That is, the effective use of needfinding—looking for solutions for relevant stakeholders—and double-loop learning—applying iterative knowledge and testing assumptions while doing. Although the participants in this study represent a very small treatment group in a specific educational setting focused on tackling environmental wicked problems, there is potential to test this experiment more broadly in educational settings focused on a variety of wicked problems.

Implications for future research

There are four overarching implications that result from this study that academic researchers and practitioners should take into consideration when exploring how to use design thinking as an effective method to address wicked problems. First, future research should conduct experiments using design thinking to address wicked problems that occur within other thematic areas, such as gender inequality, wealth distribution, employment with new technologies, and religious tensions, among others. Second, future research should test a variety of team compositions and study settings beyond that of a university. For example, team members could be part of a research institution, corporation, government, or NGO, and studies could be conducted within those organizations or across disciplines. Third, future research should explore what other aspects of design thinking are effective and learn why they are or are not successful in tackling wicked problems. Fourth, future research should test the hybrid design thinking model’s effectiveness using other forms of design thinking as a control. Finally, beyond academia there are implications of this study for professional practice. Gleanings from this study and use of the hybrid model in the field can occur immediately if used as an adaptable and editable tool for problem solving. This can be used in NGO’s, governments, universities and companies working on wicked problems in their work.

Limitations

This was a qualitative methods study that included a participatory design exercise focused on students enrolled in an entrepreneurship and circular economy course, where they were tasked to use design thinking as a method for creating innovative solutions to the wicked problem of environmental sustainability. While designed to examine how effective design thinking is for setting and solving wicked problems for teams, there is a clear limitation of its application on settings outside education, such as in business and practices outside of academia. Although the course was hands-on, involved the creation of a nonprofit or for-profit business, and was team-based, it still took place in an educational setting rather than in the open marketplace. In addition, this study unfolded in a European context and specifically within the Netherlands, which limits its scope further. As stated earlier, there are wider implications for this data beyond being held in an academic setting that influence the results and potential uses of design thinking. As stated above, future studies should be conducted with teams outside of academia who are tackling different wicked problems other than environmental sustainability. Different results could occur in different settings and problems and future research can explore those possibilities.

Beyond the components of the research, this study had limitations with time, as it had to be carried out during a specific semester and was dependent on student availability. In addition, due to university considerations, including the time needed for proposal review and IRB approvals, there were delays in conducting the interviews which were originally set for May 2018, but were carried out in December 2018 and January 2019. However, this allowed for a shift in focus of looking at how the knowledge and practice of design thinking remained implicitly and explicitly in the interviewees’ problem solving practices. A final limitation is that this study was a doctoral dissertation, which means it had a limited budget and a specific time period in which it was required to be completed.

Final thoughts

Analysis of designers’ thinking and doing has been explored for over a half century, and design thinking, in particular, has evolved over the last three decades from a process only used by designers to more expansive use. Along with the expanded use of design thinking is the rightful criticism, skepticism, and curiosity with the approach, which can offer an opportunity for further refinement and transdisciplinary use. This evolution has expanded design thinking from traditionally creative fields to help create products to practical, ergonomic and aesthetic standards to being used by governments, social policy researchers, non-governmental organizations, and many more to solve societal problems and the most difficult among them, wicked problems. The hybrid design thinking model strengthens design methodologies with systems thinking, organizational learning, and action research, which can help deepen and inform the design methods when working on problems beyond traditional design. IDEO’s popularized design thinking process with the three elements of inspiration, ideation, and implementation provides a structure that can be used as a basis to add insights and tactics from social sciences—namely, systems thinking, organizational learning, and action research—and designer’s methods more broadly. Systems thinking offers an opportunity for teams to zoom out and have a macro view of the dynamic, interconnected elements of the wicked problem they seek to address through iterative solutions and reflection. Organizational learning offers a posture of learning which can strengthen the iteration, testing, and reflection processes in design thinking. Finally, action research informed practice with design thinking enables teams to be active participants, researchers, and designers in finding possible solutions to wicked problems. Design thinking when applied to solving problems in an entrepreneurial education setting will add to the effectiveness and innovative nature of the solutions created. Through creative brainstorming, experimentation and reflection being integrated into the creation of entrepreneurial solutions to wicked problems there is great potential ramifications beyond educational settings, such as industry, government, and civil society.

Availability of data and materials

The data and materials used in the research are available through the ProQuest dissertation database as part of graduation requirements for the PhD at Fielding Graduate University.

Abbreviations

Design thinking in action

Institutional Review Board

Archer, L. B. (1967). Design management. Decision, 1 (4), 47–51.

Google Scholar  

Archer, L. B. (1979). Whatever became of design methodology? Design Studies, 1 , 17–20.

Article   Google Scholar  

Argyris, C., & Schön, D. (1978). Organizational learning: a theory of action perspective . Addison-Wesley.

Argyris, C., & Schön, D. A. (1991). Participatory action research and action science compared: a commentary. In W. F. Whyte (Ed.), SAGE focus editions: Participatory action research (pp. 85–96). SAGE Publications Ltd. https://doi.org/10.4135/9781412985383

Chapter   Google Scholar  

Beckman, S., & Barry, M. (2007). Innovation as a learning process: Embedding design thinking. California Management Review, 50 (1), 25–56.

Bertalanffy, L. V. (1969). General systems theory: Foundations, development, applications (Rev. Ed) . George Braziller.

Bessant, J., Lamming, R., Noke, H., & Phillips, W. (2005). Managing innovation beyond the steady state. Technovation, 25 (12), 1366–1376.

Brown, T. (2008). Design thinking. Harvard Business Review., 86 (6), 84–92.

Brown, T. (2009). Change by design: How design thinking transforms organizations and inspires innovation . Harper Business.

Brown, T., & Katz, B. (2011). Change by design. Journal of Product Innovation Management, 28 , 381–383. https://doi.org/10.1111/j.1540-5885.2011.00806.x

Brown, T., & Wyatt, J. (2010). Design thinking for social innovation. Stanford Social Innovation Review., 12 , 31–35.

Buchanan, R. (1992). Wicked problems in design thinking. Design Issues, 8 (2), 5–21.

Christensen, CM. (1997).  The innovator's dilemma: when new technologies cause great firms to fail . Harvard Business School Press, ISBN 978-0-87584-585-2

Churchman, C. (1967). Guest editorial: Wicked problems. Management Science, 14 (4), B141–B142.

Commoner, B. (1971). The closing circle: Nature, man, and technology . Random House Knopf.

Cross, N. (1991). Research in design thinking . Delft University of Technology.

Cross, N. (2001). Designerly ways of knowing: Design discipline versus design science. Design Issues, 17 (3), 49–55.

Cross, N. (2007). Designerly ways of knowing (p. 16). Basel: Birkhäuser.

Dentoni, D., Cucchi, C., Roglic, M., Lubberink, R., Bender-Salazar, R., & Manyise, T. (2023). Systems thinking, mapping and change in food and agriculture. Bio-Based and Applied Economics. https://doi.org/10.36253/bae-13930

Dorst, K. (2006). Design problems and design paradoxes. Design Issues., 22 , 4–17.

Dorst, K. (2010). The nature of design thinking. Proceedings of the 8th Design Thinking Research Symposium (131–139). Sydney University of Technology, Sydney, New South Wales

Dorst, K. (2015). Frame Innovation: Create New Thinking by Design. The MIT Press . https://doi.org/10.7551/mitpress/10096.001.0001

Etzioni, A. (1964). Modern organizations . Prentice-Hall.

Faste, R. A. (1987). Perceiving needs. SAE Journal, Society of Automotive Engineers., 871534 , 1–5. https://doi.org/10.4271/871534

Geissdoerfer, M., Savaget, P., Bocken, N. M. P., & Hultink, E. J. (2017). The circular economy: A new sustainability paradigm? Journal of Cleaner Production, 143 , 757–768.

Germain, C. B. (1991). Human behavior in the social environment: An ecological view . Columbia University Press.

Goldstein, K. (1995). The organism: A holistic approach to biology derived from pathological data in man . Zone Books.

Gregory, S. A. (1966). Design and the design method. In S. A. Gregory (Ed.), The design Method. Plenum Press.

Head, B., & Xiang, W.-N. (2016). Working with wicked problems in socio-ecological systems: More awareness, greater acceptance, and better adaptation. Landscape and Urban Planning., 110 (2013), 1–4.

IDEO. (2011). Human centered design toolkit , 200.

IDEO. (n.d.). About. Retrieved from https://www.ideo.com/about

Johansson-Sköldberg, U., Woodilla, J., & Çetinkaya, M. (2013). Design thinking: Past, present and possible futures. Creativity and Innovation Management, 22 (2), 121–146.

Kimbell, L. (2011). Rethinking design thinking: Part I. Design and Culture, 3 (3), 285–306. https://doi.org/10.2752/175470811X13071166525216

Kolb, D. A. (1984). Experiential learning: Experience as the source of learning and development . PrenticeHall.

Kolb, A. Y., & Kolb, D. A. (2005). Learning Styles and Learning Spaces: Enhancing Experiential Learning in Higher Education. Academy of Management Learning & Education, 4 (2), 193–212. https://doi.org/10.2307/40214287?refreqid=search-gateway:69b4159ab026cceba348641bddd445b6

Lawson, B. (1980). How designers think: The design process demystified . Burlington: Elsevier Ltd.

Lewin, K. (1946). Action research and minority problems. Journal of Social Issues, 2 (4), 34–46.

Lockwood, T. (2010). Design Thinking: Integrating Innovation, Customer Experience and BrandValue . New York, NY: Allworth Press.

Luchs, M. G. (2015). A Brief introduction to design thinking. In M. G. Luchs, K. S. Swan, & A. Griffin (Eds.), Design thinking (pp. 1–11). Hoboken: Wiley.

Luhmann, N. (1995). Social systems . Stanford University Press.

Meadows, D. H. (2008). Thinking in systems: A primer . Chelsea Green Publishing.

Nonaka, I., & Takeuchi, H. (1995). The knowledge creating company . Oxford University Press.

Owen, C. L. (1998). Design research: Building the knowledge base. Design Studies, 19 (1), 9–20. https://doi.org/10.1016/s0142-694x(97)00030-6

Owen CL. (2006a) Design thinking: Driving innovation. The Business Process Management Institute BPMI.org . September 2006a

Owen, C. L. (2006b). Design thinking—notes on its nature and use. Design Research Quarterly, 1 (2), 16–27.

Rittel, H. (1984). Second-generation design methods. In N. Cross (Ed.), Developments in design methodology (pp. 317–327). Wiley.

Rittel, H. W. J., & Webber, M. M. (1973). Dilemmas in a general theory of planning. Policy Sciences, 4 (2), 155–169. https://doi.org/10.1007/BF01405730

Roberts, N. (2000). Wicked problems and network approaches to resolution. International Public Management Review, 1 (1), 1–19.

Rowe, P. (1987). Design thinking . The MIT Press.

Schön, D. A. (1983). The reflective practitioner: How professionals think in action . New York: Basic Books.

Senge, P. (1990). The Fifth Discipline: The art and practice of the learning organization . Doubleday.

Senge, P. (1996). Systems thinking. Executive Excellence, 13 (1), 15.

Simon, H. (1969). The sciences of the artificial . MIT Press.

Visser, W. (2010). Schön: Design as a reflective practice. Collection, 2 , 21–25.

Download references

Acknowledgements

Thank you to Wageningen University & Research and Fielding Graduate University for the opportunity to conduct this research in an entrepreneurial classroom setting. Ethical Approval through institutional review board (IRB) is detailed in Appendix B . This work was completed as part of doctoral research of Rahmin Bender (-Salazar) conducted for the Fielding Graduate University and at Wageningen University & Research and published with ProQuest as part of graduation requirements.

Not applicable.

Author information

Authors and affiliations.

Kemmy Business School, University of Limerick, Limerick, Ireland

Rahmin Bender-Salazar

You can also search for this author in PubMed   Google Scholar

Contributions

The author read and approved the final manuscript.

Corresponding author

Correspondence to Rahmin Bender-Salazar .

Ethics declarations

Competing interests.

The author declares no competing interests.

Additional information

Publisher's note.

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Appendix A: Interview Protocol—November 2018

[To open the conversation a bit of small talk and catching up with the former student, what they have been up to and what do they have planned next and this lines up to the informal questions below (in no particular order).]

Welcome and thank you for this time and to explore some of these concepts with you and get your perspective. Now that you have completed the Design Thinking course, I would like to explore with you whether, in your future career, you would consider design thinking as a way for teams to tackle difficult problems, and any ideas you may have on the subject. This is not designed in any way to test your knowledge about design thinking, or to reflect on how you did in class. I would simply like to understand whether, with what you’ve learned, you feel that design thinking is a good way to tackle tough problems, and how you would go about doing that.

Questions to warm up and understand context—5 ~ min

What is your major/main subject of study?

How do you want to use your education and what do you want to do as your vocation?

Design thinking and problem solving—40 min

[The purpose of the first question is to begin to brush on problem setting and begging the design thinking process, the parameters and elements. The goal is to solicit data from participants through storytelling and their thoughts on the topic.]

Can you tell me a story about your experience with design thinking in the class that you thought was memorable?

Are there other examples of things that struck you about design thinking?

What is it about the design thinking approach that you like the most?

Is there anything that you don’t like, or would do differently?

Let’s do some role playing. Let’s say, tomorrow you get hired by Apple to be the head of their new development team. They have a serious problem: the iPhone has reached a saturation point. You are tasked to come up with an entirely new set of functions that will totally reinvent the iPhone. How would you go about doing that, if you were using the design thinking approach? If you can, break it down using the three-phase hybrid model we discussed: Ideation-Prototyping-Implementation.

Is there anything about design thinking you feel you need to know more about, before you could confidently begin to use it?

Wrap up—10–15 min

So in sum, do you think design thinking a good method to produce disruptive innovation, or would you use other methods?

Does design thinking need to be adapted to the fast pace of disruptive change today?

Appendix B: Ethical Approval for Research—April 2018

figure a

1) IRB Approval Information

Name: Rahmin Bender.

IRB#: 17–1107

Title: Applying Design Thinking and Practice to team projects seeking to create regenerative and sustainable products to address the wicked problem of sustainable garments

Faculty: Fredrick Steier.

Type: Title Change and General Revisions.

2) Study Summary

The dissertation project seeks to explore through participatory action research, how the application of design methods to address wicked problems represents a disruptive innovation in the process of solution creation and if so or not, to what extent. The disruptive innovation is framed within the context of the Netherlands, the public University education system and the field of sustainable fashion and garment production. The specific context of this study will be at Wageningen University and Research in the Netherlands working with student teams creating business ideas, using design thinking and aligned methods, with the renewable materials in garment production. The forty Masters students in a circular economy course will be split into eight teams that will work with designers using these materials to create business and product concepts using design thinking processes facilitated by me.

3) Revision Checklist

I. Change title to: Applying design thinking to entrepreneurial learning spaces purposed with addressing wicked problems.

Title changed to emphasize more on the application of design thinking on the learn space and how it addresses the wicked problem, rather than focusing more and more on the

II. Change question 2 element (c) from “(c) how design process impacts team dynamics of product creation team” to (c) how design process impacts the co-creation of the entrepreneurial learning space.

Question changed to focus additionally on how using the design process not only impacts the outputs of the course but the course itself.

III. Change question 3’s following elements.

Change this bullet: “World Café held after the course to accumulate data and feedback from participants and put into context with the notes.”

New Text: Changed to Design Charrette held after the course to accumulate data, feedback and put notes into context through a participatory designing of future iterations of the course.

Change this bullet: “Depending on IRB is performed data collection will be focused on the World Café portion that will be held in January post course and the course and work will be looked at historically.”

New text: IRB includes data from the course that ended in the end of 2017 as well as data from the participatory design workshop titled a design charrette occurring in 25 April 2017.

Add the following bullet

Design-based Research informed by action research and design thinking will serve as the research method for analyzing the historic data from the course and data collected in the design charrette to address the research questions posed.

The above changes are made to reflect a change from a World Café method to a more intimate design charrette. This change was made because of difficulty getting a large enough participation for a World Café to work, ideally 20 or more people. The design charrette will use the same research element but be in a smaller setting, which will allow for more interaction. Finally, the addition of design-based research to emphasize the element of the entrepreneurial learning space and how that was actively formed and influenced by the use of design methods.

Rights and permissions

Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article's Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article's Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/ .

Reprints and permissions

About this article

Cite this article.

Bender-Salazar, R. Design thinking as an effective method for problem-setting and needfinding for entrepreneurial teams addressing wicked problems. J Innov Entrep 12 , 24 (2023). https://doi.org/10.1186/s13731-023-00291-2

Download citation

Received : 19 October 2022

Accepted : 05 April 2023

Published : 13 April 2023

DOI : https://doi.org/10.1186/s13731-023-00291-2

Share this article

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

  • Design thinking
  • Problem setting
  • Design process
  • Wicked problems
  • Systems thinking
  • Organizational learning
  • Needfinding

problem solving and system design

  • 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 Main Question Paper
  • JEE Main Cutoff
  • JEE Main Answer Key
  • JEE Main Result
  • Download E-Books and Sample Papers
  • Compare Colleges
  • B.Tech College Applications
  • JEE Advanced Registration

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 Registration
  • TS ICET 2024 Registration
  • CMAT Exam Date 2024
  • MAH MBA CET Cutoff 2024
  • Download Helpful Ebooks
  • List of Popular Branches
  • QnA - Get answers to your doubts
  • IIM Fees Structure
  • LSAT India 2024
  • 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 Law Collages in Indore
  • 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
  • AIBE 18 Result 2023

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
  • Fashion Design Colleges in Bangalore
  • Fashion Design Colleges in Mumbai
  • Fashion Design Colleges in Pune
  • Fashion Design Colleges in Delhi
  • Fashion Design Colleges in Hyderabad
  • Fashion Design Colleges in India
  • Top Design Colleges in India

Animation Courses

  • Animation Courses in India
  • Animation Courses in Bangalore
  • Animation Courses in Mumbai
  • Animation Courses in Pune
  • Animation Courses in Chennai
  • Animation Courses in Hyderabad
  • Free Design E-books
  • List of Branches
  • Careers360 Youtube channel
  • NIFT College Predictor
  • UCEED College Predictor
  • NID DAT College Predictor
  • 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
  • DNB CET College Predictor
  • DNB PDCET College Predictor
  • NEET Application Form 2024
  • NEET PG Application Form 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
  • DDU Entrance Exam
  • 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 Exam City Intimation Slip 2024
  • IGNOU Date Sheet
  • CUET Mock Test 2024
  • CUET Admit card 2024
  • CUET PG Syllabus 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 Syllabus 2024
  • IGNOU Exam Form 2024
  • IGNOU Result
  • CUET Courses List 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
  • 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

Academia.edu no longer supports Internet Explorer.

To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to  upgrade your browser .

Enter the email address you signed up with and we'll email you a reset link.

  • We're Hiring!
  • Help Center

paper cover thumbnail

Design, system, value: The role of problem-solving and critical thinking capabilities in technology education, as perceived by teachers

Profile image of Charlotta Nordlöf

2017, Design and technology education : an international journal

The Organisation for Economic Co-operation and Development (OECD, 2013) defines its views on necessary skills for 21st century citizenship and life-long learning, advocating a generic skill set of ...

Related Papers

Malose Kola

problem solving and system design

Piet Ankiewicz , Elna Gross

Abstract: The teacher's role in facilitating learning and thinking in Technology Education classrooms is crucial to creating an environment conducive to the promotion and development of thinking. The aim of this study was to determine how teacher facilitation can promote and develop thinking in Technology Education lessons. A single case study using a qualitative research approach with convenience sampling and involving grade eight Technology Education learners was used to conduct the study.

Annette Hill

International Journal of Learning Teaching and Educational Research

Andrea Kent

Higher Education Research & Development

Henk Huijser , Megan Yih Chyn A . Kek

Ahmed Abubakar

Contemporary Issues in Technology Education

Kay Stables

Clive Oppenheimer

Mutation Research/Reviews in Mutation Research

Violaine VEROUGSTRAETE

RELATED PAPERS

Catherine Hoskyns

AIJ Journal of Technology and Design

Yasuaki Onoda

Asian and African Area Studies

Masatoshi Sasaoka

Australian Journal of Politics and History

Clive Moore

Maria Rodica Iacobescu

Ecological Economics

Kai M. A. Chan

Journal of College Student Development

Patricia King

Journal of the American College of Cardiology

Ferdinando iellamo

International Journal of Cardiology

Pompilio Faggiano

Birgitte Lerheim

Comunicata Scientiae

Franciely Ponce

International Journal of Technology and Design Education

Anders Jakobsson

Pak. J. Bot

Muhammad Irfan Haider

Biochemistry

Jihan Zahwa Azizah

2021 IEEE International Conference on Systems, Man, and Cybernetics (SMC)

Muhammad Shafay

Gabriela Irrazabal

SIL Proceedings, 1922-2010

Frances Pick

Anales de la Facultad de Medicina

Nieves Zeta Ruiz

Cell Journal (Yakhteh)

Saeid Kaviani

Japanese Research on Linguistics, Literature, and Culture

Tri Mulyani

hyutrTT hytutr

RELATED TOPICS

  •   We're Hiring!
  •   Help Center
  • Find new research papers in:
  • Health Sciences
  • Earth Sciences
  • Cognitive Science
  • Mathematics
  • Computer Science
  • Academia ©2024

IMAGES

  1. What Is Problem Solving In Design?

    problem solving and system design

  2. 258 best Problem Solving

    problem solving and system design

  3. Infographic Design Elements With Six Options For Problem Solving Steps Stock Illustration

    problem solving and system design

  4. Design Thinking Problem Solving

    problem solving and system design

  5. Problem solving

    problem solving and system design

  6. Problem solving basics

    problem solving and system design

VIDEO

  1. How to Boost Your Team's Problem Solving Skills with Fun Activities

  2. Systems Analysis and Design. Chapter 2: Project Selection and Management

  3. Problem-Solving skills for UX Designers #uxdesign

  4. What is System Design?

  5. System Design

  6. System Design and Design goals

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

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

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

  5. Tools for Systems Thinkers: The 6 Fundamental Concepts of Systems

    2. Synthesis. In general, synthesis refers to the combining of two or more things to create something new. When it comes to systems thinking, the goal is synthesis, as opposed to analysis, which ...

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

  7. A Practical Guide to Problem-Solving Techniques in Systems Engineering

    A thought experiment is a disciplined imagination process that engineers use to ponder a problem or system without conducting physical experiments. By using hypothetical scenarios, engineers can predict potential challenges and find solutions without the cost and time of real-world testing. For instance, consider the design of an urban traffic ...

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

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

    Learn System Design or improve your skills online today. Choose from a wide range of System Design courses offered from top universities and industry leaders. ... Systems Design, Computational Thinking, Problem Solving, System Software, Data Visualization. 4.7 (1.3K reviews) Intermediate · Course · 3 - 6 Months. Status: Free. Free. C ...

  10. Systems Thinking

    Systems thinking is an approach that designers use to analyze problems in an appropriate context. By looking beyond apparent problems to consider a system as a whole, designers can expose root causes and avoid merely treating symptoms. They can then tackle deeper problems and be more likely to find effective solutions.

  11. 7 System Design Interview Questions to Know

    System design questions grant candidates a look into an organization's tech stack and operations and give hiring managers an understanding of the candidate's approach to problem solving. These interviews should ideally proceed like discussions, with the candidate thinking aloud about scalability, storage, reliability, and other aspects of ...

  12. The Six Systems Thinking Steps to Solve Complex Problems

    A quick overview of common problem solving techniques indicates that most of these methods focus on the problem rather than the whole eco-system where the problem exists. Along with the challenges of global economy, problems turn out to be more complicated and sometimes awakening problems.Climate change, traffic problems, and organizational problems that have developed through the years are ...

  13. System Design Examples: 4 Problems & Solutions

    We will, of course, be solving the problem in a distributed setting. In other words, the solution should be highly available and consistent. This means that we will be using several nodes that communicate with each other. ... a 3-step framework to solve any system design problem, and you watched us design simple systems from scratch. Plus, you ...

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

    In our new course Solving Complex Problems: Structured Thinking, Design Principles, ... in order to significantly increase the likelihood of success in developing more complex systems. Implement effective problem-solving techniques, including abstracting the problem, idea generation, concept development and refinement, system-level thinking ...

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

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

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

  18. How Design Thinking Leads to Better Problem Solving

    And design thinking is one way to make these interactions easy and intuitive. Design thinking restructures how a business executes ideas, plans strategies, and solves problems by repurposing its understanding of the end users. It identifies what they need the most by highlighting problem areas and empowers employees to address the issues ...

  19. Design thinking as an effective method for problem-setting and

    Organizations in a wide array of fields and disciplines are increasingly using design thinking as an innovative process to create products or services that address wicked problems in their industries. Design thinking, a method of creative and collaborative problem solving originating in the tactics of designers, is a product design and development process that is, more and more, being used as ...

  20. PDF Design, system, value: The role of problem-solving and critical ...

    thinking and problem-solving mode: (1) the design approach, (2) the systems approach, and (3) the values approach. Even though the present Swedish technology curriculum does not explicitly mention these skills, the teachers say they incorporate critical thinking and problem-solving in different settings within the subject of technology.

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

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

  23. Design, system, value: The role of problem-solving and critical

    The relationship between elements of problem-solving and critical thinking in the three approaches (D = design; S = system; V = value; PS = problem-solving; CT = critical thinking). When the teachers in our study said they incorporate critical thinking and problem-solving capabilities as well as other skills like creativity in technology ...