- No-one talks: the default one year each
- One talks: the talker goes free, the other gets three years
- Both talk: both get two years
The dilemma is whether to remain shtum and trust the other will do the same or to spill the beans with the risk of an extended stay in prison but the potential reward of walking away scot free.
Given that they are sure the other would be prepared to rat them out, the rational individual's strategy, according to game theory, is to talk even though there is a better group outcome in not talking.
--00--
The Prisoner's Dilemma is merely a well-known example but there are many other games with different setups and constraints. I came across one recently, the coordination game, that I think is interesting from a software development perspective.
In a simple coordination game there are again two players and they must again make an independent decision but in this scenario they are rewarded only when they choose the same option. The idea was introduced in a recent episode of the Cautionary Tales podcast like this:
In his 1960 book, The Strategy of Conflict, the game theorist Thomas Schelling asks us to imagine a couple who lose each other in a department store. It's the 1960s so they can't just call, but the chances are good, says Schelling, that they'll find each other. They'll each think of some obvious place to meet that will obviously be obvious to the other.
The question, he says, is not "what would I do if I were she?", but "what would I do if I were she, wondering what she would do if she were I, wondering what I would do if I were she?"
--00--
Four years ago, in a post not dissimilar to this one, I wrote about boundary objects. A boundary object is something that sits between two collaborating groups and serves as a way of documenting a shared aim, constraints, or knowledge. It needs to be accessible to, agreed upon, and understandable by, everyone whose boundaries they lie on, but each group will use them differently.
In our software world, examples of boundary objects might be Jira tickets (product manager and developers), Figma wireframes (designers and implementation teams), or unit tests (today's developers and tomorrow's).
--00--
Many teams these days, and mine is one, are distributed geographically and temporally but, even in teams that are colocated, the truth is that much communication about work is asynchronous or non-existent. A boundary object serves as an anchor for work when synchronous communication doesn't happen, a place where we can align our mental models.
Until today, I hadn't considered that there's a kind of coordination game being played around the boundary object: we aren't just trying to finish our tasks, we are trying to ensure that my piece fits your piece without us having to talk about it.
A twist in the software development context is that, unlike the department store, the ground is constantly shifting. A developer might discover a technical blocker or a stakeholder might tweak a requirement and suddenly the "obvious" meeting point is in the sports department in the basement, not the cafe on the top floor.
In this kind of scenario, the challenge becomes one of keeping the boundary object up to date enough to allow the coordination game to be played efficiently by all parties. When you're asking "what would I do if I were she, wondering what she would do if she were I, wondering what I would do if I were she?" you will do better when both of you to have access to the same recent version of a shared model.
--00--
It's worth noting that boundary objects are not the only way to approach a coordination problem either. For example, agile methodologies which break work down into smaller pieces and iterate quickly through a plan-do-check-act cycle lower the stakes of divergent models by moving as a group: in the department store metaphor perhaps we'll stay in the same department and keep an eye on each other.
I'm not telling you something you didn't already know implicitly, I'm sure, but I find it interesting to have names for and theory about this kind of thing. It helps to explain why some of our colleagues think a ticket with title "implement the thing" is enough while others will write a three-page specification document focussed on the user experience of that thing.
For me, keeping a boundary object sufficiently in step with the world is less about housekeeping and more mapmaking. I don't want a coordination game to turn into a dilemma, so I prioritise sharing but I also think carefully about how much effort to invest because people have different needs and different opinions on what "should" "just" be "obvious."
And I'm sure we feel the same way about that.
Image: Sangga Rima Roman Selia on Unsplash
