The projects written by the development teams, both legacy and new, tend to be written in whatever way the lead developer fancies at the time. There's virtually no coding standards applied and projects are regularly written in different languages and expected to be able to communicate with each other.
There is no one person guiding the development projects, which means they suffer from differing levels of technical know-how, especially when it comes to management. This manifests itself in developers never being given time to address technical debt or improve the underlying systems, always being expected to keep adding to monolithic applications built on very shakey foundations in order to keep users in the rest of the business happy. Until something breaks or a security hole is discovered, then it suddenly becomes a priority.