Essays

Writing

Two essays on systems design.

Dreaming at scale

Our built landscape is the intersection of many people's dreams. Each of the buildings we see around us, the plots of land, the gardens, the trees: each thing was at one point just an idea. They are scaffolded by natural physics and by our aesthetics, rules, policies, guidelines, expectations. Together these form invisible networks, a fabric that connects people and other entities in the neighborhoods around you. As systems designers we are expected to understand this fabric and extend it.

Developing a systems perspective for describing and extending real-world systems is hard. We are trained and rewarded for deep domain expertise, even when the challenges in front of us are multidisciplinary and difficult to understand, let alone model. We are trained to be direct, whereas systems have subtle, slow and emergent effects that take a long time to show. Our directness is often at odds with the world, and the side effects of our collective actions often dominate the intended consequences. The models we do build have their own inertia. When we meet something novel, a platypus, it bursts the previous frame.

Software tools can help us find new ways to work together, to see issues more clearly, to predict outcomes, and to give ourselves time to study each issue on its own terms. At scale the touch should be light: systems that are alive, with their own will, reactive, horizontally scalable, rhizomatic and distributed. An ecosystem, or a wilderness, rather than a garden.

The iterative loop

One tool a systems thinker has is iteration over time. The work divides roughly into three phases.

Discover is the phase of understanding the domain and its stakeholders. Identifying stakeholders is harder than it sounds, since by definition we have trouble seeing outside our own perspective, and the set changes from iteration to iteration. Game designers decompose their work into an inscribed layer, where the designer acts directly; an emergent layer, the effects that arise from interactions of simple pieces; and a cultural layer, the effects outside the game. The space we want to act on is emergent, one degree removed from direct control, so the elements we create should leave maximum room for complexity to emerge from their interaction rather than being hard-coded. We decompose a system into entities with state and behavior over time, remembering that the world itself is a seamless whole. With an entity-component pattern the decomposition is by cross-cutting capability rather than by object.

Develop is the phase of building toy models of complex systems. Coordinating many contributors is difficult, and the architecture is designed to decouple them from one another: an entity signals broadly that it is in a certain state or has a certain need, and other observers respond, updating it, rendering it, handling situations, without either side naming the other.

Distribute should happen early and often. In this phase the model is validated against outside stakeholders, against the real world, and against our own expectations. Just as importantly, it is where stakeholders are empowered and new ones recruited. Organizations should avoid driving power to the center, because concentration dissociates a project from its real stakeholders. A measure of success is when new stakeholders can take equity positions.

Reviewed 2026-09-21