Why is legacy software so much harder to work in?
Why does development velocity slow down as a system grows?
Lots of reasons, sure, but I suspect the biggest one is oft unspoken.
Every new feature comes with the invisible requirement: “and everything else still works.”
Every existing feature, and even past bugs, makes every new feature harder. Every user with expectations is a drag on change.
Feature interactions are hard! And they surprise you. My favorite examples come from The Sims release notes:
Your feature interactions are probably not this much fun.
Software gets harder to change as it becomes part of a larger system, with more users and more uses. Development slows down because it’s useful, and we want it to stay useful. This also makes each change more valuable, because it’s helping more people in more ways.
Don’t be discouraged. Do be diligent, and be okay with being slower. This is the price of success.