OdeToCode IC Logo

Architectural Tragedy of the Commons

Wednesday, October 12, 2011

From Wikipedia:

The tragedy of the commons is a dilemma arising from the situation in which multiple individuals, acting independently and rationally consulting their own self-interest, will ultimately deplete a shared limited resource, even when it is clear that it is not in anyone's long-term interest for this to happen.

Some rights reserved by heyjoewhereyougoinwiththatguninyourhandIt might seem odd to take a term related to environmental issues and apply the term to software, but please allow some poetic license around the meaning of "shared limited resource".

The architecture and design of an existing application is a resource providing a benefit to the developers and operational people who have to build features in an application and keep it running in production. It's a limited resource since misuse will reduce the benefit for everyone.

"Architectural tragedy of the commons" is a term that jumped into my mind a few years ago as something that can happen (not always, but sometimes) when:

- developers build new features into a  product without talking to each other (individuals act in their own self interest.

- teams build new features for a product without coordinating (teams can act in their own self interest).

- companies go through developers like Netflix goes through business plans (in a body shop, nearly everyone acts in their own self interest).

You've probably worked on applications where shortcuts and hacks make a codebase fragile and inconsistent. Maybe you've even worked on products where the developers took shortcuts that made the application more difficult to deploy and operate (thus making the IT department's life miserable).  This are examples of what I'd call an architectural tragedy of the commons.

Tree-iconCommunication and leadership can commonly prevent an architectural tragedy of the commons, and often leads to sustainable design.

Gravatar Ilia Jerebtsov Wednesday, October 12, 2011
The uptake is that software is a renewable resource. We stake out our own little field when we start a new project, and eventually that field might become depleted of its cognitive simplicity, but luckily we can just move to another field and start over. We have a limitless landscape to do whatever we want. That's my favourite thing about software development.
Gravatar zvolkov Wednesday, October 12, 2011
This is somewhat related to the broken windows syndrome and my own pet theory of "economics of time"

Basically, if you invest time, it must save you time in the future. If, on the contrary, it requires maintenance, you're depleting your limited resource. Perhaps I should write a blog post about this.
Gravatar zvolkov Wednesday, October 12, 2011
@Ilia Jerebtsov "depleted of its cognitive simplicity" -- this is a great way to say it! The problem is: "moving to another field" is not always possible, and even if YOU move, somebody else may still have to work your old field.
Gravatar scott Wednesday, October 12, 2011
@Ilia - I love the phrase "depleted of its cognitive simplicity". I want to make a laptop sticker with those words.
Gravatar gill bates Wednesday, October 12, 2011
K Scott Allen needs a CAPTCHA, or he should buy some jackets ;*)
Comments are closed.