As a system grows, it accumulates technical debt – improvements and cleanup that your really ought to get around to doing. However, no-one ever budgets time for this kind of refactoring and cleanup.
The consequence is that any major change opens a Pandora’s box of interrelated problems. I’m involved in a project where we thought we could simply make a minor change to all 2768 tables, but due various historical design decisions over the year and their complex interdependencies, the simple solution only works for 514 of them.
Complexity increases exponentially – the cost of cleaning up after 2 years is 4 times the cost of cleaning up after 1 year. If you don’t plan regular code maintenance, you are pushing an ever-growing snowball of cost in front of you.