Usually, the code is read much more than it is written.
More is written - it is harder and longer to read.
And the further you go in support, the more people will read.
In other words, there is not only the cost of writing code, but also the constant cost of supporting the feature (even if nothing seems to change in it - it is still often read).
And if it changes, even more so.
The thoughts seem to be simple, but I have highlighted them in a separate note and in separate paragraphs so that I can reflect on them.
I often find the opinion that 10 additional layers of transitions (without exaggeration - half of them are interfaces with one implementation, and another half are intermediate classes due to the allocated several modules) do not negatively affect the cost of developing and supporting the project…