By having a system which is difficult to understand there are costs which increase:

Required dev time

When devs take long to find out where and how to make simple changes, there is a clear cost involved in difficult to understand systems. Before anyone can safely make changes to a system, they need to be able to understand it. When a system is difficult to understand it often requires long investigations before making any changes, ultimatly increasing a feature's time to market.

Poor planning

Developers can't plan or estimate properly because they dont understand the system, and need long investigations before they can plan or estimate properly.


Difficult to understand systems are often difficult because there is too much to keep track of and many crucial aspects are hidden. This leads to devs missing things, which could cost the company in the form of bugs and down time from bad deploys.

Single man dependencies

When the system is difficult to understands it leads to knowledge being isolated to very few people. When one person investigates a section of the system and understands it, then future stories touching that section usually goes to that person, otherwise there is another delay and cost for someone else to investigate and understand it from scratch.

On-boarding developers

The time it takes for a developer to catch up to speed and become productive is a cost. This is an important consideration due to the poor retention rate of developers. It is very common for companies having to constantly replace developers because they only stay 1-2 years.

Difficult to change

How do you change code when you struggle to understand it. See Cost of change

"To be open to change, a design must be easy to understand."

-Domain Driven Design By Eric Evans

Check out these links for more info:

My design and architecture repo