@AdamTornhill Questioning Technical Debt Like a financial debt, the - - PowerPoint PPT Presentation

adamtornhill questioning technical debt
SMART_READER_LITE
LIVE PREVIEW

@AdamTornhill Questioning Technical Debt Like a financial debt, the - - PowerPoint PPT Presentation

@AdamTornhill Questioning Technical Debt Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development


slide-1
SLIDE 1

@AdamTornhill

slide-2
SLIDE 2

“Like a financial debt, the technical debt incurs interest payments, which come in the form of the extra effort that we have to do in future development”

Questioning Technical Debt

https://martinfowler.com/bliki/TechnicalDebt.html

@AdamTornhill

slide-3
SLIDE 3

Interest Rate Is A Function Of Time

http://i.imgur.com/a8Xo4Hp.png

@AdamTornhill

slide-4
SLIDE 4

All Technical Debt Isn’t Equal

@AdamTornhill

slide-5
SLIDE 5

@AdamTornhill

Most Technical Debt Isn’t Technical

slide-6
SLIDE 6

There’s A Strong Link Between Technical Debt And The Organisation

@AdamTornhill

slide-7
SLIDE 7

Wish List: Information to Prioritize Technical Debt

@AdamTornhill

Where’s the Highest Interest Rate? Does the Architecture Support the way our System Evolves? Any Productivity Bottlenecks for Inter-Team Coordination?

slide-8
SLIDE 8

Collective Intelligence

Social information

Time

@AdamTornhill

Uncover Evolutionary Patterns In A System

Frequencies

slide-9
SLIDE 9

Hotspots Where’s The Highest Interest Rate?

slide-10
SLIDE 10

Hotspots - A Tool To Prioritize

@AdamTornhill

slide-11
SLIDE 11

Code Complexity Code Change Frequency Hotspot

@AdamTornhill

slide-12
SLIDE 12

Hotspots - A Tool To Prioritize

Hotspots Hotspots

slide-13
SLIDE 13

All Code is Equal …but some Code is more equal than others*

* Sorry, George Orwell

slide-14
SLIDE 14

Why Hotspots Work

1 Year in Roslyn (C#, VB) 6 Years of Erlang 12 Years of Ruby on Rails Each file in the system Change Frequency

Reference: Your Code as a Crime Scene, ISBN:1680500384

Prioritize improvements here! Ignore the long tail

slide-15
SLIDE 15

Hotspots

slide-16
SLIDE 16

Case Study:

@AdamTornhill

slide-17
SLIDE 17

gc.cpp

@AdamTornhill

slide-18
SLIDE 18

File Level Hotspots Function Level Hotspots X Ray

Recommended functions to improve.

Hotspots X-Ray

slide-19
SLIDE 19

Read More:

Function-Level

@AdamTornhill

slide-20
SLIDE 20

Normalization of Deviance

@AdamTornhill

slide-21
SLIDE 21

Supervise your Complexity Trends

@AdamTornhill

Warning Sign! Refactoring Increases again

slide-22
SLIDE 22

Hotspots Summary

Hotspots find the code with the highest interest rate. Hotspots work because all code isn’t equal. Supervise the Complexity Trend of your Hotspots.

slide-23
SLIDE 23

Evaluate Your Architectural Patterns

Does the Architecture Support the way our System Evolves?

slide-24
SLIDE 24

Code is Auto-Destructive Art

@AdamTornhill

slide-25
SLIDE 25

Your System’s Tipping Point?

slide-26
SLIDE 26

DRM Shared DRM/AMD …

Specify Your Logical Components

@AdamTornhill

slide-27
SLIDE 27

Identify Hotspots on a (Micro)Service Level

@AdamTornhill

slide-28
SLIDE 28

FuelInjector

Temporal Coupling

Diagnostics Combustion Commit #1 Commit #2 Commit #3 Time

@AdamTornhill

Read More: http://www.empear.com/blog/software-revolution-part3/

slide-29
SLIDE 29

Model Controller View Services ORM Repository SQL

Change Coupling

Layers: A Separation of Concerns

General Observation: 30-70 % of all commits touch multiple layers

@AdamTornhill

slide-30
SLIDE 30

Supervise The Change Coupling Between Services

@AdamTornhill

Temporal Coupling (potentially across repository boundaries)

slide-31
SLIDE 31

The Microservices Shotgun Surgery Pattern

@AdamTornhill

slide-32
SLIDE 32

Tools

Evolution Radar http://reveal.inf.usi.ch/web/dambros/tools/evoradar.php CodeScene: free for open source (commercial) https://codescene.io/ Moose Platform: open source platform http://www.moosetechnology.org/ Code Maat: open source, text-only (GPL) https://github.com/adamtornhill/code-maat

slide-33
SLIDE 33

Architecture Summary

Identify your Architectural Hotspots. Know your System’s Tipping Point. Use Temporal Coupling to Evaluate your Architecture.

slide-34
SLIDE 34

Meet The Social Side of Your Code

Any Productivity Bottlenecks for inter-team coordination?

slide-35
SLIDE 35

Process Loss

Process Loss

The Potential Productivity

Individual Contributions

Real Productivity

Team Work

@AdamTornhill

slide-36
SLIDE 36

Diffusion of Responsibility

slide-37
SLIDE 37

Fractal Value: M. D’Ambros, M. Lanza, and H Gall. Fractal Figures: Visualizing Development Effort for CVS Entities.

Inter-Team Overlap Fractal Value ~1.0 Views

Integration

Tasks Backup

Tests

Measure Team Coordination

Excess Parallel Work

The Diffusion of Responsibility

slide-38
SLIDE 38

Measuring Conway’s Law

Architectural Pattern: Package by Feature

Views Features

@AdamTornhill

Front-End Team Export Team Recommendations Team Ads Team Calculations Team Backup Team

slide-39
SLIDE 39

Team Team Team Team Team Team Team Team Team Team Team Team

The Perils of Feature Teams

@AdamTornhill

slide-40
SLIDE 40

Align Your Architecture and your Organisation

@AdamTornhill

slide-41
SLIDE 41

Make Decisions Influenced By Data

@AdamTornhill

slide-42
SLIDE 42

@AdamTornhill

Time - The Hidden Dimension of Software Design http://www.empear.com/blog/software-revolution-part3/ The Day I Parsed A Monster http://www.empear.com/blog/parse-a-monster/ Read The Book: Your Code As A Crime Scene https://pragprog.com/book/atcrime/your-code-as-a-crime-scene CodeScene: The Analyses as a Service https://codescene.io/

adam.tornhill@empear.com