SlideShare una empresa de Scribd logo
BEYOND TECHNICAL DEBT
(CodeScene)
LITTLE SURVEY
Do you actually care?
Q&A
➤ How big is your organisation?
➤ Do you “measure” your technical debt?
➤ What kind of legacy code you have?
➤ Do you know what to refactor?
➤ Is it easy to prioritise refactorings?
➤ How do you know that things have actually improved after a
refactoring effort?
➤ Do you have any bottlenecks when multiple developers/teams need
to work on the same part of the codebase?
➤ How do you know which parts of the codebase you should focus on
during an off-boarding of a core developer?
WHAT IS TECHNICAL DEBT
And why you should care…
TECHNICAL DEBT
“Stuff that isn’t supposed to be there and is in the way of the
stuff that is supposed to be there.”
— Building Evolutionary Architectures (p. 110), by Neal Ford,
Rebecca Parsons, and Patrick Kia
LEHMAN
COMPLEXITY KILLS DEVELOPMENT SPEED
“It's my contention, based on
experience, that if you ignore
complexity, you will slow down.
You will invariably slow down over
the long haul
… the complexity will eventually
kill you. It will kill you in a way
that will make every sprint
accomplish less.
— Rich Hickey, Simple Made Easy
TECHNICAL DEBT HAS IMPACT ON BUSINESS & PRODUCT
CONVENTIONAL TOOLS
What’s missing?
ACTIONABLE?
source: http://www.austinjug.org/presentations/HeintzTechnicalDebtSonar.pdf
THOUSANDS OF YEARS OF TECHNICAL DEBT
➤ Where do you start when you want to pay it back?
CODESCENE
It’s a “movie” rather than a “snapshot”
… static analysis will never be able to tell you if that excess code
complexity actually matters – just because a piece of code is complex
doesn’t mean it’s a problem. 
CodeScene identifies and prioritizes technical debt based on how the
organization works with the code
— How CodeScene Differs From Traditional Code Analysis Tools
+ Time aspect
+ Organization & people
HOTSPOTS
Return On Investment
HOT-WHAT?
A hotspot is a complicated code that you have to work with often.
ReactJS
➤ In general, process measures based on the change history are more useful in predicting fault
rates than product metrics of the code: For instance, the number of times code has been
changed is a better indication of how many faults it will contain than is its length.
➤ We also compare the fault rates of code of various ages, finding that if a module is, on the
average, a year older than an otherwise similar module, the older module will have
roughly a third fewer faults. Our most successful model measures the fault potential of
a module as the sum of contributions from all of the times the module has been changed,
with large, recent changes receiving the most weight
HOTSPOTS ARE ALSO COMMON SOURCES OF BUGS
WORRISOME TRENDS
X-RAYS
Deep dive
X-RAY
➤ We’ve identified a problematic
file but it’s still huge!
➤ Let’s X-Ray it to find the most
problematic functions.
X-RAY
-
CHANGE
COUPLING
LEGACY CODE
And why technical debt isn’t just technical
LEGACY CODE
➤ Legacy code is typically used to describe the code that:
➤ lacks in quality (relative perspective)
➤ we didn’t write ourselves
HOW QUICKLY CAN YOU TURN YOUR CODEBASE INTO LEGACY CODE?
➤ (Off-boarding)
AFTER THEY LEAVE …
ON CODE REVIEWS
… and what to focus on
CODESCENE DELTA ANALYSIS (JENKINS)
PR COMMENTS
AND MORE
Always keep exploring
THERE’S MUCH MORE IN CODESCENE
➤ Change coupling
➤ Microservices
➤ Shotgun surgery
➤ Team conflicts
➤ Technical sprawl
➤ Proactive warnings
➤ Retrospectives
➤ Delivery Performance
➤ Branch Analyses
TO CONCLUDE…
➤ Technical debt is a real
problem regardless of
programming language
➤ There’s a huge amount of
useful information stored in
your version control system
➤ Ultimately, you need to rely on
human expertise
➤ Support your developer’s
judgment and experience with
data to get the highest ROI
RESOURCES
Where to learn more
➤ codescene.io
➤ codescene.io/showcase (React, ASP.NET, Rails, …)
➤ CodeScene blog: https://www.empear.com/blog/
➤ How CodeScene Differs From Traditional Code Analysis Tools
➤ Adam Tornhill - Talk Session: Prioritizing Technical Debt as if
Time and Money Matters
➤ Software Design X-Rays (the book)
➤ Predicting Fault Incidence Using Software Change History
➤ Simple Made Easy
➤ Elements of Clojure
???
APPENDINX
Keep Fun
ALAN PERLIS
I think that it's extraordinarily important that we in computer science
keep fun in computing. When it started out, it was an awful lot of fun. Of
course, the paying customers got shafted every now and then, and after a
while we began to take their complaints seriously. We began to feel as if we
really were responsible for the successful, error-free perfect use of
these machines. I don't think we are. I think we're responsible for
stretching them, setting them off in new directions, and keeping fun in the
house. I hope the field of computer science never loses its sense of fun.
Above all, I hope we don't become missionaries. Don't feel as if you're
Bible salesmen. The world has too many of those already. What you know
about computing other people will learn. Don't feel as if the key to successful
computing is only in your hands. What's in your hands, I think and hope, is
intelligence: the ability to see the machine as more than when you were first
led up to it, that you can make it more.
• Quoted in The Structure and Interpretation of Computer Programs by Hal
Abelson, Gerald Jay Sussman and Julie Sussman (McGraw-Hill, 2nd
edition, 1996)
WHY CODE-SCENE?

