Software complexity and the Roman Empire

Posted on Mar 18, 2018

Image

Read the following lines and tell me what it reminds you of:

The answer to these crisis and challenges is to build up structures — say, bureaucratic or military — in response. Each time a crisis is faced and solved, society finds itself with an extra layer of complexity. Now, Tainter says, as complexity increases, the benefit of this extra complexity starts going down — he calls it “the marginal benefit of complexity”. That is because complexity has a cost — it costs energy to maintain complex systems. As you keep increasing complexity, this benefit become negative. The cost of complexity overtakes its benefit. At some moment, the burden of these complex structures is so great that the whole society crashes down — it is collapse.

If I remove the words like “society”, “military” or “bureaucratic”, you might very well think it’s an extract from The Mythical Man-Month, but it’s actually an extract from a lecture describing the fall of the Roman Empire (link if you want to read more).

A HN user pointed it out and is very much right. It feels like traditional software complexity. When working with our software, we’re faced with new issues every day: new business requirements, bugs, support for legacy users, etc. If the answer to those new requirements involve adding more complexity, we’re in trouble.

You know, that time when the product manager comes screaming and running saying: “we need to add X feature before Monday, because we’ll be featured in Y publication”. And our solution is: “just patch it in somehow, disable that module, load that other dynamically and pray for the best”. Adding these short-term solutions is simple at first, but (and I’m citing the Roman quote here), as complexity increases, the benefit of this extra complexity starts going down. At some moment, the burden of these complex structures is so great that the whole society (software) crashes down — it is collapse.

I honestly don’t know what’s the answer to this, it greatly depends on the teams and the products. The only important thing to point out is that we should always be aware of that “marginal benefit of complexity”.


This post was automatically migrated from Medium. It still lives at: https://medium.com/@santiagobasulto/software-complexity-and-the-roman-empire-77acbc4bf733