Should non-priority technical debt tickets be pruned from backlog

product-backlogscrumtechnical-debt

I regularly review the technical debt tickets from my backlog, to prioritize them and remove those which are no longer relevant (fixed by some other development, obsolete…) Among those with high priority, we take 2 or 3 in each sprint, and this way our codebase is healthy for the moment.

The problem is that all those tickets that are still relevant but have not been prioritized, represent a big part of the backlog (50%), and my PO insists that they should be removed, the same way that he deletes regular Story tickets that he knows won't be prioritized in the next semester, in order to have a "lean and healthy backlog".

I acknowledge the fact that with our current "tech debt velocity", we won't be able to take most of them in the next semester, but it frightens me to delete tickets that are pointing to spots in our code that may rot if not fixed, lending further developments more difficult (well, you all know the point of tech debt and why it is important).

So my question is: should I prune the tech debt tickets with lower priority?

Best Answer

I would say that there isn't a single best answer for this problem. You've got a few overall strategies, you would probably be best doing all of them. But the information should never be deleted, but it can be transformed.

Keep them in the issue tracker with the rest of the project

For high priority or fresh debt I would keep this strategy, once tickets start getting older or are deemed very low priority I would move on to the next two strategies

Pros:

  1. Keeps the context to one area making it easier to manage the technical debt
  2. Gives them high visibility

Cons:

  1. Religious management and filtering of these will become important (it may be a large time commitment)
  2. If there's a very large number, the small unimportant ones may drown out more important ones

Keep them in the issue tracker separated from the project

Move older tickets or less important tickets into a separate project and pull them into the main project as required for working on them.

Pros:

  1. Keeps the backlog clean and sane
  2. Makes it easy to determine what is high priority vs low priority by changing their visibility

Cons:

  1. This second project becomes a dumping ground and can easily fill up, it will still need to be managed
  2. A lot of these tickets will be moved here and never look at again, begging the question if they'll ever get done?

Move the information into code

By using a special commenting style, ie // TECHDEBT: .... you can mark the areas required for clean up directly in your code base instead and these can be fixed up when there is spare time in the project

Pros:

  1. The information about the debt is located where the debt roughly is
  2. Doesn't pollute the issue tracker
  3. Can create a good culture around identifying debt
  4. If it's apparent that there is a lot of notes about technical debt in a particular area, it makes it easier for a developer to flag that something needs to be done (the collection is more important than the individual)
  5. A developer may fix this when otherwise working on the feature (thanks Heinzi for adding this)
  6. When cleanup of the debt has been performed the note should naturally be removed (thanks Steve for adding this)

Cons:

  1. Can create noise in the code itself
  2. May still never get fixed
  3. From a project management perspective, the work may never get prioritised, so it may never get fixed
  4. The information is now split across two different places, making it harder to find and more likely to file a duplicate ticket