SlideShare uma empresa Scribd logo
1 de 45
@AdamTornhill
InfoQ.com: News & Community Site
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations
/priority-technical-debt
• Over 1,000,000 software developers, architects and CTOs read the site world-
wide every month
• 250,000 senior developers subscribe to our weekly newsletter
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• 2 dedicated podcast channels: The InfoQ Podcast, with a focus on
Architecture and The Engineering Culture Podcast, with a focus on building
• 96 deep dives on innovative topics packed as downloadable emags and
minibooks
• Over 40 new content items per week
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon London
www.qconlondon.com
“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
Interest Rate Is A Function Of Time
http://i.imgur.com/a8Xo4Hp.png
@AdamTornhill
All Technical Debt Isn’t Equal
@AdamTornhill
@AdamTornhill
Most Technical Debt Isn’t Technical
There’s A Strong Link Between
Technical Debt And The Organisation
@AdamTornhill
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?
Collective Intelligence
Social information
Time
@AdamTornhill
Uncover Evolutionary Patterns In A System
Frequencies
Hotspots
Where’s The Highest Interest Rate?
Hotspots - A Tool To Prioritize
@AdamTornhill
Code Complexity
Code Change Frequency
Hotspot
@AdamTornhill
Hotspots - A Tool To Prioritize
Hotspots
Hotspots
All Code is Equal
…but some Code is more equal than others*
* Sorry, George Orwell
Why Hotspots Work
1 Year in Roslyn (C#, VB) 6 Years of Erlang 12 Years of Ruby on Rails
Each file in the system
ChangeFrequency
Reference: Your Code as a Crime Scene, ISBN:1680500384
Prioritize improvements here!
Ignore the long tail
Hotspots
Case Study:
@AdamTornhill
gc.cpp
@AdamTornhill
File Level Hotspots Function Level Hotspots
X Ray
Recommended functions to improve.
Hotspots X-Ray
Read More:
Function-Level
@AdamTornhill
Normalization of Deviance
@AdamTornhill
Supervise your Complexity Trends
@AdamTornhill
Warning Sign!
Refactoring
Increases again
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.
Evaluate Your Architectural Patterns
Does the Architecture Support the way our System Evolves?
Code is Auto-Destructive Art
@AdamTornhill
Your System’s Tipping Point?
DRM Shared
DRM/AMD
…
Specify Your Logical Components
@AdamTornhill
Identify Hotspots on a (Micro)Service Level
@AdamTornhill
FuelInjector
Temporal Coupling
Diagnostics
Combustion
Commit #1 Commit #2 Commit #3
Time
@AdamTornhill
Read More: http://www.empear.com/blog/software-revolution-part3/
Model
Controller
View
Services
ORM
Repository
SQL
Change CouplingLayers: A Separation of Concerns
General Observation:
30-70 % of all commits touch multiple layers
@AdamTornhill
Supervise The Change Coupling Between Services
@AdamTornhill
Temporal Coupling
(potentially across
repository boundaries)
The Microservices Shotgun Surgery Pattern
@AdamTornhill
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
Architecture Summary
Identify your Architectural Hotspots.
Know your System’s Tipping Point.
Use Temporal Coupling to Evaluate your Architecture.
Meet The Social Side of Your Code
Any Productivity Bottlenecks for inter-team coordination?
Process Loss
Process Loss
The Potential Productivity
Individual Contributions
Real Productivity
Team Work
@AdamTornhill
Diffusion of Responsibility
Fractal Value: M. D’Ambros, M. Lanza, and H Gall. Fractal Figures: Visualizing Development Effort for CVS Entities.
Inter-Team Overlap
Fractal Value
0 ~1.0
Views
IntegrationTasks
Backup
Tests
Measure Team Coordination
Excess Parallel Work
The Diffusion of Responsibility
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
Team
Team
Team
Team
Team
Team
Team
Team
Team
Team
Team
Team
The Perils of Feature Teams
@AdamTornhill
Align Your Architecture and your Organisation
@AdamTornhill
Make Decisions Influenced By Data
@AdamTornhill
@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
Watch the video with slide synchronization on
InfoQ.com!
https://www.infoq.com/presentations/priority-
technical-debt

Mais conteúdo relacionado

Mais de C4Media

Mais de C4Media (20)

Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 
Navigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery TeamsNavigating Complexity: High-performance Delivery and Discovery Teams
Navigating Complexity: High-performance Delivery and Discovery Teams
 
High Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in AdtechHigh Performance Cooperative Distributed Systems in Adtech
High Performance Cooperative Distributed Systems in Adtech
 
Rust's Journey to Async/await
Rust's Journey to Async/awaitRust's Journey to Async/await
Rust's Journey to Async/await
 
Opportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven UtopiaOpportunities and Pitfalls of Event-Driven Utopia
Opportunities and Pitfalls of Event-Driven Utopia
 
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayDatadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
 
Are We Really Cloud-Native?
Are We Really Cloud-Native?Are We Really Cloud-Native?
Are We Really Cloud-Native?
 
CockroachDB: Architecture of a Geo-Distributed SQL Database
CockroachDB: Architecture of a Geo-Distributed SQL DatabaseCockroachDB: Architecture of a Geo-Distributed SQL Database
CockroachDB: Architecture of a Geo-Distributed SQL Database
 
A Dive into Streams @LinkedIn with Brooklin
A Dive into Streams @LinkedIn with BrooklinA Dive into Streams @LinkedIn with Brooklin
A Dive into Streams @LinkedIn with Brooklin
 

Último

Último (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

A Crystal Ball to Prioritize Technical Debt