The developing body of science and thinking around Complex Adaptive Systems is incredibly fascinating, and feels to me to be the big missing element of aligning established enterprise technology bases with the opportunities of modern innovative practices like DevOps.
DevOps has been an amazing development in our industry. But I repeatedly see the gains dwindle when it meets the real world complexity of large enterprises and their tangle of interrelating systems.
That is to a great extent because a modern digital service is often underpinned by complex adaptive systems - systems comprising a large number of interrelating elements, where overall system cannot fully be understood and predicted even if each element itself is understood.
Such complex systems have some key characteristics which make them fascinating but difficult, which include: emergent behaviours, evolution, observer dependency (different stakeholders have a very different perspective on the whole), path dependency (history matters).
(This is a really interesting area of study, not least because the sheer difficulty of producing clear and deterministic models of the system poses a tricky philosophical challenge to a scientific field which instinctively wants to produce deterministic models)
The nature of these systems is fascinating but so is the nature of the ways in which they fail. This is a seminal paper by @ri_cook from the University of Chicago. https://web.mit.edu/2.75/resources/random/How%20Complex%20Systems%20Fail.pdf
I love the notion in that paper that a complex system is constantly in a state of multiple low-level failures, and yet the system can (and usually does) function. Complex systems evolve a certain resilience, both in terms of their own structure but also the humans guiding them.
I find it interesting to think about other classic complex system models, such as the power grid (a huge web of suppliers, carriers, consumers, transactions, demand variations, minor and major faults, that mostly pretty much works despite the complexity)...
...or the transport web of a large city: a continuously evolving, growing, adapting landscape of interrelated streets, hubs, vehicles, actors, problems and challenges, which is wholly unpredictable, and where the impact of events such as accidents is very difficult to predict.
This is what so many of our digital systems look like now. DevOps teams might be responsible for a really significant part of a user's interaction with, for example, an airline. Maybe that's how the mobile app gets built, and some of the backend stuff that drives it.
But when the passenger changes their seat (in one click), things happen. Are they entitled to it? Do we deprecate points? Sell it? Plus: operation systems, CRM, accounting, marketing. How do we stop that seat being sold to someone in a travel agency 10k miles away minutes later?
Here's another good thing from @ri_cook describing how thinking has evolved from the deterministic 20th century view to a newer view built on knowledge of complex systems and their resilience.
You can follow @JonStevensHall.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: