Tallying and Taming Technical Debt
An interactive workshop to create a comprehensive taxonomy of technical debt and examples of how to spot and mitigate the different types
Ward Cunningham identified the metaphor of technical debt, defining it as “Not quite right code which we postpone making right” and it has become an enduring idea which has been used by many software development teams since to think about managing the “not quite right” aspects of their systems. However, a lot of the mainstream discussion and advice relating to technical debt is limited to problems in code structure and refactoring individual code modules is often the only remediation approach discussed.
In reality our systems can contain all sorts of technical debt from problems in our test approach, to distortions in our domain model, to poorly chosen module partitioning to badly designed operational tools. In fact, nearly any technical decision can lead us to add to our system’s technical debt.
It often isn’t obvious how we should identify and mitigate all of the different sorts of technical debt. For example, how do we spot a poorly designed operational tool? And what is the best mitigation for it? Automate the process to remove the need for the tool? Spend time with the operational team to understand how they work? Have the operational team build their own tools? Or something else entirely. We usually work these things out on an ad hoc basis, but surely there must be lessons we can learn from our shared experiences in dealing with technical debt?
In this session we will work in groups to map out the various types of technical debt we’ve met, with the goal of producing a comprehensive taxonomy of types based on the experience of the attendees. We will then allocate different types of technical debt to different groups and ask them to define each clearly and work together to establish strategies and techniques for identifying and remediating each type of technical debt.
Software developers, managers, architects, testers, operational staff and others involved in creating and operating software systems over an extended period.
Benefits of participating
A chance to think carefully about types of technical debt and how to deal with them
Insight into how others identify and deal with technical debt
A structured guide to types of technical debt and how to deal with each
An introductory presentation including an initial set of types of technical debt
The description, identification and mitigations for one type of technical debt to show people what the second exercise should produce.
This will be a group-based workshop, aiming to synthesise useful outputs from the combined experience and judgement of the participants (and from any Internet-accessible resources that they wish to use).
It will run in two halves, the first to identify types of technical debt and the second to explore the technical debt types identified in the first half.
The goal of the workshop is to produce a clear taxonomy of types of technical debt, with each type well defined and with identification and mitigation strategies and techniques identified for each.
00:00 - 00:10 - Introduction to technical debt in its different forms and why it is important to manage
00:10 - 00:30 – Group Exercise 1: Types of Technical Debt. The attendees split into groups and each group works to produce a list of the types of technical debt.
00:30 - 00:50 – Collective Work: each group briefly introduces its types of technical debt and we work to combine them to a single master list
00:50 - 01:15 – Group Exercise 2: each group selects (or is allocated) one of the types of technical debt identified in Exercise 1. The group works to define it clearly (what it is and is not, what its implications are) and attempts to find at least one way of identifying this debt in a system and as many practical ways of mitigating it as possible. The result should be summarised on a flipchart sheet for presentation (or maybe we can do it online using a wiki).
01:15 - 01:30 - Break
01:30 – 01:45 – Group Exercise 2 continued
01:45 - 02:15 – Group Presentations: each group presents their definition and advice for a specific type of technical debt.
02:15 - 02:30 - Summarise learning and gather output
Technical debt taxonomy
A set of advice for different types of technical debt (hopefully!)
We'll produce these electronically via a blog or perhaps a Medium or LinkedIn post.