“The tragedy of the commons” in software development

The tragedy of the commons is a situation in a shared-resource system where individual users, acting independently according to their own self-interest, behave contrary to the common good of all users by depleting or spoiling the shared resource through their collective action. 


Remind you of anything? Toilet paper in 2020, perhaps?

I’m struck by how often this pops up in software development:

  • Hitting refresh over and over when your test environment won’t load because everyone is overloading the dev server by hitting refresh.
  • Teams don’t volunteer to upgrade dependencies because they all have their own milestones to meet, and eventually an upgrade would be a nightmare because they waited too long.
  • Disk space, disk space, disk space. “A few extra MB won’t hurt” repeated thousands of times until the drive is chock full.
  • One vaguely named variable ain’t no thing, but 5 years of vaguely named variables equals one unmaintainable codebase.

The classic broken window theory is a part of this. Once someone sets the precedent, it’s hard to walk it back. Another part is choosing short term over long term, the enemy of growth.

Those two plus a healthy dose of regular old human greed adds up to the tragedy of the commons.

I have no useful insight here other than to say that it exists, and sometimes naming a thing is enough to prevent it.

Thanks for reading! Subscribe via email or RSS, follow me on Twitter, or discuss this post on Reddit!

search previous next tag category expand menu location phone mail time cart zoom edit close