- Legacy systems: the thing is probably old and has had a lot of patchwork done to it by various people, many of whom are retired by now.
- The thing is also large and distributed, which makes noticing potential failures quite hard. There are loads of postmortems on the web about how some minor issue like a line going down caused some cascade of unforeseen problems. There's a lot of lessons being learned about how to solve this problem though, so I suppose there's hope.
- Always on: it's hard to change something once the business is relying on it. Loads of staff need to be shown how it works, which makes it hard to incrementally improve the thing because "how it works" would be something that people would have to be updated on.
- Never finished: large organisations will always have loads of feature requests and bug fixes. If you start responding to some of them, you might find yourself swamped. Either you work on the next item, or you spend valuable time making sure fewer items are fixed. It's a balancing act.