Overcomplexifying, Underdelivering
spectrum.ieee.org
spectrum.ieee.org
https://www.youtube.com/watch?v=rI8tNMsozo0
A lot of problems in software arise from choosing the easy route (i.e. gem install hairball), with no regards for the complexity it could bring into your project. Do this enough times and your project could easily end up like one of the projects described here: a massive mess of complexity that's excruciatingly difficult and risky to change and improve.
Some make serious money out of scope creep in IT projects. Sometimes I think that this must be how the major consultancies are sustaining themselves.
Someone wrote that the /average/ IT project ran 10x over budget. This would be completely unacceptable in any domain but IT.
All but #1 have a structural incentive to make projects bigger the same way a mechanic has a structural incentive to "find new problems." The client always has final say, but people underestimate how hard it is to keep saying "no" to multiple reputable firms all warning you against going too small.
That said, this kind of swindling is far from ubiquitous. There's a philosophy that blindly upping scope is shortsighted, and you do better in the long run by actually representing your client's best interest. Where I worked, I found it pretty easy to surround myself with people who thought this way.
But more realistic initial estimates won't win the contract for your company.
I don't know about the legal situation in the US, but in the EU, the lowest bidder gets the contract. So everybody has the best incentives of making a (sometimes even ridiculously low) initial estimate, and then find reasons to charge more.
And such reasons are always to be found, since requirements won't remain stable over the course of a multi-year projects. They never, ever do. And any change can be sold as an expensive scope creep that costs a few million USD.
If you try to make a giant deal up front that is supposed to encompass all spending and tasks that many managers, engineers, or companies can think of, of course you are going to overrun. Or similarly trying to reproduce/refactor all of the efforts over several years of the predecessor teams of engineers and managers.
And another part of this is that people are bidding, which means you have to be in the ballpark of the other bids, and you probably need to be lower than the lowest bid, and everyone has an incentive to bid lower regardless of the actual scope because they have to make their bid attractive to have an opportunity to even actually examine the real requirements.
But its even harder because estimating even a lone software project is very difficult. Its hard to sell realistic budgets, since business people are often used to interacting with relatively simple to use software like Excel, where it might take a day to figure out the most complicated part of a spreadsheet for a certain purpose. By the way, don't underestimate the power and real value of spreadsheets to business people.
The only way that could possibly work is if the original systems are grossly repetitive and unoriginal (variations on 2 themes, perhaps?).
Clearly there is something very wrong at the planning level of these big, failing, IT projects. Perhaps the temptation to begin by writing down all the commonalities between different software systems and seeing how one big system could do everything is part of the problem. But it's also easy to see how it is tempting to do so.