Cost of understanding
By having a system which is difficult to understand there are costs which increase:
- Required dev time
- Poor planning
- Single man dependencies
- on-boarding developers
- Difficult to change
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.
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.
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
- Stick to industry standards (new devs can on board quick and it is easy for devs to google common solutions)
- Avoid complexity
- Avoid Bad Design