This is going to sound a little trite, but bear with me for a few sentences here. The fastest way to fix a bug is to not fix it.

Before you roll your eyes and write this off as stupid or obvious, let’s dig into why this approach can be not only faster but also smarter. Fixing a bug, even the smallest one, takes time. Beyond the actual coding, there’s debugging, testing, deploying, and ensuring the fix doesn’t inadvertently introduce new problems. Before diving into all that, it’s worth taking a moment to ask: does this bug really need fixing?

Questions to Ask Before Fixing a Bug

Here are some considerations that can help you decide whether to invest time in fixing a bug or not:

  1. How likely is a customer to encounter this bug? Bugs that live in obscure corners of your application may go unnoticed for months or years. If no one is likely to encounter it, does it warrant immediate attention?
  2. How severe is the bug? Let’s face it: not all bugs are created equal. If a button is off by one pixel, or an error message could be phrased better, these issues might not even register with your users. On the other hand, if the bug prevents customers from completing a core task, it’s clearly worth prioritizing.
  3. Is there a workaround? If a bug can be sidestepped with minimal inconvenience, you may be able to delay or even avoid fixing it altogether. Workarounds can buy you time to focus on higher-impact issues.
  4. Has a customer reported the bug? There’s a big difference between a bug found internally during testing and one reported by a paying customer. While internal bugs are worth noting, customer-reported issues often carry more weight because they’re tied to real-world usage and experience.
  5. What’s more important to your customers: fixing this bug or delivering a new feature? Bugs should be prioritized within the broader context of your product’s roadmap. Fixing an obscure bug might not matter to your users as much as delivering a feature they’ve been eagerly awaiting.
  6. Can it go into the backlog? If you’re not sure whether the bug needs fixing now, you can always log it in your backlog for review later. This is particularly useful for low-priority bugs that don’t impact the user experience significantly. If a customer eventually reports it, you’ll know to bump it up the priority list.
  7. How long has this been an issue? If a bug has been in the software for weeks or months without customers noticing, that can be an indication that the bug isn’t something they’ve run into or they were able to get past it easily enough.

Revisiting Joel on Software’s Bug-Fixing Philosophy

Joel Spolsky’s famous piece, “The Joel Test: 12 Steps to Better Code,” includes a recommendation to fix all bugs before moving on to enhancements. When I first read this, I thought it was a gospel truth: every bug, no matter how small, needed fixing immediately. But over time, I’ve realized this approach benefits from one key adjustment: before deciding whether to fix a bug, ask if it even needs to be fixed.

Joel’s advice is grounded in reducing uncertainty and technical debt, which makes sense. However, blindly adhering to a zero-bug policy can lead to wasted effort on issues that don’t matter to your customers or your product’s success. Taking the time to evaluate a bug’s impact in the broader context of user needs and business priorities ensures you’re fixing the right bugs—not just all of them.

Building on the “Delete, Delete, Delete” Mentality

This approach ties closely to a productivity principle I explored in my earlier blog post, “Delete, Delete, Delete: The Ultimate Productivity Hack.” In that post, I argued that cutting out unnecessary tasks is one of the best ways to stay focused on what really matters. Deciding not to fix low-priority bugs is essentially applying the same mindset to software development.

By removing or deferring tasks that don’t deliver meaningful value, you free up time and resources to tackle the projects that will have the biggest impact. For example, imagine a bug that only appears when a user enters a 100-character password with a specific combination of emojis. While intriguing, it’s likely such a scenario is so rare that fixing it wouldn’t be worth the effort compared to delivering a feature your customers have been eagerly awaiting.

Embracing a Balanced Approach

The next time you come across a bug, resist the urge to jump straight into fixing it. Instead, ask yourself (and your team) these critical questions. You might be surprised to find that the fastest way to fix a bug isn’t to fix it at all. Sometimes, the best solution is to prioritize, document, and move forward with what truly matters to your customers and your product.

Leave a comment