Skip to main content

The Product Backlog and Technical Debt

April 5, 2017

"There are no shortcuts when it comes to getting out of debt" - Dave Ramsey

Technical debt can be defined as the longer term consequences of poor design decisions. In a sense it’s like any other debt - there ought to be a clear understanding of why it is incurred, and how and when to pay it back. Sometimes it is genuinely thought to be worth it. For example, “poor design decisions” might be made for the sake of expediency. Continuing with an unscalable architecture might facilitate a delivery to a Product Owner which would otherwise be impossible if redesign was to happen now. There will be long-term costs associated with the delay in taking remedial action, because it will become harder to refactor the architecture the longer it is left in place and used. That’s clearly a kind of debt, because we are borrowing time from the product’s future which will have to be repaid with interest. Yet given the advantage to be obtained by making that early delivery, the choice to take on this debt might be considered to be appropriate and worthwhile.

In an earlier post we looked at how a "technical debt register" can help a Development Team make informed decisions about any technical debt they choose to incur. The register will make the debt transparent and allow it to be managed by the team at the appropriate technical level where it can be remedied. There are of course other ways in which a Development Team might control their debt problem. When very little is owed, it might be sufficient for team members to track what needs to be repaid entirely in their heads. In the case of architectural refactoring the necessity of redesign may be obvious enough, since it may be a pain those developers have to deal with every day.

Another possibility may be to record technical debt on the Product Backlog. Obviously the Product Owner would require a high degree of technical insight for this to work. He or she must be able to understand the nature of the debt and its effect on value, and be able to prioritise such entries in relation to other Product Backlog Items. The Product Owner would also have to be willing to take this debt on in the first place.

It’s important to remember that the Product Backlog is not a dumping ground for the Development Team's technical debt. That debt is owed by the Development Team to the Product Owner and the stakeholders the PO represents. They expect and trust the Development Team to do the right thing, always, at a technical level. The Development Team has a right to assume technical debt if they believe that it is indeed the correct thing to do in a given situation. However that debt cannot then be palmed off onto the Product Owner by disguising it as additional "scope" to be prioritised and negotiated.

Some instances of technical debt might indeed be considered by the Product Owner for possible inclusion on the Product Backlog, if doing so allows that debt to be better managed in terms of product value, but other instances may not. In Scrum, a Product Owner is under no obligation to accept a Development Team’s debt. The Scrum roles are expected to collaborate but they also have their own duties and responsibilities. As a responsible partner with particular concerns, the Product Owner may or may not be interested in underwriting instances of technical debt which are incurred by the Development Team.

What however does this mean for the Product Backlog? This artefact is meant to be the "single source of requirements”, and it is described as such in the Scrum Guide. Isn’t it therefore necessary to record technical debt within it? After all, technical debt still represents work to be done.

Well, let’s remember that each Product Backlog Item must have an estimate. This means that the size of the Product Backlog should always reflect the cost of paying off any and all technical debt. Failure to do so will lead to an unrealistic picture of how much more must be invested before a product reaches a certain level of maturity. Like an iceberg, only a small portion of work will be visible, while the need for additional effort lurks hidden and unquantified beneath the surface. Transparency is needed over the amount of work which is genuinely believed to remain. That is a truth which the Product Backlog should always show.

Product Backlog estimates should therefore always take into account the cost of repaying technical debt in a timely manner. However, the Product Backlog will not necessarily describe the nature of the technical debt which is captured in those estimates. A Product Backlog is unlikely to have entries saying "refactor this", or "test that", or "replace method X with Y". Most Product Owners cannot be expected to prioritise such work in relation to other Product Backlog Items, or even perhaps to understand it at all. They may not be willing to assume this debt themselves in order to manage it. This debt is a technical matter which may be more sensibly managed by the Development Team, such as by means of a technical debt register. The estimates on the Product Backlog must however account for the scale of any such debt so recorded, in order to provide transparency over the work which truly remains. The cost of eliminating debt must be reflected in the estimates which are given for implementing any further work which the Product Owner has enumerated. In short, technical debt may not describe product scope, but it always has consequences for it.


What did you think about this post?

Comments (9)


Bartek k
05:32 pm April 7, 2017

Ian,
Thanks for those posts about technical debt. A good read.

I’m trying to figure out how the estimation would look like when Product Backlog (PB) and Technical Debt Register (TDR) are in place.

