What Functional Programmers Get Wrong About Systems
Summary
The article argues that production systems are inherently multi-version distributed systems, and that the unit of correctness is the ensemble of deployments rather than any single program. It surveys architectural patterns such as the two-version window, migration ratchet, event sourcing, and temporal databases, discusses semantic drift, and reviews tooling like schema registries and GraphQL checks to enable multi-version correctness, ending with practical guidance to design for the ensemble and deploy safely.