-
What is technical debt?
- Anything that dlows down development
- Kent Beck's rule for SImple Code
- Inefficient manual releases routines
-
Why is it a problem?
- T.D. kills release plans
- It kills products (heavy weight problem - does not go away)
- It kills companies
- It de-motivates everyone
- It is expensive to fix
- WASTE - more time fixing, less time building new features
-
Why does it happen?
- Short-term thinking
- Lack of slack
- Unsustainable pace
- Not talking about it
- Lack of skills
- Broken window syndrome
- Lack of ownership
-
How can you detect it?
- Customers
- Developers
-
Metrics
- Duplication
- Test Coverage
- Length of methods and classes
- Velocity (iteration/release)
-
How can you avoid it?
-
Pull scheduling
- Sustainable pace
- slack time
- TDD
- Burning visibility of debt
-
Clear definition of done
- Integrated into build
- release notes updated
- automated test written
-
How to deal with technical debt
- Step 1: Go Slower, Stop accumulating debt
-
Step 2: (if feasible)
- Go even slower
- create less each sprint
- start paying down
-
What can you do about it?
- Ignore/Denial
- Rebuild (expensive/risky)
- Remove excess features
-
Incremental Improvements
- Fix a little bit each iteration, while still delivering business value
- Refactoring/bug bash sprints
-
Test Automation Backlog
- Determine test needed
- Classify tests - risk, cost manual vs automated
- Choose prioritization/sort list. E.g. manual test cost, risk, automation test cost
-
Fix the product not just the product
- Technical problems are symptons of process
-
When a defect slips into a release
- Fix the defect
- Root Cause Analysis
- 5 Why's
- Improve process (e.g. unit tests) to reduce risk
-
Take Away
- Talk About the debt
- Stop Accumulating It!
- Fix incrementally
- Fix the process, not just the product