Hacker News new | ask | show | jobs
by johngalt 1909 days ago
It's amazing how often giant IT projects like these go off the rails. Exploding costs and garbage implementations. If you start the sentence with: "A 5+ year government IT project that cost over 100 million-" I already know how the story ends.

How do we improve this common scenario? What are the root causes?

The common themes are:

1. Lack of technical project competence at the decision maker level.

2. Scope creep. Where the one true system has to do everything.

3. A 'one-pass' approach where everything is expected to be delivered as a working system at the end of the project.

Even fixing two of these gives us a solid shot at a successful project.

11 comments

4. The requirements are often flat out wrong.

The Phoenix payroll system comes to mind, the Canadian government tried to shift the blame to IBM, but have their hands tied since IBM delivered exactly what was in the contract. It's just that what the government decided to put in the contract has little to do with how they really do payroll.

I was hired as a coder on a fun project like that.

It wasn't a big project, I was the sole coder. What had been sold in was basically a Drupal install with some customization. I made sure they wrote a decent specification before I accepted the job.

I delivered on time and we had the first test with the client. Everything went very well, and the client seemed happy.

On the client side, the project was then moved from the project group to those who'd actually be using it. And then came the question from the new manager:

Mgr: "This looks nice, but what about all the other sites?"

Us: "Other sites? The contract was only for one site."

Mgr: "Well, the whole point here was to have 17 sites with site-specific content written by site-specific users, managed centrally with a unified look as if it was one single site."

Us: "Err... that's not what the specification we agreed on says."

Mgr: "Well, as it stands this is useless to us."

And so the simple three day job turned into many weeks.

Many appropriately paid weeks, I sincerely hope for you!?
Since the specifications were sufficiently clear, the client could indeed see rather easily that the solution they wanted was not what was agreed upon.

Had I not insisted on such detailed specs though, it would likely have been a lot harder to get them to pay up.

So yeah, worked out fine for me, but taught me a valuable lesson.

The Danish government tried to getting a new tax collection system built. The specificatio was 6000 page, not including the tax law that needed to be implemented.

It facinates me that no one ever stopped to wonder if was actually possible to implement all that.

It failed horribly, costing billion of DKK in implementation cost and even more in taxes that couldn’t be collected.

The other problem here is that politicians are either oblivious or simple don't care about the cost associated with complexity in the laws. On top of that, the other unfortunate dynamic that exists is that politicians all work to get their little special case into new bills so they can point to that when their constituents ask how they influenced the new law.

Taken together, the complexity of the law just accumulates. Tax law in Denmark being a particularly gross example.

I don't doubt that writing a new laws is complicated, but if I write code, and realise that I constantly need to tack on more code to handle special cases, then I will normally revisits my design. It is not my impression that politicians do the same with laws.

One major issue, at least with Danish law makers, is that they want to target special groups, but that would be discriminating, so instead they attempt to target the behaviour of those group. This of cause will affect a number of people who where not in the original target group, so they add on exceptions and and details to narrow down the law. Also there never seems to be any clean up in the laws.

If your laws/rule exploded from a few hundred pages to 30.000 pages, you should really revisit that thoughts behind that law.

It's crazy out here in DK. The most embarrassing example of such crazy targeted laws is the "hand shake with the mayor" requirement for new Danish citizens, clearly target at a certain ethnicity that would hesitate to do just that. The intent is to make it difficult to that ethnicity, the result is just a veiled law that makes them "appear" just enough secular and non-discriminatory.

There's a lot I love about life in Denmark. This is just to say that no place is perfect and DK also has stuff that all Danes should be rightly embarrassed about.

> the "hand shake with the mayor" requirement for new Danish citizens

One might wonder what would happen do Danes abroad not respecting the local customs in certain conservative countries.

> 4. The requirements are often flat out wrong.

Isn't this basically a given? I find it hard to imagine that any organization could come up with good, complete requirements before they've had any software written.

Which is why most governments struggle with big IT projects.

Governments by their nature tend to approach everything from a legal perspective.

This then means the requirements of these big IT project end up being a mass of legal documents which try to describe what is being delivered by whom.

Then when the whole thing falls apart it ends up in the courts and the court then decides who promised what based on those original contract documents.

I was in a pub with a relative, and we got chatting to another random patron.

The relative was asked about his CS job, and at some point details were being discussed. The relative said something like “we have made what was asked for but because we have run out of time, that’s what the customer is getting. We know what they actually want and need, but that’s not in the contract”.

The person we were talking to was the customer.

Sounds like a good way to get sued for breach of confidentiality clauses
People talk about disastrous contracts in the pub all the time. Actually getting sued is very rare.
> Then when the whole thing falls apart it ends up in the courts and the court then decides who promised what based on those original contract documents.

Something government contractors learn to be good at is following a spec. These lawsuits often end-up costing the taxpayer a fortune for the government to be told that everything was delivered according to their spec.

