This book does three things very well:
- It explains what technical debt is and how it is different from defects/bugs. Their definition is as follows: "In software-intensive systems, technical debt consists of design or implementation constructs that are expedient in the short term but that set up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose impact is limited to internal system qualities—primarily, but not only, maintainability and evolvability."
- It emphasizes that not all technical debt is bad; a distinction should be made between unintentional and intentional technical debt. The latter recognizes there can be a benefit to taking on technical debt in the short term, e.g., to be faster to market.
- It argues you should monitor technical debt in the same system you use to monitor other work items, e.g., your backlog.
But while a clear definition of technical debt, recognizing its pros and cons, and a recommendation to track it is useful, it shouldn't take 237 pages of dry abstract academic writing with endless repetition and forward/backward references to explain this.
I was also left wondering who the intended audience is. I presumed software architects in industry, but at one point the recommendation is to talk to the software architect on the team to help identify technical debt. The authors' perspective as researchers observing software development teams shines through; this is not a relevant perspective to practitioners. The "practical" advice given stays in the overly abstract realm of "context-specific considerations", "business governance practices", "quality attributes", and "business goals".
In short, this is a badly written book without a clear structure or focus for the reader. The topic covered is relevant to practitioners, but probably better communicated in a different format.