SlideShare a Scribd company logo
Selling The Investment To Pay
Down Technical Debt
The Code Christmas Tree

Mike Kaiser
@kaisermike

Guy Royse
@guyroyse
Mike Kaiser

Guy Royse
Technical
Debt
Code
Christmas
Tree
300

Cyclomatic Complexity

250
200
150
100
50
0
0

1

2

3

4
Number of IFs

5

6

7

8
Reactions
BVM

Sonar

300

Cyclomatic Complexity

250
200
150
100
50
0
0

1

2

3

4
Number of IFs

5

6

7

8

Microsoft
Tree Mapper
Lessons Learned
•
•
•
•

Make it visible – location matters, size matters
Use charts to enable the conversation
Color can bring about different reactions
Non-developers can understand aspects of the
code if you present it graphically
Questions?
Comments?
Mike Kaiser
@kaisermike
kaiserflyer@gmail.com

Contact

Links

Guy Royse
@guyroyse
guy@guyroyse.com

BVM
http://github.com/guyroyse/bvm or
gem install bvm
Sonar
http://sonarsource.org
Treemapper
http://research.microsoft.com/en-us/downloads/3f3ed95e26d8-4616-a06c-b609df29756f/default.aspx

More Related Content

Similar to The Code Christmas Tree: Selling the Investment for Technical Debt

Construa chatbots conectados ao Microsoft Teams (no-code)
Construa chatbots conectados ao Microsoft Teams (no-code)Construa chatbots conectados ao Microsoft Teams (no-code)
Construa chatbots conectados ao Microsoft Teams (no-code)
Renato Romão
 
Netta Doron - Delivery on steroids - Codemotion Rome 2019
Netta Doron - Delivery on steroids - Codemotion Rome 2019Netta Doron - Delivery on steroids - Codemotion Rome 2019
Netta Doron - Delivery on steroids - Codemotion Rome 2019
Codemotion
 
Sbtug 29 July2009 Agenda
Sbtug 29 July2009 AgendaSbtug 29 July2009 Agenda
Sbtug 29 July2009 AgendaCraig Bailey
 
December 2022 Microsoft 365 Need to Know Webinar
December 2022 Microsoft 365 Need to Know WebinarDecember 2022 Microsoft 365 Need to Know Webinar
December 2022 Microsoft 365 Need to Know Webinar
Robert Crane
 
November 2021 Microsoft 365 Need to Know Webinar
November 2021 Microsoft 365 Need to Know WebinarNovember 2021 Microsoft 365 Need to Know Webinar
November 2021 Microsoft 365 Need to Know Webinar
Robert Crane
 
The Ultimate Pagination for SEO
The Ultimate Pagination for SEOThe Ultimate Pagination for SEO
The Ultimate Pagination for SEO
Catalyst
 
July 2021 Microsoft 365 Need to Know Webinar
July 2021 Microsoft 365 Need to Know WebinarJuly 2021 Microsoft 365 Need to Know Webinar
July 2021 Microsoft 365 Need to Know Webinar
Robert Crane
 
Serverless patterns v2 public
Serverless patterns v2 publicServerless patterns v2 public
Serverless patterns v2 public
Yochay Kiriaty
 
Dev340 Thake Coates
Dev340 Thake CoatesDev340 Thake Coates
Dev340 Thake Coates
Andrew Coates
 
M365 virtual marathon speaker peter ward - chat bot in teams
M365 virtual marathon speaker  peter ward - chat bot in teamsM365 virtual marathon speaker  peter ward - chat bot in teams
M365 virtual marathon speaker peter ward - chat bot in teams
Peter_1020
 
Features & Functionality in Sage 300- I Moved to Sage 300c - What Comes With It?
Features & Functionality in Sage 300- I Moved to Sage 300c - What Comes With It?Features & Functionality in Sage 300- I Moved to Sage 300c - What Comes With It?
Features & Functionality in Sage 300- I Moved to Sage 300c - What Comes With It?
Net at Work
 
May 2023 CIAOPS Need to Know Webinar
May 2023 CIAOPS Need to Know WebinarMay 2023 CIAOPS Need to Know Webinar
May 2023 CIAOPS Need to Know Webinar
Robert Crane
 
