The Post-Mortem Isn't About the Bug
The outage was a missing index. The hard part was the sentence after.
The system ground to a halt on a slow query. A table I owned had grown too big to scan the way the query was scanning it, and I had never added the index that would have kept it fast. Under light load, nobody would have noticed. Under real load, it fell over, and everything behind it fell over too.
We fixed it. That is almost never the hard part. The hard part is the meeting afterward, where everyone sits down to work out what happened. My turn came, and there was nothing to work out. I knew exactly what it was. So I said it. That was me. Then I gave them the detail: I missed the index.
Three words. They should be the easiest three words in the room, and they are the hardest, because most people cannot make themselves say them clean.
The Reflex That Is the Real Failure
Watch what happens when a mistake has an owner and the owner starts to talk. The admission almost never comes alone. It comes with reasons. There was a lot going on that sprint. The ticket didn’t mention the growth projections. Nobody flagged it in review. The staging data was too small to catch it. Every one of those might be true. None of them is the admission.
Those reasons are not lies. They are a way to put distance between you and the mistake, because in that moment the two feel like the same thing. If I broke it, then I am the guy who breaks things. So the explanation comes first, to take the hit before the admission lands.
That reflex is the real failure in the room. Not the outage. The outage was a missing index, a known, boring, solvable thing. Spreading a mistake around until no one quite holds it, that is what makes a post-mortem useless. A mistake that belongs to everyone belongs to no one, and nothing that belongs to no one gets fixed.
Owning It Flat
Here is where the oldest idea in Stoicism does real work. The mistake is already in the past. It happened. It is done. It is no longer one of the things you can act on. You cannot un-ship it. You cannot argue it back into staging. It is outside your control now.
What is still yours is your response to it. That is the part you control, and it is the only part you were ever going to control. So the clean sentence is not you exposing yourself. It is you being accurate. “I made a mistake” describes something that happened. “I am the mistake” is a claim about who you are. They are not the same claim, and the practice is keeping them apart.
Once you see that, the flat sentence costs almost nothing. That was me. I missed the index. Nobody’s character is on trial. There is a cause, and there is a person who is going to help make sure it does not happen again. You say it the way you would report the query time. It is just another fact about the system.
What the Flat Sentence Does to the Room
I used to think owning a mistake cleanly was a personal thing, a matter of not being a coward. It is more than that. It is the most useful thing you can do for everyone else at the table.
Marcus Aurelius kept coming back to a distinction that turns on a single letter. In Greek, he wrote, you can call yourself a limb of the body of rational beings, melos, or just a part of it, meros. A part sits next to the other parts. A limb belongs to them. When one limb takes a hit, it takes the hit so the body keeps working. (Meditations 7.13.)
That is what clean ownership does in a post-mortem. When you take the mistake plainly and completely, you end the search before it starts. Nobody has to work out whose fault it was. Nobody has to defend themselves. Nobody has to avoid saying your name while everyone in the room already knows it. You said it. There is nothing left to sort out, so the room stops looking and starts fixing. One limb took the hit. Everyone else keeps working.
People treat accountability as a cost they pay. It is not a cost. It is the fastest way to get the room to the only conversation worth having, which is how to stop this from happening again.
Why Process Over Person Actually Works
The best post-mortems I have sat in did not spend their time on people at all. They went straight to the process. Why did staging data not look like production? Why was there no check on query time before a table shipped? What guardrail would have caught this without anyone having to be a hero? The failure was treated as a condition to design around, not a moral event.
It is tempting to credit that to everyone agreeing to be kind. That is not what makes it work. A room stays on the process because someone shows them how first. When the person closest to the mistake owns it flat, with no excuses and no spiral, everyone else sees that owning it is survivable. You can say it was you and still be standing, still trusted, still useful. After that, people stop bracing. The thing they were afraid of, being named, already happened to someone, and he is fine.
You cannot get that from a policy. Blamelessness is not a rule you put on the wall. It is something a senior person creates, in real time, by how they handle their own mistakes in front of everyone. A junior who watches you own the index this cleanly learns more about the job in that moment than in a month of code review.
The bug was a missing index. That got fixed the same afternoon. The thing worth practicing was never the fix. It was the three words, said flat, that let the room get to it.
👉 If you enjoy reading this post, feel free to share it with friends!
Or feel free to click the ❤️ button on this post so more people can discover it on Substack 🙏
You can find me on X and Instagram.


