One really easy way to overcome the prisoner's dilemma is to just coordinate.

Obviously in the dilemma, you aren't allowed to, but if bosses and employees can't come to such an understanding, the trust must be very low indeed. Don't know how you get anything done in an environment that low trust.

Expand full comment

The big difficulty is between the lead and senior programmers. They engage the most difficult questions together, but are in serious career contention. Leads have a very strong incentive to extract good ideas and seed bad ones to protect their position, and they have the default external authority.

The only enduring allocation of authority/responsibility I've seen is the code silo, with people and teams taking ownership. This flies in the face of almost every efficiency and coordination principle, but endures because, as you say, software is about relationships, and it's the only thing that reduces the impact of those relationships.

Expand full comment

"If I change an API that you use, then I either migrate your usages myself or we do it together or I maintain backwards compatibility."

True, but this is only an issue if you're working in an architecture where significant changes are (a) common and (b) disruptive.

If my building changes the mains power supply (like voltage or connector type), we'd have a similar disruption, but fortunately that almost never happens. At some point, decades ago, everybody sat down and said "This proposal isn't perfect at anything, but it's good enough at everything, and we'd all be 1000 times better off if we used the same system, so this is what it is", and they wrote the NEC, and that's it. End of discussion. No clever installers saying "We could be 10% more efficient if we ran a cable through the sink".

In software, 99% of the APIs I use could be this reusable, if only people cared to look at existing standards. I fear that the situation is going to get as bad as the early days of electricity, and the government is going to have to step in and force everyone's hand, and it'll be worse than if people just cooperated on their own.

Expand full comment

The human brain have something called 'Egotism', that we all have. Its about our thinking is inside us, and mostly about our self. Maybe you have noticed in a dialog when you talk about some experience you have, and the other person goes direct into his/hers experience, without listening first. Some definition is: the drive to maintain and enhance favorable views of oneself and generally features an inflated opinion of one's personal features and importance distinguished by a person's amplified vision of one's self and self-importance. With that in mind the software is most of the time made from the individual, and if more people working on the same feature, dissonance will occur. The trick is to be aware of this, and make the dissonance carry the feature forward.

Expand full comment
Feb 8·edited Feb 8

"aligning authority & responsibility"

That doesn't sound too small! If you can solve that you should win a Nobel! ( not sure what field covers that... 🤔 Maybe Economics? )

Expand full comment