How Fixing Defects Is Like Finding Your Lost Car Keys

The next time your manager asks for an estimate for fixing software defects, say “I’ll get right on it, as soon as I can find my lost car keys.”

Estimating the time to find and fix a defect can be difficult. It can be a short time, a very long time, or maybe even never. So how do we respond when asked to forecast in a Scrum sprint planning meeting which defects we can fix in the upcoming sprint?

One recommendation is to consider switching from Scrum to Kanban for later phases of software maintenance when defect fixing and creating estimates are difficult. Kanban provides transparency into the backlog and the work flow as defects are fixed without having to forecast the work for an upcoming time boxed sprint.

It is always best not to create a defect in the first place. In Scrum, the team is accountable for delivering quality. With developers and testers collaborating and working closely together, issues are often found and fixed early, even before they become defects. As a result, the numbers and severity of defects are reduced over those from traditional development methods. Other techniques such as automated testing and continuous integration can also discover and reduce the number of defects. Inevitably, there will likely be some defects that have escaped and need to be fixed before the next product can be released.  Management wants to know how much time will it take to fix these defects.

Let’s explore in more depth the similarities of how we estimate the time to fix defects to the time it takes to find our lost car keys.

Question: When can I expect to find my lost car keys?

  • Scenario 1: I will try to remember when I last saw them. Perhaps it was just a few minutes ago, and I have only been in the living room during this time. I only need to search the living room in such places as under the couch.  I believe the keys will be found quickly and can give a reliable estimate for when they will be found.
  • Scenario 2: Or has it been days since I last saw the keys? I have been traveling to many locations, and I have no idea where I might have left them.  In this case, I cannot give a good estimate but I can create a plan, almost a search grid starting with the various places I have been. I’ll start with the first location that is the most likely place where the keys were left.  Based on the results of my search, I will “inspect and adapt.”  It may be difficult to provide a good initial estimate. I may find them in the next few minutes. I may never find the keys in which case I would need to have a contingency (order new keys, for instance).
  • Scenario 3: I lose my keys a lot. Generally I find them on average within 4 hours. That will be my estimate. I can refine this estimate as I gather more information from my search.

Question: When can we expect a fix of the defect?

  • Scenario 1: When did the defect occur in the system?  If we have only been working in one routine since the last time the code worked, then we can focus our attention on that routine or the impact of our changes.  In fact we can back out our changes or write some tracing debug code to find the error. We were just working on the routine and are intimately aware of our changes. Remember the earlier a defect is identified, the easier, cheaper, and quicker it is to fix. We can likely give a good estimate.
  • Scenario 2: We just discovered the defect and it has been in the system a long time. Once again we have several places that we will need to look. We can create a strategy to list the possible areas where the defect was inserted and investigate each of these areas, starting with the most likely place first. Unfortunately, we have not looked at some of these areas recently so we will need additional time to recall what was changed. The most time is often finding the area that is causing the problem. The actual fix might not require much time. Until we have more information, it may be difficult to give a good estimate.
  • Scenario 3: From past experience, we have gathered metrics and found that it takes on average 4 hours to fix a defect. That will be our estimate until we gather more information.

In summary, the sooner you …

  • Know that your keys are missing, the easier it will be to find them. Put tools in place (such as a locator “tile”) and processes (always put keys in same place) which will help you find the keys.
  • Are aware of a defect, the easier and quicker it will be to fix. Put tools and processes in place that can help you assess the health of your code and alert you when defects enter the system.

Be glad to hear back from you about other tips for managing defects and forecasting the time to fix. In the meantime, good luck fixing your defects and knowing where your car keys are!

 

 

RSS
Follow by Email