I do not try very hard to be right the first time. I try quite hard to make being wrong cheap and visible, which is a different investment and, I think, a better one.
The reasoning is about which mistakes actually cost. A wrong decision that announces itself — a failing test, a 500, a deploy that will not start — is paid for on the day it happens, and the bill is small because nothing has been built on top of it yet. The expensive kind is the wrong decision that looks right for months: it gets depended on, quoted, planned against, and by the time anybody notices, the correction has to unwind everything downstream. So the work is not making wrongness rare. It is making it detectable and reversible.
Here are four places where that is a concrete artifact rather than an attitude.
11,953 rows, rolled back one at a time
The hotel identity data has a rule: a mapping enters the table only when a supplier's own code is the evidence for it. Name-and-geo similarity is a hint — it starts an investigation, it does not conclude one. Two hotels sharing a name on the same street is a real situation, and so is the same building spelled two different ways at two suppliers.
Before that rule was written down, a bridging campaign of 11,953 rows had already gone in on name-and-geo similarity alone. When the policy was set, that campaign did not survive it. It was rolled back row by row.
The part I care about is not the discipline of reverting; it is that reverting was available. The campaign had been written as a set of individually identified changes rather than a bulk write, so "undo exactly these rows and nothing else" was a thing the system could express. Had it been a single sweeping UPDATE, the same decision would have been correct and unaffordable — and what happens then is that the policy quietly gets an exception for the data already in the table. Reversibility is what let the rule apply to the past as well as the future. The rule has held since 2022.
A cost file that says measured or estimated
There is a file where infrastructure cost work is recorded, and every figure in it carries three things: a label saying whether it was measured or estimated, a date, and a source. The label is not decoration. A number without it decays into a fact — someone reads it in a meeting six months later and it is quoted with the confidence of a measurement, because nothing on the page says otherwise.
The entry I am most attached to is an optimisation recorded as a failure. It did not pay back. Rather than deleting it — which is what normally happens to work that did not land — the entry keeps the arithmetic that shows it did not, so the next person considering the same idea meets the reasoning instead of rediscovering it. A file that only contains wins is not a record. It is a highlight reel, and nobody can plan from a highlight reel.
The paragraph that has to be written last
Every audit-style output I produce ends with a required section: what I am not certain of. This site already carries the argument for why — a document loses trust as a whole, so labelled uncertainty is cheap insurance. What I want to add here is the mechanical effect of being forced to write it.
You cannot fill that section honestly without enumerating what would falsify the document. That enumeration is the thing of value. It converts a vague feeling of "I did not check everything" into named items — this claim came from one log source and I did not corroborate it, this behaviour I inferred from code and never observed running. Often enough, writing the paragraph sends me back to check one of those items, which is the section doing its job before anyone has even read it.
Agents whose job is to disagree with me
The newest version of this is the one that changed my habits most. When an investigation produces a finding, the useful next step is not another pass looking for supporting evidence — I will find some; confirmation is easy and nearly worthless. The useful next step is an agent whose stated job is to refute the finding: to look for the reading of the same evidence in which the conclusion is wrong.
The framing matters more than the tooling. "Check this" produces agreement. "Find the case where this is false" produces a list of the conditions under which I would be wrong, and those conditions are directly actionable — either I can rule them out, or I have just learned what my finding actually depends on. The pattern is older than the tooling, of course; it is what a good reviewer does. Making it a separate, named step means it happens even when nobody has the time to be a good reviewer.
What this costs, and the number that is not here
None of this is free. Reversible campaigns are more work to write than bulk updates. Labelling every figure slows down writing them. A refutation pass costs a pass. I have not measured any of that against what it returns, and I am not going to construct a ratio to make the case look tidier than it is.
Which is the same discipline this site runs on. There is no hours-saved figure anywhere on it, no efficiency percentage, no before-and-after. Not because the work had no effect, but because an estimate that a later reader mistakes for a measurement is the fastest way to lose trust in an entire document — and once that happens, the true claims go down with the invented one. Publishing nothing where I measured nothing is not modesty. It is the same reversibility argument applied to writing: a claim I never made is a claim I never have to unwind.