This is the first of two or three episodes that draw on Elinor Ostrom’s 1990 book, Governing the Commons: The Evolution of Institutions for Collective Action, and Erik Nordman’s 2021 book, The Uncommon Knowledge of Elinor Ostrom: Essential Lessons for Collective Action.
What I hope is that those lessons apply to the problem of keeping codebases from devolving into unworkable piles of crap.
Ostrom has nine design principles for designing successful commons governance. I mention them all in this episode, and provide Ostrom's summary below. In the descriptions, "CPR" stands for "Common Pool Resource" (that is, a commons). "Appropriation rules" govern extracting "resource units" from the commons. "Provision rules" govern improvement and maintenance of the commons.
I've replaced some of the bolded summaries with my own when Ostrom's had too much jargon.
Clearly defined boundaries: Individuals or households who have rights to withdraw resource units from the CPR must be clearly defined, as must the boundaries of the CPR itself.
The rules governing a CPR are strongly influenced by local context: Appropriation rules restricting time, place, technology, and/or quantity of resource units are related to local conditions and to provision rules requiring labor, material, and money.
Those affected by rules make them: Most individuals affected by the operational rules can participate in modifying the operational rules.
Monitoring: Monitors, who actively audit CPR conditions and appropriator behavior, are accountable to the appropriators or are the appropriators.
Graduated sanctions: Appropriators who violate operational rules are likely to be assessed graduated sanctions (depending on the seriousness and context of the offense) by other appropriators, by officials accountable to these appropriators, or by both.
Conflict-resolution mechanisms: Appropriators and their officials have rapid access to low-cost local arenas to resolve conflicts among appropriators or between appropriators and officials.
Minimal recognition of the right to organize: The rights of appropriators to devise their own institutions are not challenged by external governmental authorities.
For CPRs that are parts of larger systems:
Nested enterprises: Appropriation, provision, monitoring, enforcement, conflict resolution, and governance activities are organized in multiple layers of nested enterprises.
--------
In the podcast, I said "There will always be pressure to deliver faster. There’s been a lot written on reducing that pressure, or resisting it. That’s off topic for these episodes, so I’ll put links in the show notes." Well, I thought there were, but I don't have anything to offer you yet.
Here's a comment from Sasha Cuerda:
"a tactic I have used in the past is ADRs. Basically keep receipts documenting the trade off being made. When my team had a track record of correctly and proactively assessing and documenting risk and those documents kept surfacing in retros tied to those risks materializing, we gained credibility with the non-manager stakeholders impacted by incidents and were able to push back. But def a long game.
"it helped that we had an already established and blessed practice of using ADRs in other contexts. They weren’t initially seen as “resistance” but as part of established good practice."
I did remember a blog post I wrote long ago, warning new agile teams not to deliver too much value too soon before they know how to do it sustainably.
"I find myself advising new Agile teams to go slower than they could. Here’s the thing: at the beginning, they’re probably working on a bad code base, and they have yet to learn important rules and habits. They will find it easy to go faster than is compatible with making the code more malleable. [...]"
But that's not really the same problem.
--------
Image of grazing cattle due to Emilian Robert Vicol is licensed under CC BY 2.0 and was obtained from OpenUniverse.org.