Let’s assume, that Development team has it’s own Technical Debt Register. Lets assume further, that this register is estimated and that those estimates are reflected in Product Backlog items.

In order for above to work, each item in the TDR must be related to one or more PB items, so there are no orphans in TDR, and all refactoring effort is included in the Backlog. The relation would be of dependence: “in order to do this PB item, the effort for this TDR item must be included”. If that’s true, then lets go further.

Let's take another assumption that Product Backlog contains following items: [A,B,C,D,E] and Technical Debt Register consists of [x1,x2,x3,x4]. The captured dependencies between them are:

[A] [x1,x4]
[B] [x4]
[C] [x2]
[D] -
[E] [x2,x3]

Now, how The Development Team should estimate PBIs, so that there is no same refactoring work counted twice and at the same time all items from the PB have proper estimates?


Erik Buitenhuis
02:58 pm April 12, 2017

In my opinion, there are 2 places that can be used to manage technical dept.

The first and most important one is in how the Development Team performs its work. Quality is non-negotiable and the team should include practices like refactoring in their daily work. The place to manage this is the DoD.

Some types of tech.dept can not be managed by making changes to the way a team delivers Product Backlog Items. Think of platform or framework upgrades. This type of work needs to be planned and scheduled explicitly. The place to manage this is the Product Backlog. In order for the Product Owner to be able to prioritize this technical work with building new features, the Development Team needs to help the Product Owner understand not only the effort it will take to finish these Product Backlog Items, but also the cost / benefits of these items (and the consequences of delays).

I may have misunderstood how the Technical Debt Register should work but having 2 separate sources of "work" (Product Backlog and Technical Debt Register) will make it more difficult to decide what to work on.


Philippe F
08:31 pm April 15, 2017

I find it quite difficult to express important technical debt inside existing PB items. It is ok for small items related to quality at the Development Team effort, but the PO may feel cheated when seeing that some items have such a big expense.

And some technical debt may impact all items together, like a system upgrade. I find it better to establish mutual understanding of the cost / benefit with the PO of this technical debt in this case. Of course, PO being under the pressure of marketing and sales may choose to keep the technical debt, it's not his problem after all. As always, the balance is difficult.


Alan Larimer
05:21 pm April 18, 2017

I feel that much of the language and presentation speaks in terms of a lack of collaboration.

It also exhibits the past project management practices of delivering more, faster which has historically been the root of poor software development quality and high maintenance costs.

Once again, "The Product Backlog is an ordered list of everything that might be
needed in the product and is the single source of requirements for any
changes to be made to the product."


Luke Puplett
10:09 am July 9, 2018

A confused and rambling article with reference to implied hard rules. The article makes it sound like the PO isn't on the same team as the developers. Dysfunctional.


quietone
07:19 pm January 14, 2019

Why not time box tech debt work and keep it off the backlog.
It's not estimated and adds clutter to the product and sprint backlog.


Manauwar Alam
09:27 pm February 14, 2019

I don't agree. The article is described both perspectives, not a dysfunction.


Luke Puplett
10:35 am February 16, 2019
It’s important to remember that the Product Backlog is not a dumping ground for the Development Team's technical debt. That debt is owed by the Development Team to the Product Owner and the stakeholders the PO represents. They expect and trust the Development Team to do the right thing, always, at a technical level. The Development Team has a right to assume technical debt if they believe that it is indeed the correct thing to do in a given situation. However that debt cannot then be palmed off onto the Product Owner by disguising it as additional "scope" to be prioritised and negotiated.

The Development Team's debt? I think its the Product Team's debt and therefore the Product Owner's debt. She owns the product and that product has technical debt.

If the debt is to be "owed" then its owed to the people that are frustrated by it, and that's usually the developers. Usually its the PO that wants to take on debt which is likely to be a headache for developers since it may make the system hard to change, unpleasant to work on or cause problems that have them paged at 3am. The PO doesn't get woken. If anyone is owing anything its the PO to engineering.

There are other things here that read like mantra; hard rules, laws, "must" and such language. Rules = rigidity and that's the enemy of pragmatism which is the essence of agility.

It's nonsense.


Bertran du Guesclin
06:01 pm February 24, 2020

One must also check the incident log. Perhaps a technical debt backlog item is causing a lot of incidents or complaints.