Complexity has a specific set of qualities that make it worthy of its name. Firstly, it involves situations and circumstances that feature dynamism, many overlapping interconnections, and adaptive, continually reconfiguring relationships. It’s characterized by change and uncertainty. If you see these things together you’re assured of a complex situation.
In 2025, complexity is all around us. The volume, scope, and array of complex situations we face can feel overwhelming. Design can help.

Design’s Answer to Complexity
Design is not about finding the "right" answer, as complex systems do not lend themselves to creating “solutions”. Instead, design involves managing a range of viable possibilities, exploring potential ways to respond to complexity, and embracing the fact that systems can evolve unpredictably. But what it doesn’t do is accept passivity.
Design is an active engagement with systems — meaning it helps us to create hope and pathways forward, rather than accept things as they are.
This isn’t to suggest design creates a linear path from intention to outcome, but it increases the likelihood we will get to a destination we seek, rather than be blown off course. How is this the case? In this issue, we look at design’s relationship with complexity.
Designing for Complexity: Key Features
What does it mean to design for complexity? There are many methods and tools that can help, but all can be supported by adopting the following 8 principles:
Embrace adaptability - Design systems (or services) that can evolve and respond to changing conditions rather than trying to control all variables. Building in flexibility and adaptability to the design — a central core, with features that can be adjusted — is best. The concept of “best practices” doesn’t apply here; it’s adaptive, learning-based, practice instead.
Build modularity - Create components that can function independently while connecting through well-defined interfaces to enable easier maintenance and updates. This is where a core or ‘spine’ based on values can be useful. These are the things that are central to your identity (or role).
Implement redundancy - Include backup systems and alternative pathways to increase resilience against failures. Create alternative options for achieving goals in advance, even if there is a preferred option among them.
Incorporate feedback loops - Monitor and evaluate what you create by creating feedback systems. Build in mechanisms that provide information about system performance, sensemaking and learning that enable self-correction.
Design for emergence - Well designed evaluation and monitoring systems will help allow beneficial patterns and behaviours to emerge through interaction rather than dictating all outcomes. Be open to seeing a range of outputs and outcomes guided by your values (that core).
Focus on relationships - In the development of your designs and their prototyping, pay attention to how components interact rather than optimizing components in isolation. Look at creating interactions at the development stage, not afterward.
Accept uncertainty - Design with the understanding that unpredictable events will occur and perfect foresight is impossible. Predicting the future state for your product, service or system isn’t a reasonable outcome, but you can anticipate a range of possibilities that can shape how you move forward.
Use simplicity strategically - Make individual elements as simple as possible while acknowledging that the overall system may remain complex. Complexity arises from many simple components interacting with one another; the whole is far more elaborate than the parts that create it. But beware making things too simple.
In future editions, we’ll dive deeper into these eight principles and draw together case studies that show how to do this in practice.




Very permaculture mate! I like it (just completed a Permaculture Design Course so it’s in my veins now) 😉