Every time the development team could not grasp what was required. You literally had to exchange 20 emails with them for each specific point. Of course, this just increased the length of time for scope and in all cases furthered the time of the project.
Each stage of the application was over engineered to infinity. Spaghetti code everywhere and nonsensical functions, callbacks, literally everything was what the hell was the developer thinking.
Of course it just about worked. They had to ship something, but it was slow. The UI was painted into a corner, in some cases doing the wrong thing literally crashed the browser because of an infinity loop or took too much memory.
Some apps had about a billion dependencies and therefore could never be secure. I'm not kidding either, it's like the developer was a plumber instead of actually knowing how to code the simplest of things.
There was no way to ever extend it to build atop newer features or have any sort of roadmap for user requests.
In every single time, management outsourced and took the bid from the lowest priced company. How to solve the problem? Start from scratch with a competent local company with an actual design and development process.
Want to know the best bit? One company I know of, who spent $6 million dollars on a project with an Indian company. An in-house developer took 3 months as a side project and rebuilt it from scratch. It ended up being the code from there on in.
I have NIH syndrome due to seeing these issues pop-up time and time again. In my career I've seen well over $15-20m being wasted in projects due to management being completely incompetent and thinking sitting on the phone with a dev team will ensure success.