Más contenido relacionado

La actualidad más candente

Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystified
Marek Kirejczyk
 
Managing technical debt - Dan Nicola - Florin Cardasim
Managing technical debt - Dan Nicola - Florin CardasimManaging technical debt - Dan Nicola - Florin Cardasim
Managing technical debt - Dan Nicola - Florin CardasimCodecamp Romania
 
How To Handle Your Tech Debt Better - Sean Moir
How To Handle Your Tech Debt Better - Sean MoirHow To Handle Your Tech Debt Better - Sean Moir
How To Handle Your Tech Debt Better - Sean Moir
Mike Harris
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile designIgor Moochnick
 
Humans by the hundred (DevOps Days Ohio)
Humans by the hundred (DevOps Days Ohio)Humans by the hundred (DevOps Days Ohio)
Humans by the hundred (DevOps Days Ohio)
Yelp Engineering
 
Tester vs Developer
Tester vs DeveloperTester vs Developer
Tester vs Developer
Tricon Infotech
 
Zero to tested
Zero to testedZero to tested
Zero to tested
MagenTys
 
Yelp Tech Talks: Mobile Testing 1, 2, 3
Yelp Tech Talks: Mobile Testing 1, 2, 3Yelp Tech Talks: Mobile Testing 1, 2, 3
Yelp Tech Talks: Mobile Testing 1, 2, 3
Yelp Engineering
 
Notes On Agile Development
Notes On Agile DevelopmentNotes On Agile Development
Notes On Agile Development
Matt Griffin
 
Why change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringWhy change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and Refactoring
Carsten Windler
 
Product Vs Craft
Product Vs CraftProduct Vs Craft
Product Vs Craft
MagenTys
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Jez Humble
 
Testing: the more you do it, the more you'll like it
Testing: the more you do it, the more you'll like itTesting: the more you do it, the more you'll like it
Testing: the more you do it, the more you'll like it
Jeffrey McGuire
 
Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developers
hamvocke
 
Agile Australia 2016 - Rescuing Legacy Software from Impending Doom
Agile Australia 2016 - Rescuing Legacy Software from Impending DoomAgile Australia 2016 - Rescuing Legacy Software from Impending Doom
Agile Australia 2016 - Rescuing Legacy Software from Impending Doom
Jacques De Vos
 
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
mCloud
 
Enough about Process, Let’s Use Patterns
Enough about Process, Let’s Use PatternsEnough about Process, Let’s Use Patterns
Enough about Process, Let’s Use Patterns
TechWell
 
