Checking again is not duplicated work
The second check on a till float looks like waste until the first one is skipped. The test is whether the checker would still catch the mistake on its own.
Every so often somebody looks at a process and says, reasonably, that a step is done twice. The float is counted at close by the person cashing up, and counted again at open by the person taking over. Two people, same drawer, same number. Why not drop one?
Because they are not the same check. The close count asks whether the day adds up. The open count asks whether anything happened to the drawer overnight. Drop the open count and you have not removed a duplicate, you have removed the only thing that would ever tell you about the gap between the two.
We had to reason about exactly this in our own code this week, and the reasoning transfers.
The shape of the question
When somebody opens a venue's page in our back office, two different parts of the system check they are allowed to see it. The first is a gate that every request passes through. The second is inside the page's own code, checking the same thing again a moment later.
That looks like waste. It is not, and the reason is worth stating plainly: the second check is the one that is still right if the page is ever moved. Gates get reorganised. A route that was behind one can end up somewhere it is not, and nothing goes red when that happens — the page carries on working, for everybody, including the people it should refuse.
We know this because it has happened to us. One of our routes took the identifier it was working on from a different place than the gate was looking, so the gate waved it through without ever seeing what it named. Nothing broke. Nothing was logged. The route was simply not protected, and the only reason we found out is that somebody went looking.
The test that tells them apart
Here is how to tell a genuine duplicate from a real second check, in a kitchen or anywhere else.
Would the second one still catch the mistake if the first had never happened?
The open float count would. If nobody had counted at close, counting at open still tells you what is in the drawer. That is a real check.
Reading the delivery note twice while the driver waits, because the first read was rushed, is also a real check — the second read catches what the first missed.
But ticking the same allergen box on two forms because two forms exist is a duplicate. The second tick is copied from the first. If the first were wrong, so is the second, every time. That one you can lose.
Where the cost actually sits
Worth being honest about what these checks cost. In our case, almost nothing — the second check reads no new information, it just looks again at what is already in hand. The expensive thing was never the checking. It was a separate piece of the same page fetching a record that had already been fetched, which is the genuine duplicate, and we removed that one instead.
That is usually the pattern. The step that looks redundant and is cheap is often your safety net. The genuinely wasteful repetition is somewhere less obvious, and nobody has flagged it because it does not look like a step at all.
Before you cut a double-check, find out whether it can stand up alone. If it can, it is not a double-check. It is a second chance.