The consulting company will then recoup it's losses from the lawsuit using their hourly billing clause where it stipulates that they can modify the software for X$/hour.

Everyone struggles with big IT projects.

It’s also why Gene Kim & co wrote “The Phoenix Project” [1].

Everyone involved in software-building, non-tech industry should read it.

In the end it’s just lean turned agile software dev. Reduce waste.

[1] https://www.amazon.com/Phoenix-Project-DevOps-Helping-Busine...

Take a triple bottom line solution to the problem.

Take a look at how kmalloc_obj is going in DragonFly BSD.

Government IT challenges three technical team leads to get to solution like kmalloc_obj. Performance pays for 1st prize and the rest get less money. Cut the time horizon from start to finish for the piece work to 18-months. Spread the risk of total failure to zero.

Right. But the client should never come up with the detailed spec. If they know what needs to be done it'd literally be faster for them to code it themselves.

They should never produce more than a page or two of specs, outside of the central task itself, because most everything will change when under production anyways. A project like this is big enough that apps became a thing, and fundamentally changed twice, in the lead-up to the actual work.

And all the little things they could control are just bikeshedding, best done by an impartial designer or by A/B tests.

Yes, but your way would likely strip a friendly consultancy off a contract for a couple million of your favorite currency to produce said specifications.
> If they know what needs to be done it'd literally be faster for them to code it themselves.

They would need to hire software engineers and, quite frankly, most municipal governments aren't capable of adequately compensating these positions.

> They would need to hire software engineers and, quite frankly, most municipal governments aren't capable of adequately compensating these positions.

Of course they are, because they already are compensating them plus contract management overhead on both sides of the contracting arrangements (which are usually made even greater because they have different contractors for different phases of an effort), plus contractor profits.

Aside from simple corrupt motives (both by responsible managers involved in deals directly and higher-level politicians who favor inefficiency of kicking things off to industry because it buys support from the beneficiaries), this is done because it spreads the blame in the event of failure, which is seen by many involved as more important than maximizing likelihood of success or cost efficiency.

But citizens (well, at least those not corruptly benefitting) shouldn't tolerate that.

> Of course they are, because they already are compensating them plus contract management overhead on both sides of the contracting arrangements (which are usually made even greater because they have different contractors for different phases of an effort), plus contractor profits.

They have the budget for it, that's sure. But more often than not the municipal workforce is heavily unionized and has paygrades that are below market rates.

Right, so they also don't have the capability of writing the spec. Knowing that they should just hand it all off.
That would be even worse! Can you imagine the headlines where it's a private company that tells the government what they need to buy AND sells it? Horrible conflict of interest.

The best solution would be for government IT to simply be competitive with the private sector for talent acquisition. That would probably mean that most senior software engineers will end-up being above the mayor's paygrade however.

Basically the story of most govt IT investments.
Have you worked at big companies outside tech?

Their IT budgets are often ginormous with very little to show for it. Consulting havens. Slow, if at all, moving project organizations.

It’s about size, budget models and competences.

Time for another rant:

Note that Sweden have implemented “new public management” NPM which basically pushes government agencies to govern like the ever oh so successful free market companies.

This has had many really bad side effects since the 90s and it’s right up the neoliberal alley.

In my book it’s just silly and something only professional politicians together with consultants can cook. But it’s a different story, really.

This sort of anti-government comment seems to crop up regularly.

My observation of corporate organisations attempting to guide software development is just as bad.

I’m a proponent of doing these things in-house, however that path is far from straightforward and has masses of pitfalls too.

And guess who just bought another expensive IBM solution for payment management?
Projects are necessary for things that are built to last and not change much during their lifetime:

- a bridge

- airplanes

- most houses

- etc

Hardware comes to mind - it’s all hardware on the list, basically.

Software (outside certain realms ofc) like this? I’ve been, like many others here, doing this software thing for 20+ years now.

Big and small, I’ve basically never seen anything spawned from a project-driven organization actually deliver great results.

Most software is supposed to change, indefinitely - that’s the point!

Everyone in this day and age should know that requirements change over even short periods of time, so why even bother trying to pin them down in detail up front - you’re going to do everyone involved a disservice.

There is something to this agile thing and a “project” is it’s anti-pattern.

Not mention how much a quick feedback loop will learn you about the operation side of things.

Operations and change, it’s all you can build for and that is best done one step at a time.

(This joke of a platform is spread across multiple (5?) vendors/partners no less. A couple of them probably started just for this, backed with vc funding. It’s most likely a glorious mess!)

End rant.

I suspect that one cause of this is the fact that these contracts need to be rendered for, which means stipulating the requirements at the beginning so bids can be produced. So a change of approach would necessitate a change in how how contracts are awarded.
What you describe is the real change now when “digitalization” has popped up again. Back to the future!

It’s not going to be a technological shift - it’s a different approach to software and forming teams around it.

I’m writing this and it kind of echoes Brooks words in “the mythical man month” - it was written in the 70s.