C* Summit 2013: Stepping Through the Lifecycle of a Service Offering with Cas...
C* Summit 2013: Stepping Through the Lifecycle of a Service Offering with Cas...C* Summit 2013: Stepping Through the Lifecycle of a Service Offering with Cas...
C* Summit 2013: Stepping Through the Lifecycle of a Service Offering with Cas...
DataStax Academy
 
Humans by the hundred
Humans by the hundredHumans by the hundred
Humans by the hundred
Yelp Engineering
 

La actualidad más candente (20)

Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Pair programming demystified
Pair programming demystifiedPair programming demystified
Pair programming demystified
 
Managing technical debt - Dan Nicola - Florin Cardasim
Managing technical debt - Dan Nicola - Florin CardasimManaging technical debt - Dan Nicola - Florin Cardasim
Managing technical debt - Dan Nicola - Florin Cardasim
 
How To Handle Your Tech Debt Better - Sean Moir
How To Handle Your Tech Debt Better - Sean MoirHow To Handle Your Tech Debt Better - Sean Moir
How To Handle Your Tech Debt Better - Sean Moir
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
 
Humans by the hundred (DevOps Days Ohio)
Humans by the hundred (DevOps Days Ohio)Humans by the hundred (DevOps Days Ohio)
Humans by the hundred (DevOps Days Ohio)
 
Tester vs Developer
Tester vs DeveloperTester vs Developer
Tester vs Developer
 
Zero to tested
Zero to testedZero to tested
Zero to tested
 
Yelp Tech Talks: Mobile Testing 1, 2, 3
Yelp Tech Talks: Mobile Testing 1, 2, 3Yelp Tech Talks: Mobile Testing 1, 2, 3
Yelp Tech Talks: Mobile Testing 1, 2, 3
 
Notes On Agile Development
Notes On Agile DevelopmentNotes On Agile Development
Notes On Agile Development
 
Why change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringWhy change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and Refactoring
 
Product Vs Craft
Product Vs CraftProduct Vs Craft
Product Vs Craft
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Testing: the more you do it, the more you'll like it
Testing: the more you do it, the more you'll like itTesting: the more you do it, the more you'll like it
Testing: the more you do it, the more you'll like it
 
Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developers
 
Agile Australia 2016 - Rescuing Legacy Software from Impending Doom
Agile Australia 2016 - Rescuing Legacy Software from Impending DoomAgile Australia 2016 - Rescuing Legacy Software from Impending Doom
Agile Australia 2016 - Rescuing Legacy Software from Impending Doom
 
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
Developers’ mDay u Banjoj Luci - Milan Popović, PHP Srbija – Testimony (about...
 
Enough about Process, Let’s Use Patterns
Enough about Process, Let’s Use PatternsEnough about Process, Let’s Use Patterns
Enough about Process, Let’s Use Patterns
 
C* Summit 2013: Stepping Through the Lifecycle of a Service Offering with Cas...
C* Summit 2013: Stepping Through the Lifecycle of a Service Offering with Cas...C* Summit 2013: Stepping Through the Lifecycle of a Service Offering with Cas...
C* Summit 2013: Stepping Through the Lifecycle of a Service Offering with Cas...
 
Humans by the hundred
Humans by the hundredHumans by the hundred
Humans by the hundred
 

Similar a Beyond Technical Debt: Unconventional techniques to uncover technical and social issues in your code

Investing in a good software factory and automating the build process
Investing in a good software factory and automating the build processInvesting in a good software factory and automating the build process
Investing in a good software factory and automating the build process
Nicolas Mas
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
mtoppa
 
Finding balance of DDD while your application grows
Finding balance of DDD while your application growsFinding balance of DDD while your application grows
Finding balance of DDD while your application grows
Carolina Karklis
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PM
Product School
 
The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)
Julien SIMON
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it done
Edorian
 
