Skip to main content
Bug Triage

Bug Triage: Stop Treating Every Bug Like a Blocker

Most teams triage wrong—they fix urgent noise and ignore severe risks. Here's a blunt, practical walkthrough to separate priority from severity and ship what matters.

You think triage means ranking bugs by how much they annoy you. Wrong. That's just complaining with a spreadsheet. Triage is a decision-making process that separates impact from urgency, and most teams conflate the two until their backlog is a landfill. I've watched teams burn a sprint on a cosmetic glitch while a payment flow quietly failed for 2% of users. That's not bad luck—that's bad triage.

This walkthrough is for anyone who owns a bug tracker and a deadline: startup CTOs, QA leads, and solo devs who are tired of playing whack-a-mole. I'll give you a specific method, not a philosophy seminar.

1. Separate severity from priority before you touch a ticket

Severity measures how much a bug breaks functionality or user experience. Priority measures how urgently you need to fix it. They are not the same axis. A crash in an internal admin tool might be high severity but low priority because three people use it. A typo on the checkout button might be low severity but highest priority because it costs revenue every hour. Atlassian draws this line clearly, and if your tracker has one field called "Importance," you've already lost.

Do this: add two fields—Severity and Priority—and force a value for each. Use the common severity ladder: Fatal/Blocker (system crash), Critical, Major, Minor/Trivial. For priority, use Lowest/Trivial through Low, Medium, High, Highest/Blocker. Yes, they overlap. That's fine. The point is to force a conversation when they diverge.

2. Run a 15-minute triage stand-up three times a week

Don't do daily triage. You'll drown in noise. Twice a week is too slow for fast-moving teams. Three times a week—Monday, Wednesday, Friday—keeps the queue from rotting without turning triage into a second job.

Here's the exact agenda. One person drives. One person takes notes in the tracker. Everyone else shuts up unless asked.

  • New bugs (5 min): For each unassigned bug, set Severity and Priority. If you can't reproduce it, mark it Non-Reproducible and move on. Don't debate.
  • Reopened bugs (5 min): These are your shame list. A reopened bug means your fix failed or your test was weak. Assign it back to the original developer and add a regression test case.
  • Stale bugs (5 min): Anything untouched for 14 days gets one of three fates: Deferred, Rejected, or escalated to Highest. No zombie tickets.

If you skip triage, bugs pile up and your defect rejection ratio—rejected defects divided by total reported, times 100—will look like a trash fire. Track it. A high rejection ratio means your reporters are crying wolf; a low one means you're fixing garbage.

3. Apply the security exception without panicking

Security bugs don't follow the same triage rules. A vulnerability that's being exploited in the wild jumps the queue—period. CISA's Known Exploited Vulnerabilities (KEV) catalog is the authoritative list of bugs that attackers are actually using, and it includes a remediation due date for each entry. If your product depends on a component on that list, you don't triage it; you patch it.

For everything else, use CVSS v4.0 from FIRST. It scores vulnerabilities across Base, Threat, Environmental, and Supplemental metric groups. The qualitative ratings map cleanly: Critical is 9.0–10.0, High is 7.0–8.9, Medium is 4.0–6.9, and Low is 0.1–3.9. Don't argue about a 7.2 versus a 7.4. Argue about whether it's a 7 or a 9.

Here's the comparison table I use when a bug could go either way:

SignalFix now (Highest/Blocker)Schedule (High/Medium)Defer or reject
User impactBlocks core workflow for many usersDegrades experience but has a workaroundCosmetic or affects one user
SecurityOn CISA KEV list or CVSS 9.0+CVSS 7.0–8.9, no known exploitCVSS
FrequencyHappens every sessionIntermittent, reproducibleCannot reproduce
Business costRevenue, legal, or safety riskSupport ticket volume risingNo measurable cost

Quick tip: If a bug doesn't fit any "Fix now" column, it doesn't get fixed this sprint. Write that on a sticky note and tape it to your monitor.

4. Link every bug to a user story or test case—or delete it

Traceability isn't bureaucracy. Linking a bug to the user story, test case, and code change that caused it is how you do root cause analysis later. It's also how you avoid the Mars Global Surveyor problem: a software update stored at the wrong memory address ended a mission that had run successfully for more than 9 years. One misplaced line. One missing link. Mission over.

When you close a bug, force the closer to attach the commit hash or pull request. If they can't, the bug stays open. Harsh? Yes. Effective? Absolutely.

What can go wrong: You'll be tempted to triage by gut feel. Don't. The delayed issue effect study of 171 software projects from 2006–2014 found no evidence that fixing bugs later costs consistently more. That means "fix it now or pay 10x later" is not a universal law—it's a myth in many contexts. So triage based on current impact, not fear of future cost.

Sources

  • Atlassian (bug life cycle) - https://www.atlassian.com/software/jira/guides/bug-tracking/bug-life-cycle
  • Atlassian (issue priority vs severity) - https://www.atlassian.com/software/jira/guides/issues/priorities
  • CISA (Known Exploited Vulnerabilities Catalog) - https://www.cisa.gov/known-exploited-vulnerabilities-catalog
  • FIRST (CVSS v4.0 specification) - https://www.first.org/cvss/v4.0/specification-document
  • NASA (NTRS Spinoff 2011, Tools Ensure Reliability) - https://ntrs.nasa.gov/api/citations/20120001915/downloads/20120001915.pdf
  • arXiv (Menzies et al. 2016, delayed issue effect) - https://arxiv.org/abs/1609.04886

Triage is not about finding the perfect priority. It's about making a decision fast, writing it down, and moving on. If you separate severity from priority, meet three times a week, and refuse to fix anything that doesn't hit your "Fix now" column, your backlog will shrink and your users will stop yelling. That's the whole game.

Share this article:

Comments (0)

No comments yet. Be the first to comment!