The trick is to make your projects tiny, not big. Instead of "build an all-encompassing system that does everything" you do "solve this very specific business problem". You could call these little projects sprints or something.
> The trick is to make your projects tiny, not big.

Gall's law:

> A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.[9]

* https://en.wikipedia.org/wiki/John_Gall_(author)

Oh, be careful.

At my previous employer there was the concept of the "90 day sprint". Top management use the term without irony. All they have done is substitute "sprint" anywhere you would say "quarter". So now they are agile. I wish I was making this up.

Yeah, it’s not about what words you use, it’s about how you act and work.
Think big, act small comes to mind.

No tricks really, just common sense, right? :)

There should be laws the require the use of open distributed extensible protocols.

That means the government comes up with a way for the parties to collaborate and just enforces that. So the actual implementation is open to competition.

Things like communication protocols or extensible APIs or schemas for exchanging APIs.

Also internal company politics. What would fix much of this, for many projects, is a very experienced product person with final say over every feature, reporting directly to the CEO / board, and outranking everyone else in terms of decision making.
Sure, having skilled people with the right to make decisions solves almost everything.

But who decides who is skilled enough? Then we are quickly in the realm of politics ..

Someone skilled is less important than someone who’s empowered. These projects fail because of SVPs and CXOs who get to bully their favourite features and requirements as priorities rather than having someone taking a holistic view of the roadmap.
> But who decides who is skilled enough?

Trial and error using a free market place.

When we are talking about centralized government institutions - then we kind of left the free market place.
Well, this thread gives an example of a private initiative that provides a better alternative. :)
And the mandatory governments solution trying to block it.
Sure, but people like that are expensive and make too much trouble.

How about we give you a 23-year old recent grad instead?

In case anyone wants to read some research on the success rate of IT projects Standish Group's Chaos Reports are a good place to start.

I read the 2014 one as a part of our project management uni course, but couldn't find it with a simple Google search so here's the 2015 one:

[pdf] https://www.standishgroup.com/sample_research_files/CHAOSRep...

Many projects push technical debt and cut the wrong corners to stay on target.

It looks like a success until you ask operations and people maintaining the deliverable.

This is usually not factored in and ends up at at different cost center.

You almost never get the full picture of continuity when dealing with a project organization hence it’s really, really hard to judge.

This article and report was from awhile ago, but it was around only 1/3 of IT projects are completed ‘successfully’:

https://www.zdnet.com/article/study-68-percent-of-it-project...

I once interviewed with a company that had been hired by the UK government to create a system for one of their agencies. They told me that the system had 1000 requirements (literally) had already been implemented once and failed but they wanted to have another go. Boggles the mind (and I refused their offer).
> It's amazing how often giant IT projects like these go off the rails. Exploding costs and garbage implementations. If you start the sentence with: "A 5+ year government IT project that cost over 100 million-" I already know how the story ends.

People don't notice when things go right.

What about all the 5+ year, $100M projects you didn't hear about, because they never made the news, because the project went smoothly?

Even in general conversation we tend to vent about how bad our day/week was, and not how awesome something went:

* https://en.wikipedia.org/wiki/Negativity_bias

D4. Not having the necessary data available through (good) APIs for everybody to use.
Cities are ran by politicians that in most cases are too incompetent to do anything better with their lives. When incompetent leaders make decisions, the incompetence is flowing to most, if not everything they do, including this kind of projects. There is no immediate fix for this situation, unless the decision would be made by some kind of city manager or board of experts that are recruited based on competence and held accountable for the results (up to prison, if needed). The old story with "politicians pay with their mandate, they will not be reelected if they fail" is a story for toddlers, that is not a punishment on par with the damages they make, will the Stockholm mayor pay back 100 million dollars?
I'm sure people will be lining up to take these board positions when the punishment for project failure is prison.

Maybe that's a little far, no?

Or why not execute them instead? Worked very well for ages ...

More seriously, there usually are no simple solutions to complex problems. And government is a very complex problem. So many people with so many opinions - and everyone involved afraid to say one wrong word or make one wrong decision. I don't think more fear helps there.

I mean - prison for corruption - yes! But prison for incompetence, no. Then you also have to jail the people who put the incompetent person there in the first place and those people and so on.

> prison for corruption - yes! But prison for incompetence, no.

And how to decide which is which? Effectively there's not much difference

Just take back the salary when the city is net negative from their "experiments"
Yeah, but would you like to have your salary reclaimed later on, if they are not satisfied with your work?

Could you do calmy your job then? Or would the anxiety made you even more prone to misstakes?

Just make them responsible for the damages and it is no longer econimically viable to give projects to the bidder with the highest kickbacks but rather the ones that can acutally do the job.
I agree with this, and have seen it first-hand.

Worse, I have seen not enough people run for open council positions, so anybody willing to fill out the paperwork can ‘win’ without anyone in town voting.

Just have everyone do PMP. Project management problems solved.