Release Engineering Downstream of an OpenStack Project
Release Engineering Downstream of an OpenStack ProjectRelease Engineering Downstream of an OpenStack Project
Release Engineering Downstream of an OpenStack Project
Rainya Mosher
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
Utkarsh Khare
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
5-10-15 years of Java developer career - Warszawa JUG 2015
5-10-15 years of Java developer career - Warszawa JUG 20155-10-15 years of Java developer career - Warszawa JUG 2015
5-10-15 years of Java developer career - Warszawa JUG 2015
Wojciech Seliga
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Joseph Yoder
 
How to get started with Site Reliability Engineering
How to get started with Site Reliability EngineeringHow to get started with Site Reliability Engineering
How to get started with Site Reliability Engineering
Andrew Kirkpatrick
 
Enhancing Developer Productivity with Code Forensics
Enhancing Developer Productivity with Code ForensicsEnhancing Developer Productivity with Code Forensics
Enhancing Developer Productivity with Code Forensics
TechWell
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
David Benjamin
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
Giovanni Asproni
 
Engineering Effectiveness
Engineering EffectivenessEngineering Effectiveness
Engineering Effectiveness
Marcio Sete
 
ROOTS2011 Continuous Delivery
ROOTS2011 Continuous DeliveryROOTS2011 Continuous Delivery
ROOTS2011 Continuous Delivery
Ole Christian Rynning
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Stein Inge Morisbak
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
Avisi B.V.
 
So You Just Inherited a $Legacy Application… NomadPHP July 2016
So You Just Inherited a $Legacy Application… NomadPHP July 2016So You Just Inherited a $Legacy Application… NomadPHP July 2016
So You Just Inherited a $Legacy Application… NomadPHP July 2016
Joe Ferguson
 

Similar a Beyond Technical Debt: Unconventional techniques to uncover technical and social issues in your code (20)

Investing in a good software factory and automating the build process
Investing in a good software factory and automating the build processInvesting in a good software factory and automating the build process
Investing in a good software factory and automating the build process
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
 
Finding balance of DDD while your application grows
Finding balance of DDD while your application growsFinding balance of DDD while your application grows
Finding balance of DDD while your application grows
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PM
 
The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)
 
From dev to ops and beyond - getting it done
From dev to ops and beyond - getting it doneFrom dev to ops and beyond - getting it done
From dev to ops and beyond - getting it done
 
Release Engineering Downstream of an OpenStack Project
Release Engineering Downstream of an OpenStack ProjectRelease Engineering Downstream of an OpenStack Project
Release Engineering Downstream of an OpenStack Project
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
5-10-15 years of Java developer career - Warszawa JUG 2015
5-10-15 years of Java developer career - Warszawa JUG 20155-10-15 years of Java developer career - Warszawa JUG 2015
5-10-15 years of Java developer career - Warszawa JUG 2015
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
 
How to get started with Site Reliability Engineering
How to get started with Site Reliability EngineeringHow to get started with Site Reliability Engineering
How to get started with Site Reliability Engineering
 
Enhancing Developer Productivity with Code Forensics
Enhancing Developer Productivity with Code ForensicsEnhancing Developer Productivity with Code Forensics
Enhancing Developer Productivity with Code Forensics
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
 
Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
 
Engineering Effectiveness
Engineering EffectivenessEngineering Effectiveness
Engineering Effectiveness
 
ROOTS2011 Continuous Delivery
ROOTS2011 Continuous DeliveryROOTS2011 Continuous Delivery
ROOTS2011 Continuous Delivery
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
 
So You Just Inherited a $Legacy Application… NomadPHP July 2016
So You Just Inherited a $Legacy Application… NomadPHP July 2016So You Just Inherited a $Legacy Application… NomadPHP July 2016
So You Just Inherited a $Legacy Application… NomadPHP July 2016
 

Último

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 

Último (20)

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 

