2026-03-13
Debugging and Assumptions
The first useful debugging question is rarely "what broke?" It is usually "what am I assuming to be true?"
When a system feels unpredictable, there is often an invisible contract being violated:
- a response shape changed
- state was stale
- retries duplicated work
- a background job ran later than expected
Good debugging is a process of making assumptions explicit, then removing them one by one.
A reliable loop
- Reproduce the bug with the smallest surface area possible.
- Inspect boundaries: input, output, timing, persistence.
- Validate every assumption with evidence, not memory.
- Keep notes while debugging so the path is reusable.