Wiki · Product & engineering
Bad vs Sad
Split your defects two ways. Bad is an error you cannot take back. Sad is friction you can.
Bad is a crash, lost work, a wrong charge. Sad is a flicker, a slow load, an ugly empty state. Annoying, but survivable.
The labels are not the point. The point is that each team draws its own line, and watches for the trap underneath: stacked sads trend toward bad.
What it says
- Bad is irrecoverable. Sad is recoverable. The split is by whether the harm can be undone, not by how loud it feels. A cosmetic bug that corrupts saved data is bad. A jarring animation is sad. Spend your verification budget on the bad tier.
- Each team owns its own thresholds. There is no global rule for where sad becomes bad. A payments team and a marketing-site team draw the line in different places. The framework is a shared vocabulary, not a shared standard. It lets a team argue about the bar precisely instead of trading vague "this feels off" notes.
- Stacked sads trend toward bad. Enough recoverable frictions in a row compound into an irrecoverable-feeling experience. A login that flickers, then loads slowly, then shows a wrong empty state is not three sads. It is a user who left. Watch the accumulation, not just the single defect.
- It is a calibration tool for a high-throughput team. When PMs and designers also commit code and the team ships far more of it, one senior reviewer cannot eyeball everything. A named bad and sad vocabulary lets the whole author pool self-triage against the same frame.
Worth knowing
Where sad becomes bad is a judgment call. There is no published count or weighting for "stacked sads". Treat it as a per-surface judgment, not a formula.
It is cleanest on visual surfaces. The split is easy to apply to a UI flicker. It is murkier for data pipelines and infrastructure, where "recoverable" is harder to read.
Related
- Fiona Fung — source; the framework sits inside her broader engineering operating playbook.
- Verification harness — bad and sad is the quality-bar vocabulary the harness enforces. Specs checked into the repo are its machine-checkable twin.
- Slop — what an org ships when it stops triaging sads and lets them stack.
- Perceived simplicity — stacked sads are its inverse: accumulated friction that degrades the felt product.
Sources
- Building the Most AI-Pilled Engineering Team in the World — Fiona Fung with Lenny Rachitsky, Lenny's Podcast, 21 June 2026. youtube.com/watch?v=Ybrl4FYM57c