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.
Agile adopts an empirical approach to software development. One of the key aspects of a successful Agile Implementation is how quickly we can react to change. For this, we need to ensure that data flows seamlessly from customer to the Agile team. This data should form a critical part of our decision making.
Is the customer successful in using our product or service?
Which features are customer most interested in?
Where are the friction points in usage?
Where are the failures happening in our product?
How is the customer engaging with our product over time?
and many more similar questions.
In this talk, I discuss best practices in data collection, analysis and visualization and how data can make your Agile process and thereby your business more effective.