July 2022 CIAOPS Need to Know Webinar
July 2022 CIAOPS Need to Know WebinarJuly 2022 CIAOPS Need to Know Webinar
July 2022 CIAOPS Need to Know Webinar
Robert Crane
 
High Performance Web Design
High Performance Web DesignHigh Performance Web Design
High Performance Web Design
Koji Ishimoto
 
March 2022 CIAOPS Need to Know Webinar
March 2022 CIAOPS Need to Know WebinarMarch 2022 CIAOPS Need to Know Webinar
March 2022 CIAOPS Need to Know Webinar
Robert Crane
 
Imagesandvideo stockholm webmeetup
Imagesandvideo stockholm webmeetupImagesandvideo stockholm webmeetup
Imagesandvideo stockholm webmeetup
Doug Sillars
 
BrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkBrazilJS Perf Doctor Talk
BrazilJS Perf Doctor Talk
Josh Holmes
 
デザインシステムの海で3年間もがいてみて
デザインシステムの海で3年間もがいてみてデザインシステムの海で3年間もがいてみて
デザインシステムの海で3年間もがいてみて
Yahoo!デベロッパーネットワーク
 
December 2020 Microsoft 365 Need to Know Webinar
December 2020 Microsoft 365 Need to Know WebinarDecember 2020 Microsoft 365 Need to Know Webinar
December 2020 Microsoft 365 Need to Know Webinar
Robert Crane
 

Similar to The Code Christmas Tree: Selling the Investment for Technical Debt (20)

Construa chatbots conectados ao Microsoft Teams (no-code)
Construa chatbots conectados ao Microsoft Teams (no-code)Construa chatbots conectados ao Microsoft Teams (no-code)
Construa chatbots conectados ao Microsoft Teams (no-code)
 
Netta Doron - Delivery on steroids - Codemotion Rome 2019
Netta Doron - Delivery on steroids - Codemotion Rome 2019Netta Doron - Delivery on steroids - Codemotion Rome 2019
Netta Doron - Delivery on steroids - Codemotion Rome 2019
 
Sbtug 29 July2009 Agenda
Sbtug 29 July2009 AgendaSbtug 29 July2009 Agenda
Sbtug 29 July2009 Agenda
 
December 2022 Microsoft 365 Need to Know Webinar
December 2022 Microsoft 365 Need to Know WebinarDecember 2022 Microsoft 365 Need to Know Webinar
December 2022 Microsoft 365 Need to Know Webinar
 
November 2021 Microsoft 365 Need to Know Webinar
November 2021 Microsoft 365 Need to Know WebinarNovember 2021 Microsoft 365 Need to Know Webinar
November 2021 Microsoft 365 Need to Know Webinar
 
The Ultimate Pagination for SEO
The Ultimate Pagination for SEOThe Ultimate Pagination for SEO
The Ultimate Pagination for SEO
 
July 2021 Microsoft 365 Need to Know Webinar
July 2021 Microsoft 365 Need to Know WebinarJuly 2021 Microsoft 365 Need to Know Webinar
July 2021 Microsoft 365 Need to Know Webinar
 
Serverless patterns v2 public
Serverless patterns v2 publicServerless patterns v2 public
Serverless patterns v2 public
 
Dev340 Thake Coates
Dev340 Thake CoatesDev340 Thake Coates
Dev340 Thake Coates
 
M365 virtual marathon speaker peter ward - chat bot in teams
M365 virtual marathon speaker  peter ward - chat bot in teamsM365 virtual marathon speaker  peter ward - chat bot in teams
M365 virtual marathon speaker peter ward - chat bot in teams
 
Features & Functionality in Sage 300- I Moved to Sage 300c - What Comes With It?
Features & Functionality in Sage 300- I Moved to Sage 300c - What Comes With It?Features & Functionality in Sage 300- I Moved to Sage 300c - What Comes With It?
Features & Functionality in Sage 300- I Moved to Sage 300c - What Comes With It?
 
May 2023 CIAOPS Need to Know Webinar
May 2023 CIAOPS Need to Know WebinarMay 2023 CIAOPS Need to Know Webinar
May 2023 CIAOPS Need to Know Webinar
 
