Imagine you're the one holding the bug queue after a messy release. There are 47 tickets, and each one is 'urgent.' Sales is screaming about a login glitch, a tester swears a crash is 'blocker,' and someone filed a typo as 'critical.' You have an hour to sort it before the dev team starts picking at random. That's triage, and if you don't have a system, you'll waste everyone's time on the wrong bugs.
I've been in that chair more times than I care to count. Here's the blunt truth: triage isn't about being nice to every reporter. It's about making clear, defensible decisions that keep your product moving. This guide is for anyone who owns a bug backlog—lead devs, QA leads, or that lone engineer who inherited the tracker. You'll learn a practical, step-by-step process to turn chaos into order.
Who This Is For
If you've got more than a handful of open bugs and no one has a clear idea of what to fix next, this is for you. Triage is the art of deciding what gets attention now, what waits, and what gets killed. It's a skill you can learn, and it starts with a simple mindset: every bug is a candidate for rejection until proven otherwise.
Step 1: Set Up a Simple Workflow
You can't triage if your tracker is a swamp. Start with a bare-bones workflow: Open, In Progress, In Review, Done, Closed. Add a Triage step if you need a holding pen for new reports (Atlassian). That's it. Resist the urge to add custom states like 'Waiting for Info'—you'll end up with a graveyard of lost tickets. A simple path keeps the focus on moving bugs forward, not on managing the board.
Step 2: Define What 'Urgent' Really Means
Here's where most triage fails: people confuse priority with severity. Priority is how urgent it is to fix; severity is how much it hurts (Atlassian). A typo on the homepage might be high priority for marketing, but its severity is trivial. A rare race condition might be severe—it can crash the app—but low priority if it only hits one user on a Tuesday. You need both, and you need to set them separately. If you let anyone mark a bug as 'High Priority' without a fight, you'll end up with 30 'urgent' tickets and no real urgency.
For security vulnerabilities, you've got another tool: CVSS. The Common Vulnerability Scoring System quantifies severity on a scale from 0.0 to 10.0, with ratings like Low (0.1–3.9), Medium (4.0–6.9), High (7.0–8.9), and Critical (9.0–10.0) (FIRST). Use that score to inform priority, but don't let it make the decision alone. A critical CVSS score that's not exploitable in your environment might be lower priority than a medium that's actively being hit.
Step 3: Triage New Bugs Like a Filter
When a new bug lands, you need to run it through a checklist. First, is it a bug at all? If it's a feature request, route it to the product backlog. If it's a user error, close it as 'Not a Bug.' If it's a duplicate, link it to the original and close it. Only then do you look at reproduction. Can you reproduce it? If not, mark it 'Non-Reproducible' and ask for more details, but set a deadline—if the reporter doesn't respond in a week, close it. A bug you can't reproduce is a time sink, and you don't have time for that.
Here's a critical rule: when you reassign a fixed bug back to the tester, log any new defects you find during validation as separate issues (Atlassian). Don't stuff them into the original ticket—you'll lose track of what's actually fixed.
Step 4: Use Severity to Guide Your Triage, Not Your Heart
Severity levels typically range from Fatal/Blocker (system crash) down to Minor/Trivial (Atlassian). But here's the trap: not every crash is worth dropping everything for. Think about the Mars Pathfinder mission. After landing in 1997, it suffered repeated system resets due to a priority inversion problem—a software bug that delayed scientific data collection (Chalmers). That was a mission-critical bug, and they patched it remotely within a few days. But how many 'crashes' in your app are that impactful? Probably few.
Use severity to drive your triage decisions, but pair it with context. A crash in a rarely used admin screen is less urgent than a slow memory leak that hits everyone eventually. Triage is about ranking, not just labeling.
Step 5: Assign Ownership and Move On
Once you've decided a bug is real and worth fixing, assign it to a specific developer. Don't leave it 'unassigned'—that's a black hole. The developer should move it to 'In Progress' when they start, and back to the tester for verification when done. If a bug bounces back because the fix didn't work, that's fine—it goes back to 'In Progress.' But if it keeps bouncing, you've got a communication problem, not a tracking problem. Fix that.
Step 6: Track the Right Metrics—and Ignore the Rest
Metrics are useful, but they can mislead. Two that matter: defect rejection ratio (rejected defects divided by total reported, times 100) and defect leakage ratio (production defects divided by total found, times 100) (Atlassian). A high rejection ratio might mean your testers are filing junk—or that your triage is too strict. A high leakage ratio means your testing missed bugs that hit production. Use these to improve your process, not to punish people.
But don't get obsessed with the 'delayed issue effect'—the idea that bugs fixed later cost more. The largest study on that, covering 171 projects from 2006 to 2014, found no consistent evidence that later fixes cost more (arXiv). So don't buy into panic-driven 'fix it now or pay later' stories. Triage based on current impact, not fear of future cost.
Step 7: Watch Out for the 'Everything's Critical' Trap
Here's what can go wrong: you let everyone mark bugs as 'Blocker' or 'Critical,' and soon nothing is. The queue becomes a wall of red, and the team starts ignoring priority entirely. That's how the Therac-25 tragedy happened—not from a coding error, but from requirements errors and a lack of software engineering discipline (MIT). You don't need that level of drama to see the point: if you don't enforce meaningful priority, you'll fix the loudest bug, not the most important one.
So, be the bad guy. Reject inflated priorities. Ask for evidence of impact. If a reporter can't explain why a bug is 'Critical,' downgrade it. Your team will thank you.
What I'd Actually Do
Here's my blunt recommendation: adopt a triage meeting, even if it's just you and a cup of coffee for 15 minutes a day. Go through every new bug, assign severity and priority based on the definitions you've set, and reject anything that doesn't meet the bar. Use CVSS for security bugs to get a baseline, but always overlay your business context. And for heaven's sake, keep your workflow simple. You don't need a complicated tool—you need discipline.
Remember, triage isn't about clearing the backlog. It's about making sure the bugs you do fix are the ones that matter. That's how you earn your team's trust and keep your product from crumbling under the weight of a thousand 'urgent' tickets.
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
- FIRST (CVSS v4.0 specification) - https://www.first.org/cvss/v4.0/specification-document
- Chalmers University of Technology (Mars Pathfinder priority inversion) - https://www.cse.chalmers.se/~risat/Report_MarsPathFinder.pdf
- arXiv (Menzies et al. 2016, delayed issue effect) - https://arxiv.org/abs/1609.04886
- MIT (Therac-25 accidents Part V, Leveson & Turner) - https://web.mit.edu/6.033/2004/wwwdocs/papers/Therac_5.html
Comments (0)
Please sign in to post a comment.
Don't have an account? Create one
No comments yet. Be the first to comment!