Having led the development of a large-scale, mission-critical system in a complex domain. I can't talk about the specifics of that system, but I can direct you to this architectural philosophy and design pattern blog I wrote many months before I started Elevence, and even before I wrote my playbook. It has become one of my most liked blogs: Software designs that grow with monads, comonads, and type compatibility . And one that has given me some fame.
The story was that after having built software for many years, I started to notice that certain designs inevitably collapsed under their own weight, while others seemed to grow stronger with change. It felt less like a matter of style and more like a matter of mathematics. There are underlying laws about how information and change behave in a system. I wrote up the thoughts in that blog. Purposely cryptic back then, as it makes no sense to give away what is still new. Breaking down some core concepts of the blog:
- Types vs. Flexibility: The core insight!
- Blog Quote: "The goal is to stitch together the typed lower level design with a higher level untyped design that can change over time."
- Serialization and API Compatibility:
- Blog Quote: "Serializing data for transport and for storage is much about breaking program defined types into language standard basic types, and keeping a strict discipline of interpretation to ensure compatibility."
- Monads: The "trace-centric" heart of effects:
- Blog Quote: "...monads are 'trace' centric... Transactional frameworks are monadic constructions."
- Comonads: The "environment-centric" universal pattern:
- Blog Quote: "...comonads are environment centric... comonadic expressions can abstract away their environment."
- Split of Concerns: Typed business logic vs. flexible protocol layer .
- Immutability and Serialization: The foundation of ledger and cloud compatibility.
- Monadic Actions: Compositional types are the safer engines of change.
- Comonadic Context: Extractable reference data are the safer source of data and authority.