July 2022 CIAOPS Need to Know Webinar
July 2022 CIAOPS Need to Know WebinarJuly 2022 CIAOPS Need to Know Webinar
July 2022 CIAOPS Need to Know Webinar
 
High Performance Web Design
High Performance Web DesignHigh Performance Web Design
High Performance Web Design
 
March 2022 CIAOPS Need to Know Webinar
March 2022 CIAOPS Need to Know WebinarMarch 2022 CIAOPS Need to Know Webinar
March 2022 CIAOPS Need to Know Webinar
 
Imagesandvideo stockholm webmeetup
Imagesandvideo stockholm webmeetupImagesandvideo stockholm webmeetup
Imagesandvideo stockholm webmeetup
 
BrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkBrazilJS Perf Doctor Talk
BrazilJS Perf Doctor Talk
 
202310
202310202310
202310
 
デザインシステムの海で3年間もがいてみて
デザインシステムの海で3年間もがいてみてデザインシステムの海で3年間もがいてみて
デザインシステムの海で3年間もがいてみて
 
December 2020 Microsoft 365 Need to Know Webinar
December 2020 Microsoft 365 Need to Know WebinarDecember 2020 Microsoft 365 Need to Know Webinar
December 2020 Microsoft 365 Need to Know Webinar
 

More from Guy Royse

Putting the D&D in TDD
Putting the D&D in TDDPutting the D&D in TDD
Putting the D&D in TDD
Guy Royse
 
Machine Learning for Fun - Finding Bigfoot with the Nexosis API
Machine Learning for Fun - Finding Bigfoot with the Nexosis APIMachine Learning for Fun - Finding Bigfoot with the Nexosis API
Machine Learning for Fun - Finding Bigfoot with the Nexosis API
Guy Royse
 
Machine Learning for Gamers - Dungeon Forecasts & Dragon Regressions
Machine Learning for Gamers - Dungeon Forecasts & Dragon RegressionsMachine Learning for Gamers - Dungeon Forecasts & Dragon Regressions
Machine Learning for Gamers - Dungeon Forecasts & Dragon Regressions
Guy Royse
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
Guy Royse
 
Mad Computer Science: Testing COBOL with RSpec
Mad Computer Science: Testing COBOL with RSpecMad Computer Science: Testing COBOL with RSpec
Mad Computer Science: Testing COBOL with RSpec
Guy Royse
 
Programming on Bare Metal: Controlling Circuits with Code
Programming on Bare Metal: Controlling Circuits with CodeProgramming on Bare Metal: Controlling Circuits with Code
Programming on Bare Metal: Controlling Circuits with Code
Guy Royse
 
Putting the D&D in TDD
Putting the D&D in TDDPutting the D&D in TDD
Putting the D&D in TDD
Guy Royse
 
Those Who Know History are Doomed to Watch Others Repeat It
Those Who Know History are Doomed to Watch Others Repeat ItThose Who Know History are Doomed to Watch Others Repeat It
Those Who Know History are Doomed to Watch Others Repeat It
Guy Royse
 
Understanding Prototypal Inheritance
Understanding Prototypal InheritanceUnderstanding Prototypal Inheritance
Understanding Prototypal Inheritance
Guy Royse
 

More from Guy Royse (9)

Putting the D&D in TDD
Putting the D&D in TDDPutting the D&D in TDD
Putting the D&D in TDD
 
Machine Learning for Fun - Finding Bigfoot with the Nexosis API
Machine Learning for Fun - Finding Bigfoot with the Nexosis APIMachine Learning for Fun - Finding Bigfoot with the Nexosis API
Machine Learning for Fun - Finding Bigfoot with the Nexosis API
 
Machine Learning for Gamers - Dungeon Forecasts & Dragon Regressions
Machine Learning for Gamers - Dungeon Forecasts & Dragon RegressionsMachine Learning for Gamers - Dungeon Forecasts & Dragon Regressions
Machine Learning for Gamers - Dungeon Forecasts & Dragon Regressions
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
 
Mad Computer Science: Testing COBOL with RSpec
Mad Computer Science: Testing COBOL with RSpecMad Computer Science: Testing COBOL with RSpec
Mad Computer Science: Testing COBOL with RSpec
 