Beyond Technical Debt: Unconventional techniques to uncover technical and social issues in your code

  • 2. LITTLE SURVEY Do you actually care?
  • 3. Q&A ➤ How big is your organisation? ➤ Do you “measure” your technical debt? ➤ What kind of legacy code you have? ➤ Do you know what to refactor? ➤ Is it easy to prioritise refactorings? ➤ How do you know that things have actually improved after a refactoring effort? ➤ Do you have any bottlenecks when multiple developers/teams need to work on the same part of the codebase? ➤ How do you know which parts of the codebase you should focus on during an off-boarding of a core developer?
  • 4. WHAT IS TECHNICAL DEBT And why you should care…
  • 5. TECHNICAL DEBT “Stuff that isn’t supposed to be there and is in the way of the stuff that is supposed to be there.” — Building Evolutionary Architectures (p. 110), by Neal Ford, Rebecca Parsons, and Patrick Kia
  • 7. COMPLEXITY KILLS DEVELOPMENT SPEED “It's my contention, based on experience, that if you ignore complexity, you will slow down. You will invariably slow down over the long haul … the complexity will eventually kill you. It will kill you in a way that will make every sprint accomplish less. — Rich Hickey, Simple Made Easy
  • 8. TECHNICAL DEBT HAS IMPACT ON BUSINESS & PRODUCT
  • 11. THOUSANDS OF YEARS OF TECHNICAL DEBT ➤ Where do you start when you want to pay it back?
  • 12. CODESCENE It’s a “movie” rather than a “snapshot”
  • 13. … static analysis will never be able to tell you if that excess code complexity actually matters – just because a piece of code is complex doesn’t mean it’s a problem.  CodeScene identifies and prioritizes technical debt based on how the organization works with the code — How CodeScene Differs From Traditional Code Analysis Tools + Time aspect + Organization & people
  • 14.
  • 16. HOT-WHAT? A hotspot is a complicated code that you have to work with often.
  • 18. ➤ In general, process measures based on the change history are more useful in predicting fault rates than product metrics of the code: For instance, the number of times code has been changed is a better indication of how many faults it will contain than is its length. ➤ We also compare the fault rates of code of various ages, finding that if a module is, on the average, a year older than an otherwise similar module, the older module will have roughly a third fewer faults. Our most successful model measures the fault potential of a module as the sum of contributions from all of the times the module has been changed, with large, recent changes receiving the most weight HOTSPOTS ARE ALSO COMMON SOURCES OF BUGS
  • 21. X-RAY ➤ We’ve identified a problematic file but it’s still huge! ➤ Let’s X-Ray it to find the most problematic functions.
  • 22.
  • 24. LEGACY CODE And why technical debt isn’t just technical
  • 25. LEGACY CODE ➤ Legacy code is typically used to describe the code that: ➤ lacks in quality (relative perspective) ➤ we didn’t write ourselves
  • 26. HOW QUICKLY CAN YOU TURN YOUR CODEBASE INTO LEGACY CODE? ➤ (Off-boarding)
  • 28. ON CODE REVIEWS … and what to focus on
  • 31. AND MORE Always keep exploring
  • 32. THERE’S MUCH MORE IN CODESCENE ➤ Change coupling ➤ Microservices ➤ Shotgun surgery ➤ Team conflicts ➤ Technical sprawl ➤ Proactive warnings ➤ Retrospectives ➤ Delivery Performance ➤ Branch Analyses
  • 33. TO CONCLUDE… ➤ Technical debt is a real problem regardless of programming language ➤ There’s a huge amount of useful information stored in your version control system ➤ Ultimately, you need to rely on human expertise ➤ Support your developer’s judgment and experience with data to get the highest ROI
  • 35. ➤ codescene.io ➤ codescene.io/showcase (React, ASP.NET, Rails, …) ➤ CodeScene blog: https://www.empear.com/blog/ ➤ How CodeScene Differs From Traditional Code Analysis Tools ➤ Adam Tornhill - Talk Session: Prioritizing Technical Debt as if Time and Money Matters ➤ Software Design X-Rays (the book) ➤ Predicting Fault Incidence Using Software Change History ➤ Simple Made Easy ➤ Elements of Clojure
  • 36. ???
  • 38. ALAN PERLIS I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more. • Quoted in The Structure and Interpretation of Computer Programs by Hal Abelson, Gerald Jay Sussman and Julie Sussman (McGraw-Hill, 2nd edition, 1996)