How do Committees Invent? (1968) [pdf]
melconway.com
melconway.com
Mel wrote an influential paper on coroutines and compilers, "Design of a Separable Transition-diagram Compiler", which included the first published explanation of the concept proposed organizing a compiler as a set of coroutines. Several compilers based upon his approach were built in the early 1970s at SRI and at consulting firm Polymorphic.
Mel also applied for and received US Patent 6272622, Dataflow Processing With Events, which expired in 2019. The patent is very broad and insightful.
The competition completely failed to see the advantage of that approach, and so failed to compete. At Sun Microsystems, for example, the directory server team was very far-flung from the Solaris Security team that owned Kerberos support, and neither had anything to do with DNS in any Sun products, and Sun never did anything about that in part because Solaris was seen as a cost center while the Directory Server product was seen as a profit center.
I thought he covered it well. He considered the temporal aspect of orgs, which meant that software, over the years not only mimic the org, but every org that had ever been there over time.
edit: oh, and unexpectedly, he's still around and on twitter. https://twitter.com/conways_law
In many different ways throughout this seminal paper, he seems to be saying they don't.
An important enough question raised by Conway's Law to merit the title of the piece.
"To the extent that an organization is not completely flexible in its communication structure, that organization will stamp out an image of itself in every design it produces."
"The larger an organization is, the less flexibility it has and the more pronounced is the phenomenon."
Or maybe he is saying good luck, you've got me and pleading for help.
"philosophy promises to unearth basic questions about value of resources and techniques of communication which will need to be answered before our system-building technology can proceed with confidence."
in his final sentence.
- diligence to propoerly research the domain and provide defined solution(s)
- leadership with courage to make the right choice that may have risk
- comittment from stakeholders to fund the scope of the initiative
- the team's grit to see projects through to the end (and not leave things half-refactored)
If any of the above breaks down, you get the problem of half-baked solutions that only end up making things worse by adding additional complexity.