My fiancée is a senior tech consultant at a big 4 firm and I can say with the utmost confidence that they have zero ability to actually build things. I specifically watched her project manage a multi-million dollar product for a client. Clueless. Consultants are good, organized, hard-working people but they are not technical in the ways most on HN are. And the outsourced dev teams they hire at bottom dollar will just never deliver anything of quality.
I'm a former tech consulting manager at one of the B4 and my experience is that the types of multi-million dollar software projects that they get involved in are lose-lose situations from the start. They are always high-profile, huge projects that a ton of executives, salespeople, etc all have their hands in, and everyone is fully aware that the delivered product is going to be a steaming bureacratic pile of shit with a never-ending list of feature requests and bugs, no matter who they hire. Then they hire Deloitte/IBM/Accenture because Deloitte/IBM/Accenture are so big that they are the only companies that will knowingly take on a losing project as long as they get paid handsomely for it.
And if the project is gonna be a loser anyway, why would you waste your best people on it instead of the C-stringers from your offshored development center? At my B4, the major multi-million dollar government projects like that were basically the company graveyard where you were staffed when literally no other project would take you.
For the actually successful and typically much smaller software projects, we actually had a subsidiary company with a much better reputation that would handle the design and development instead of our offshore dev centers.
What is the solution? How can these huge systems be developed economically and correctly? These government agencies don't have the technical experience to hire and manage their own software developers and, from what people say, the big consulting firms don't either and/or they don't care. But a smaller firm that might be able to deliver a working solution would be seen as "too risky" to be awarded a big government contract when compared to a large, well-known consulting firm.
Why does the government not have more than a handful of people at 18F? Do they think computers are a fad that will go away? Government should be staffed to accomplish its mission, and the mission requires software. 18F should have tens of thousands of permanent employees.
Often the fix is not to build a huge project. For some of these failures they're trying to migrate from a paper system to something as automated as possible in a single step.
Incremental improvements are almost always possible. People have set up websites to submit paperwork where the forms just send an email or trigger a print job when submitted. It's an improvement over mail and faxes.
The solution is that we stop pretending that large projects are a good idea, that technology for the connected world is set-and-forget and having a ton of layers of people is a good idea. Because none of those things help.
Model the system as objects without writing code. Get the methods and properties accepted without writing code. Write a suite of tests for the model. Implement code.
That’s how complex systems don’t have to feel like monoliths.
I used to work for one consultant company like these.
There were many smart people who had crazy startup ideas and technical ability to handle the projects.
Problem was just that they were very expensive, so consultant company used them to field the projects. They'd send them with a masterbullshiter who would take clues from these tech smart folks and bullshit his way to impress the promoters and get the project.
After that the technical team and bullshiter will try to get another project, so it's not same people who are bidding and winning Vs one who are delivering project at the end.
Tech smart and bullshiter are used for fielding project (these cost a lot of money), while subservient and low tech skills and low awareness people are used for delivering actual project.
And there you said it - outsourced. It takes exceptionally good project managers and tech leads to develop a successful product using offshored labor. And from most situations I've experienced or read about, there are very few such managers/leads.