Great post. I don’t have much to add, but here are some related reads:
On compositionality by Jules Hedges, where he claims (among others) that “the opposite of compositionality is emergent effects” and “interfaces are synonymous with compositionality”
This quote from Brad Stone’s book The Everything Store on the inspiration behind Amazon’s AWS is a nice example of your last paragraph on advice for system designers:
At the same time, Bezos became enamored with a book called Creation, by Steve Grand, the developer of a 1990s video game called Creatures that allowed players to guide and nurture a seemingly intelligent organism on their computer screens. Grand wrote that his approach to creating intelligent life was to focus on designing simple computational building blocks, called primitives, and then sit back and watch surprising behaviors emerge.
The book…helped to crystallize the debate over the problems with the company’s own infrastructure. If Amazon wanted to stimulate creativity among its developers, it shouldn’t try to guess what kind of services they might want; such guesses would be based on patterns of the past. Instead, it should be creating primitives — the building blocks of computing — and then getting out of the way. In other words, it needed to break its infrastructure down into the smallest, simplest atomic components and allow developers to freely access them with as much flexibility as possible.
Great post. I don’t have much to add, but here are some related reads:
On compositionality by Jules Hedges, where he claims (among others) that “the opposite of compositionality is emergent effects” and “interfaces are synonymous with compositionality”
The epic story of container shipping by Venkatesh Rao, which expands upon your last example awesomely
This quote from Brad Stone’s book The Everything Store on the inspiration behind Amazon’s AWS is a nice example of your last paragraph on advice for system designers:
Seven sketches in compositionality explores compositionality (category theory, really) with examples:
Dish recipes
Chemistry, resource markets and manufacturing
Relational database schemas and data migrations
Projects and teams with conflicting design trade-offs
Cyber-physical systems, signal flow graphs, circuits