As we iterate faster in Agile cycles, we tend to choose locally optimal solutions. E.g:- We use an algorithm which has poor performance so that we can deliver the feature to customer early. These choices lead to a build-up of technical debt in software; reduces our velocity in future iterations and we deliver less business value to customers. Counter-intuitively, we become less agile. So how can we prevent technical debt from growing? First you stop it getting worse – stop the leak, and then manage it down – clear up the flood. Making this concrete, debt gets manifested as code analysis issues, missing tests, flaky and overlapping tests, tangled dependencies and so on. The problem is that as tools get switched on to manifest that debt, the developer is faced with a wall of issues – the flood, that is just too overwhelming to deal with. So to take control of the debt, those existing issues need to be hidden so developers get visibility into the new ones that they introduce, and fix them. Then they can stop the leak. To clear up the flood, there are a number of strategies that can be employed, from clearing up as you go, e.g. when you change a method or file clear the debt out of that, to a more planful approach choosing to clean up specific components or particular kinds of debt, using e.g. the SQALE pyramid as a guide.
In this talk, I will walk you through best practices in setting up a system to measure and understand your technical debt. After that, I will show you a real-life example of the “Wall of Issues” and show how to focus and manage it down.