Hacker News new | ask | show | jobs
by 908B64B197 1909 days ago
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.

5 comments

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.

This was exactly my question while discussing with a few Danish friends who brushed it off saying, “yeah it’s wrong, but it’s not that bad.... while in Denmark they should be willing to live like a Dane”. My argument was whether they would be willing to wear a burka or give up driving as a woman without complaining in Saudi Arabia a not that they are good anywhere. The point is what is wrong should just be called out as wrong and not politically sugarcoated.
> 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.

> 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.

That (the below market rates) is part of the setup to promote outsourcing. A heavily unionized workforce doesn't make it harder to for an organization to increase tech role pay to market rates if it wants to, it makes it fight harder to avoid to doing so.

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.

Can you imagine the scandal if you fully specified a product and they built it and it wasn't even fit for task. Your contractor says "They never said it had to fly, they just sent us 5999 pages of specs about the logo, the color of the seat, the tray-table latch mechanism, etc." You'd look even dumber because you proved you don't understand your own business.

No organization should expand outside its desired core competency. Specialization is for organizations. If you want competency you hire it as a consultant. If you need to check that consultant, hire another.

Hire one company to write the spec and the product. Hire two others, small firms, one in the problem space (tax, airlines, etc) to check the business requirements and one in the software space to make sure spec/dev/test processes are adequate.

> Can you imagine the headlines

Yes, 100% lies written by a bitter communist. Modern corporate media in a nutshell. But the government already took the brunt of that for screwing up earlier. The screwup you mention would be no worse. Partly because the news is hyperbolic and nobody believes it these days - every problem reported is the worst ever.

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?