My product management toolkit (50): Systems Design
A good few weeks ago I started learning about systems thinking. Thus far, I’ve learned that a system consists of parts that are interconnected. At its core, systems thinking is about identifying the different parts of a system and understanding the relationships between these parts.
It’s funny that when you google “systems design” you get a lot of results related to “design system”. Let’s be clear, systems design and design system are two different things! A design system provides a centralised repository of design patterns and principles to apply to the user experience of a product as it evolves.
In contrast, system design is about creating a shared understanding of the system that you’re about to build (or modify). This means creating the different parts that make up a system and figuring out how these parts should work together. I like this explanation by Deirdre Cerminaro, Director of Systems & Strategy at IDEO: “As a systems designer, I specialise in zooming in and out. I’m constantly jumping back and forth between the big picture and the little details.”
As we’ve seen in my earlier post, a system can be anything and everything. Think about designing a customer relation management system, a school curriculum or a skyscraper building. They are all systems, and each system consists of parts that affect the system. These parts are interdependent and therefore need to work together.
Russel Ackoff, pioneer of systems thinking, used to talk about the discipline of architecture as a great example of systems design. If you’re designing a tall skyscraper, you can’t just design the lobby, the meeting rooms or the parking garage in isolation. These parts all need to work together to form an office building (worth watching this great Russel Ackoff talks here you want to hear more examples).
Unified Modelling Language (UML) is a visual method we can use to design systems. Creating a UML diagram like the example below helps with mapping the different elements, and raising questions about how the elements are connected to one another. As product designer Shek Man Tang explains, most these questions will have a domino effect: “No sooner have you answered one question then you’re left with another that needs answering. How do these elements feed back to one another? How does this system interact with other systems?”
There are number of principles of ‘good’ system design and I picked a few that resonated with me, mostly because they feel universally applicable:
- Design for simplicity — Whilst you might need to future-proof your system, don’t try to cater for every single edge case or scenario that might occur in the future. Reduce complexity as much as possible.
- High risk items first — Work on high-risk items first in order to reduce risk. Because of their risky nature, these items are the most likely to change, causing change in other parts of the system as a result.
- Design for scale and ‘evolvability‘ — There’s a fine balance to strike between reducing complexity and designing for scale. A system will evolve, especially as the environment that it’s part of scales. For example, when designing a system you can distinguish between elements that are likely to remain stable and those that will change, and put extra effort into designing interfaces for those elements that are likely to change.
- Group data and behaviour — If you’re designing a software system, it’s important to group together data and the behaviour or log that operates on it. This is to ensure that when the data changes, the behaviour changes accordingly and vice versa.
- Design the interfaces — Especially when there are a lot of different subsystems, it’s important to have interfaces in place. An interface will help to make the flow of information between different systems (or parts of a single system) feel more accessible an intuitive.
Naturally, the type and number of system design principles that you apply will depend on the type of system you’re looking to create. For example, there will be a marked difference in the weight of certain principles if you’re designing a digital system (see a great example here) compared to building an air transportation system. In both examples, however, the discipline of systems design will help us in being deliberate about the behaviours and interactions of the components of the system.
Main learning point: I find that the word ‘holistic’ gets overused, but it feels appropriate to use this word when talking about systems design. Systems design feels like a practical application of systems thinking, making us think about important aspects such as ‘reusability’ and ‘complexity’ when designing a product or experience.
Related links for further learning: