“We can't impose our will on a system. We can listen to what the system tells us, and discover how its properties and our values can work together to bring forth something much better than could ever be produced by our will alone.” -- Donella Meadows
Relational complexity in software is constantly increasing. Data pipelines become a mesh. A monoliths becomes microservices. Synchronous database transactions become event-driven architectures. Infrastructure becomes DevOps. Software is becoming systems of software.
As technology professionals, we are trapped between the desire for control and the reality of systems. Increasingly, we act amidst ambiguity and uncertainty. We diversify and expand our skillset. Systems challenge our thinking patterns and core mental models.
Fortunately, there are some core principles for designing healthy systems. I don't mean (strictly) scalability or microservices. Three qualities are inherent in well-functioning systems: resilience, self-organization and hierarchy.
Each of the qualities, guaranteed, differ from your current definition. In this keynote, we will explore them from a systems point of view.