Poor planning
For very big projects, spending money on the front end to adequately define the scope and also the performance expectations is important. It also has to be documented in plain language that should also be reviewed by another separate group to see if it makes sense. I'm going through that now with a very small project where I'm working with somebody on the other side of the planet who was born and raised using another language. I'm spending plenty of time documenting so I'm not wasting their time having to redo code due to poor descriptions on my part.
Not only does the start up have to be done right, it should also include milestones that can be checked as the project progresses so errors are caught early. I'm not a fan of huge monolithic "one code base to rule them all" programs. Scope bloat often makes for unsupportable projects.