Software has many attributes, some are benefits, some are costs. Often referred to as technical debt, software cruft can accumulate in a code-base making it difficult to change. I think about this problem occasionally and today I am reminded of another concept, possibly related, the tragedy of the commons. If you’re not familiar with the concept, let me try to summarize it for you.
The tragedy of the commons, as it was originally expressed, relates the degradation of public goods, such as air quality, to self-interest of numerous abusers, who act in their own interests rather than for the common good. Applied to software and to a code-base, this relates self-interest and the accumulation of technical debt in common areas. While the idea is itself interesting, what may perhaps be more notable, is that this is not a new idea.
Upon thinking of this article and having thought more about the commonalities, I began searching for evidence to refute the idea and upon searching I came across the Wikipedia entry for the concept. Beside explaining the concept in more depth and with greater authority, the article lists in it’s examples, the knowledge commons. More specifically it lists source code and software documentation! Interesting, don’t you think?
So what might we conclude if self-interest tends to leave accumulation of technical debt where it is not owned and left in common areas? Perhaps the ownership of common code should become the domain of a specialist team. Since common code is, by its nature of being common, shared by multiple teams then perhaps a representative from each of those teams could come together to form the specialist team.