Menu: Reference

Example: Product-line technical debt over 2 years

A 90-node strategic tree, built in one planning cycle and updated in the next.

Context

A software organization sold a product line of operations software, installed at each customer's site. Over the years, the product line had built up technical debt of many kinds: deployments that were different for every customer, gaps in test coverage, a tightly coupled architecture, slow development, and a growing support burden. Customer confidence was suffering.

These problems were not separate. Each one made others worse, and together they stood between the organization and what it wanted from the business.

Goal

Connect the technical debt of the whole product line to the business outcomes it was holding back, in one picture, to inform strategy over several years.

The outcomes on the tree are business goals: a better customer NPS, a better uptime SLA than competitors, more customers on the core product, and more sales of an add-on product.

How the tree was built

The tree was built in a digital diagramming tool, as one full tree on a single page. It was built in one planning cycle and brought back, updated, in a later one. The 2 versions are called the first year and the second year here.

Besides the full tree, the document had a page for a blocked outcomes view. It lists every outcome with the 2 to 5 problems that block it.

The tree

In its second year, the tree has about 90 nodes and 100 arrows. This excerpt shows 14 of them.

Excerpt of the product-line technical debt tree, second year 14 nodes and 13 arrows: 8 root / problem, 2 artifact / deliverable, 1 action / intervention, 3 desired state / outcome. A text version follows the diagram. Deployment Support and reliability [P]Deploymentrequires manyuniquelycustomized steps [D]Automateddeployment ofthe serverservices [P]Each deploymentis differentfrom each other [A]Fasterdeploymentprocess inproduction [P]Unable to testall variations [P]Deploymentissues are firstfound inproduction [P]Some bugs areactually newfeature requests [P]Cases reach tier3 with 50 ormore comments [P]High supportburden [P]Low customerconfidence [D]SLIs and SLOsfor availability [O]More customerson the coreproduct [O]Better customerNPS [O]Better uptimeSLA thancompetitors Legend [P] Root / Problem [A] Action / Intervention [O] Desired State / Outcome [D] Artifact / Deliverable Influences Blocks / Impedes Attacks Flow: roots (bottom) → outcomes (top). Context: the technical debt of a product line, second year. An anonymized excerpt of about 90 nodes.
14 of about 90 nodes. Frames group the nodes by area, artifacts sit next to what they relate to, and the outcomes line up at the top.
Diagram as text: Excerpt of the product-line technical debt tree, second year

Nodes:

  • Root / Problem: "Deployment requires many uniquely customized steps" (in "Deployment")
  • Root / Problem: "Each deployment is different from each other" (in "Deployment")
  • Root / Problem: "Unable to test all variations" (in "Deployment")
  • Root / Problem: "Deployment issues are first found in production" (in "Deployment")
  • Root / Problem: "Some bugs are actually new feature requests" (in "Support and reliability")
  • Root / Problem: "Cases reach tier 3 with 50 or more comments" (in "Support and reliability")
  • Root / Problem: "High support burden" (in "Support and reliability")
  • Root / Problem: "Low customer confidence" (in "Support and reliability")
  • Action / Intervention: "Faster deployment process in production" (in "Deployment")
  • Desired State / Outcome: "More customers on the core product"
  • Desired State / Outcome: "Better customer NPS"
  • Desired State / Outcome: "Better uptime SLA than competitors"
  • Artifact / Deliverable: "Automated deployment of the server services" (in "Deployment")
  • Artifact / Deliverable: "SLIs and SLOs for availability" (in "Support and reliability")

Arrows:

  • "Deployment requires many uniquely customized steps" influences "Each deployment is different from each other"
  • "Each deployment is different from each other" influences "Unable to test all variations"
  • "Unable to test all variations" influences "Deployment issues are first found in production"
  • "Automated deployment of the server services" attacks "Deployment requires many uniquely customized steps"
  • "Automated deployment of the server services" influences "Faster deployment process in production"
  • "Faster deployment process in production" influences "More customers on the core product"
  • "Some bugs are actually new feature requests" influences "High support burden"
  • "Cases reach tier 3 with 50 or more comments" influences "High support burden"
  • "High support burden" influences "Low customer confidence"
  • "Deployment issues are first found in production" influences "Low customer confidence"
  • "Low customer confidence" blocks "More customers on the core product"
  • "Low customer confidence" blocks "Better customer NPS"
  • "SLIs and SLOs for availability" influences "Better uptime SLA than competitors"

Read the left column from the bottom. Every deployment needs its own customized steps, so every deployment is different, so nobody can test all the variations, so deployment issues are found for the first time in production. Each node on its own was well known. The chain was surfaced by the exercise and discussion facilitated by the tree.

From the first year to the second

First year Second year
Problems Dozens, across the whole product line Most persist. Very few are removed. New ones appear, about development paid for by customers and about how to justify improving existing features
Relationships in the legend Influences and blocks / impedes The same 2, plus attacks
Artifacts Also drawn in a separate artifacts tree, on its own page In the full tree only. The separate tree is kept, marked frozen and obsolete
Arrows As first drawn Several removed and redrawn as understanding shifted

The second-year tree also has a parking lot, a frame for nodes that do not fit yet.

What it revealed

Lessons