Life

The pour-over ritual as a debugging technique

Four minutes where the only variable is water. Most of my best fixes arrived somewhere between the bloom and the last pour.

L Lagom •Mar 2, 2026 •3 min read •★ 104 likes

The bug had been winning for two hours. A race condition in the session code — the kind that vanishes the moment you add a log line, like a cockroach that's read the building's lighting schedule. At hour two I did the only responsible thing: I gave up and made coffee. Grind, rinse the filter, 45 grams of bloom, wait. Somewhere between the bloom and the second pour, with my hands busy and my eyes on nothing but water finding its way through the bed, the answer simply surfaced: the cleanup handler ran on a different queue. Two hours of staring, solved by four minutes of not looking.

This has happened often enough that I stopped calling it coincidence and started calling it a technique.

Why it works (a theory)

Staring at a bug keeps you inside the frame that produced it. Every re-read of the same function reinforces the same assumptions — including the broken one, which by definition looks fine to you, or you'd have fixed it already. What you need is for the frame to dissolve, and frames don't dissolve on command. They dissolve when attention is gently occupied elsewhere.

The pour-over is almost suspiciously well-shaped for this:

  • It's four minutes long. Long enough for the frame to loosen; short enough that you can't start anything else. A walk works too, but a walk invites the phone.
  • The hands are busy, the mind is not. Pouring in slow circles takes exactly enough motor attention to stop you from actively re-staring at the problem, and no more.
  • There is one variable. Water. Rate, height, spiral. The task is real — mess it up and the cup punishes you — but its entire state fits in your hands. After two hours in a system with ten thousand states, the contrast is the point.
  • It ends with a reward that is not a screen.

The protocol

Ritualized, because rituals survive bad moods:

  1. Write the bug down first. One sentence, on paper: what I believe is happening and why it can't be. The act of compressing it is half the technique — it's rubber-duck debugging where the duck is a kettle.
  2. Brew with full attention on the brewing. No phone in the kitchen. The four minutes belong to the water. If the bug intrudes, fine, but I don't invite it.
  3. Say the hypothesis out loud before sitting back down. If the brew surfaced something, it's spoken — and therefore testable — before the screen re-hypnotizes me into the old frame.
  4. One cup per bug. This is a technique, not a caffeine delivery justification. The second cup never knows anything the first didn't.

The bug was never hiding in the code. It was hiding in the way I was looking at the code, and the coffee changed the way I was looking.

Honest caveats

It is not the caffeine — decaf works, which I verified with genuine scientific reluctance. It is probably not even the coffee: I assume bread kneading, dish washing or watering plants would do the same job, and friends report exactly that. The active ingredient is a bounded, manual, single-variable task that ends on its own. Coffee just happens to be the one whose output I want four times a day.

And it fails on bugs that aren't frame problems — typos, missing configs, honest logic errors. The ritual finds the answers you already have but can't see. For answers you genuinely don't have, there is no substitute for the two unglamorous hours. The coffee only works because the staring came first; it's the harvest, not the farming.

Written by Lagom

I build small tools, stress-test larger models, and take notes so future-me has receipts. More posts — and the occasional abandoned draft — under the blog, or find me via the about page.