26
Tallying and Taming Technical Debt Eoin Woods Endava @eoinwoodz Andy Longshaw Co-op @andylongshaw Nick Rozanski Vitruvius @nickrozanski 1 SPA2019 – June 2019

Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Tallying and Taming Technical Debt

Eoin WoodsEndava

@eoinwoodz

Andy LongshawCo-op

@andylongshaw

Nick RozanskiVitruvius@nickrozanski

1

SPA2019 – June 2019

Page 2: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Content

09:15 – 09:45 – Introducing Technical Debt (30m)09:45 – 10:10 – Exercise 1: Classes of Technical Debt (25m)10:10 – 10:25 – Group: Collate Ex1 Output (15m)10:25 – 10:30 – Exercise 2: Finding and Mitigating (5m)10:30 – 10:45 – Break10:45 – 11:25 – Exercise 2 continued (40m)11:25 – 11:45 – Presentations (20m)11:45 – 12:00 – Recap and Conclusions (15m)

Page 3: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

INTRODUCING TECHNICAL DEBT

3

09:15 – 09:45

Page 4: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Defining Technical Debt

4

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.

Kruchten, Nord and Ozkaya“Managing Technical Debt” - 2019

Page 5: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Why Do We Care?

• Reduces speed of delivery• Reduces options for change• Reduces morale in the team• Reduces reliability

• Increases cost of change• Increases cost of operation• Increases operational risk

REDUCES OUR RETURN ON INVESTMENT

Page 6: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

TECHNICAL DEBT IS OFTEN WHAT PREVENTS US MEETING A FUTURE NEED IN A

TIMELY AND COST EFFECTIVE MANNER

Page 7: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Incurring Technical Debt (Fowler)

7

Page 8: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

(Some) Areas Where Technical Debt is Found

Intra-Module Inter-Module

Testing

User ExperienceData

Operation

Platform

+ Functional

Page 9: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Architecture• Style or pattern

violations & inconsistency

• Structural complexity• High inter-component

communication• Data duplication and

multi-mastering

Code• Complexity• Missing tests• Large classes,

methods or functions• Misleading names• Poor cohesion• Unnecessary coupling

(many types)

Production• Missing monitoring• Manual deployment

steps• Manual

“housekeeping”• Manual data patching• Lack of deployment

meta-data

Categories of Technical Debt and Examples

9

(Categories from “Managing Technical Debt”, Kruchten, Nord and Ozkaya, 2019)

Page 10: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Causes and Symptoms

10

WE WILL FOCUS ON THE SYMPTOMSAND WORK BACKWARDS TO THE CAUSES

Internal Communication

Poor Domain Knowledge

External Pressures Poor Tooling

Low Skill Level Fear of Change OrganisationalStructure

Page 11: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

What are we calling technical debt?

• Bad architecture• Bad code structure• Poor code implementation• Bad use of tools or frameworks• Systemic operational issues

• Bad process• Poor application of techniques• Bad team dynamics• Bad organisational structure

(sorry Mr. Conway)

12

✓ ✗

Page 12: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Measuring Technical Debt

13

Measure metrics relating to a category of technical debt

• Cyclomatic complexity• Hotspots in the codebase• Production error rates

Measure the impact oftechnical debt

• Cycle time• Defects• Production outages• Cost of change or ownership• Build and deploy times

And many more…

Page 13: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

EXERCISE 1:CLASSES OF TECHNICAL DEBT

14

09:45 – 10:10

Page 14: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Ex1: Classes of Technical Debt [25 mins]

Objective Brainstorm important classes of technical debt and organize them

Inputs Your collective experience

Outputs • List of potential classes of technical debt (Post-its)• Organised into code/architecture/production categories

or your own taxonomy

Process • Brainstorm examples of technical debt• As a group, list potential classes of tech debt on Post-its• Organise into categories (ours or yours)

15

Page 15: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Categorising Classes of Technical Debt

16

Code Architecture Production

Missing monitoring

No error logging/alerting Long-running

tests

Page 16: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

EXERCISE 1:COLLATE OUTPUT

17

10:10 – 10:25

Page 17: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Ex1: Collate Outputs [15 mins]

Objective Organise our outputs into one shared taxonomy of technical debt

Process • Each group will …• Describe your tech debt categories• Code / Architecture / Production or your own• We’ll put each on the wall

• Describe your classes of tech debt and put the Post-its into the appropriate categories on the wall

• We will rationalize the categories and classes as we go!

18

Page 18: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

EXERCISE 2:FINDING, MEAURING, AVOIDING, MITIGATING

19

10:25 – 11:25 (inc break)

Page 19: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Ex2: Finding, Measuring, Avoiding, Mitigating

Objective Each group creates useful advice for one of our classes of technical debt

Inputs • Tech debt categories and classes from Ex1• Your experience

Outputs • A tech debt description table for your chosen class of technical debt [next slide]

Process • Each group choose a tech debt class to work on

• Develop answers to the questions posed by the technical debt description table [next slide]

20

[45m]

Page 20: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Describing Classes of Technical Debt

21

Name What is the name of this class of tech debt?

Summary Where do you observe it, what are its characteristics, how do you recognize it?

Measurement Approach Can you measure this class of technical debt? How do you know it severity? Can you measure quantity?

Consequences Why is it important to avoid or remediate this debt? What are the consequences of leaving it?

Avoidance Approach How do you avoid this class of technical debt occurring?

Remediation Approach How can the debt be remediated? When should this occur? Who needs to do it?

Page 21: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

EXERCISE 2:GROUP PRESENTATIONS

22

11:25 – 11:45

Page 22: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Presenting Our Results

23

Each Group Present Your Technical Debt Description Table

5 Minutes Please!

Page 23: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

RECAP AND CONCLUSIONS

24

11:45 – 12:00

Page 24: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Recap

• Technical debt is those aspects of implementation that cause problems later due to risk, cost or other limiting factor• Can be deliberate or inadvertent (and reckless or prudent too)• There are potentially many classes, each with their own implications

and tactics to avoid or mitigate• No significant catalogue exists today to provide guidance• We have tried to start building the taxonomy and explored if we can

create tangible advice for some classes of technical debt

25

Page 25: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

Conclusions

Your thoughts on the taxonomy?

… and the description tables?

26

Page 26: Tallying and Taming Technical Debt · 2019. 7. 6. · up a technical context that can make a future change more costly or impossible. Technical debt is a contingent liability whose

THANK YOU/ Eoin Woods / Andy Longshaw / Nick Rozanski/ @eoinwoods / @andylongshaw / @nickrozanski

27