Programming on Bare Metal: Controlling Circuits with Code
Programming on Bare Metal: Controlling Circuits with CodeProgramming on Bare Metal: Controlling Circuits with Code
Programming on Bare Metal: Controlling Circuits with Code
 
Putting the D&D in TDD
Putting the D&D in TDDPutting the D&D in TDD
Putting the D&D in TDD
 
Those Who Know History are Doomed to Watch Others Repeat It
Those Who Know History are Doomed to Watch Others Repeat ItThose Who Know History are Doomed to Watch Others Repeat It
Those Who Know History are Doomed to Watch Others Repeat It
 
Understanding Prototypal Inheritance
Understanding Prototypal InheritanceUnderstanding Prototypal Inheritance
Understanding Prototypal Inheritance
 

Recently uploaded

Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
UiPathCommunity
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 

Recently uploaded (20)

Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 

The Code Christmas Tree: Selling the Investment for Technical Debt

Editor's Notes

  1. This is an experience report, so we’d like to start with introducing the situation we faced.Inherited code and pile of debt – quarter of a million lines of codeNew debt is checked in regularly
  2. 1 of 3 teams on the same code baseReleasing code about every three months, but not necessarily the same three months..Each team at various early stages of agile maturity / beliefs / excitementThree teams on the same code base, each at varying levels of maturity. Note – Introduce team names here?
  3. This is in a fortune 200 financial services company. Being a large company, there was a lot of politics. In addition, with agile just getting started in the company, many around the three teams had different levels of understanding and engagement in change.
  4. Mike – In the next 20 minutes we are first going to tell you a bit about ourselves, then our experience, and finally what learned and now recommend- We plan time at the end for questions, but please feel free to ask questions as you have themSo I’m obviously on the left, that’s from my summer vacation in … In this experience report, I was in the role of IM/Scrummasteron one of the three teams.Guy
  5. Ever hear the term spaghetti code? It gives the image of methods calling methods calling methods in circles of unintelligible code.Technical debt is “divergence in the cost to change code with quality from the optimal”. Still, the metaphor to personal debt works because until you fix those technical issues (the debt) you pay interest (the negative effects of technical debt). As to those negative effects….When you have technical debt you have business problems. Those short cuts you made in the past lead to slower code changes and higher defects.
  6. - In personal debt counseling people are called upon to stop using credit and use cash. This is because….- Also in personal debt counseling people are called upon to bring their financial history with them so they can discuss that data with others
  7. Big and VisibleIt’s a tree map. A tree map is …We chose size to be ….. Color is meant to be code complexity or code coverage and why.Why Code “Christmas” Tree
  8. - We felt this was a good representation of the reaction we got from developers on the three teams.“This is cool” – XP’ers, Can we use this get people excited about better quality?“Huh?” – What is technical debt? … Teaching moments.“Is going to make me look bad?” – We were able to do two things, First, for this application to be in this bad of shape it took years, so the problem and the solution are owned by all of us. Second, we were able to point to areas of the application recently written by our team … it was green.
  9. Outside the team were sets of IT managers and business stakeholders. Agile was new in company and the concept of technical debt not understood. Our fear was that the “red toner” would eventually be looked upon as a threat for them (after all it occurred under their watch) and that they might react negatively.Instead, the charts were slated for expanded use with other applications.- The owning IT director viewed it as a way to drive funding
  10. This is the happy part of our story. That IT director, who still had only a light understanding of technical debt, was able to use the charts to get us 3 weeks devoted to technical debt pay-down. Maybe not all the application needed, but a victory not imaginable only weeks before.[Celebration]But like most good blockbuster stories, it doesn’t end there. Our teams had formed a strong cadence of demo-ing our work at the close of each iteration. So a new problem emerged … how do we demo an entire iteration of ‘transparent from the UI’ technical debt clean up? We tried showing business users before and after code with the result being more questions than understanding. Then, back to the rescue, our Code Christmas Trees. By this time many business stakeholders had gotten a tour of our charts, so our show and tell incorporated a time series slide show of the charts changing over the three weeks. I wish I had a camera, because just like the surprise ending in the movies, we got applause, for the first time, in a demo.
  11. How we did it from Guy’s notes.