Variability and uniformity in designing systems for resilience

“Resilience is the capacity to recover quickly from difficulties, the ability to spring back into shape”

If this is the accepted definition of resilience then it’s not surprising that most resilience thinking is around getting things back to the steady state it was in before whatever shake-up occurred. It’s easy to see how traditional management techniques from a mechanistic worldview would assume that resilience in systems is best achieved by uniformity throughout the system, just as manufacturing ball bearings is improved by removing variation and the tolerance for variability.

I wonder if maybe we don’t want to ‘spring back into shape’ but instead form a different shape, evolve based on our response to the difficulties. From this idea I visualise five layers to a system that are organised by how much variability and uniformity is required to ensure the system is able to adapt to difficulties.

The top layer is for Individuals, it has the most variability and least uniformity, and allows the people in the system to be flexible, creative and solve complex problems in innovative ways.

The second layer is the Team. This is where we start to see some uniformity applied to things like roles and responsibilities but still have more variability to empower the team to change the ways they work with ease.

The third and middle layer is Process. Here there are equal amounts of variability and uniformity. There are standardised approaches to completing step-by-step processes but those processes are open to inspection and adaption. Given that there is an equal intersection of variability and uniformity, Process is where changes that affect the whole system can be made most easily.

The fourth layer is the Applications layer. This has greater uniformity with some variability expressed as fixed functionality in the application that can be used in a variety of ways.

The fifth and final layer is Data. This should be as uniform as possible with minimum variability, using a fixed architecture to . Variability down here prevents reliability and so should be avoided.

Thinking of system design from this intersecting scales of variability and uniformity helps to inform how we can build systems that are resilient to difficulties through being able to adapt to change rather than always seeking to return to a previous steady state, which doesn’t prepare the system for facing future difficulties.