How to make an audit go wrong
Photo by Karolina Grabowska, person sat at a desk counting bank notes by a notebook: https://www.pexels.com/photo/person-counting-cash-money-4475523/

How to make an audit go wrong

There has been a major scandal in the UK recently, around the Horizon software for the Post Office. At the heart of the scandal is bugs (errors) in the Horizon software used to manage financial transactions.

Sub post masters are the people who manage mostly smaller local post offices. They are responsible for making sure that the contents of the till match up to the amounts recorded. This means the Horizon software also doubles up as a way to audit them. The affected sub post masters were accused of fraud, many were fined or lost their jobs, a few went to prison.

I've been waiting for a technical explanation of the root cause, but it hasn't appeared in the news yet.

Interestingly, the problem affected some sub post masters regularly, but others not at all. There's a hint that it might be to do with the work pattern / practices of some sub post masters. I've worked in support teams fixing bugs, and this is unusual. Most bugs affect everyone.

The other interesting feature is that the bug never seemed to work the other way, and show the sub post master had spare money. Only when it was not enough. It's possible that the investigation is only reporting on the not enough case, but otherwise, this seems odd.

I was wondering about what kind of scenario might have these characteristics.

Disclaimer

I'm not related to any part of the Horizon software team, the post office, the legal cases or the inquiry. I have never seen any information outside public news reports, and I have no idea whether this is actually what happened. Or whether this has happened at any company. I'm just speculating.

Possible scenario

  1. Over the course of a month, make payments, add and remove money.
  2. On the last day of the month, in the morning, run Audit A
  3. On the last day of the month, in the afternoon, add or remove a bit more money
  4. On the first day of the following month, run Audit B

You now have two audits, A and B, showing different numbers: apparent discrepancy.

Image is a diagram of the 4 steps and possible preventions listed in the text. It's fine to skip it. Also, there's one prevention idea missing. Definitely skip it.

There are of course many ways to avoid this issue, a few suggestions:

  • Lock down the system once audit A has been run, don't allow any more edits or entries into that month
  • Mark entries as audited once they have been audited once, optionally with a timestamp. If the audit runs again, warn the user that some entries were audited before, and others not
  • Save audit A into a different database table, and reload it on request, instead of re-running the audit query

Incidentally, if you have ever worked on a system that locked down for a few days around month end or year end, now you know why!

One observation about this theory is: there's nothing wrong with the code. Automated tests won't find issues unless someone thinks about the second audit scenario. It's an architectural bug, not a code bug.

What do you think? Does this sound possible? What do you think might be the root cause? (Please don't comment if you are in any way related to the investigation, the inquiry is still under way).

#debug #root cause #coding

Sarah Eggleston

Plan and track projects | fflow.io | Superpower: working with tiny budgets | Cancer warrior ??? | Choral singer ??

11 个月

Thank you Lori Olson

要查看或添加评论,请登录

Sarah Eggleston的更多文章

  • Getting started in Tech

    Getting started in Tech

    Bootcamps I routinely recommend that employers hire from bootcamps, and they are the best option if you can afford it…

    2 条评论
  • Is your hiring effective for diversity?

    Is your hiring effective for diversity?

    Many companies want to hire broadly, but say they don't get diverse applicants. Why not? I'm a member of several…

    3 条评论
  • What do you include in your resource schedule?

    What do you include in your resource schedule?

    Essentials The core of a resource schedule: Who What When Screenshot showing a resource plan in fflow, with names on…

    2 条评论
  • Are you an email-hater? Or a phone-hater?

    Are you an email-hater? Or a phone-hater?

    Good managers ask what communication channel you prefer when they start to work with a new team member. Understanding…

    1 条评论
  • Zebras and unicorns

    Zebras and unicorns

    You have heard of unicorns: tech startups with a valuation of $1 billion or more. They focus on massive growth and fast…

    6 条评论
  • One tax threshold fits all

    One tax threshold fits all

    Most countries recognise that those who earn more can afford to pay more tax. In this article, I used numbers based on…

    2 条评论
  • One size fits all

    One size fits all

    One size fits all. Or does it? Many organizations believe "one size fits all" .

  • Hiring vs Hunting

    Hiring vs Hunting

    Is it more difficult if you are hunting for a job, or if you are hiring employees? In the tech sector, employers are…

  • Working with Gen X

    Working with Gen X

    Gen X are the generation on the cusp. Some were at the tail end of (small) university grants, others paid fees.

    2 条评论
  • Working with Gen Z

    Working with Gen Z

    I recently welcomed two bright interns into our team. As we chatted about their aspirations and dreams, it struck me…

    1 条评论

社区洞察

其他会员也浏览了