SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
An Agile Approach to
   Technical Debt
  Is The Only Way


         Jakub Holý @ iterate no
Origins
by Jon Baldock nz @ flickr




We've all been there - mess of code
by Ignaz Wiradi @ wikimedia




What we would like to have
- clean, structured, fitting
by cotallo-nonocot @ flickr




What we do have. It (likely) started with st. small & clean but requirements evolved
while the design of the code did not - only hacked & patched
God class
          ●   15 kLOC
          ●   300 properties
          ●   320 methods
          ●   50 constants
          ●   used everywhere




                                                           by mandalinarossa @ flickr




Example of legacy - a typical monstrous god class that we were confronted with.
The pain!




It was pain!
True cost of legacy




Pain <= Time wasted in code archeology, money & time wasted due to bugs being
introduced.
Legacy code matters to business for real money are wasted there.
Escape???
Refactor!




The only way out is to improve the design
?


How do we get from L to R? The sad answer is we don't.
It took centuries to build R. We can never get from L to R in a reasonable time. There
is too much mess, too much to fix.
Code Churn




                              Michael Feathers: Getting Empirical about Refactoring




Code-churn driven refactoring: improve where it matters & pays off most - complex &
changed often
=> Boy Scout Refactoring
          ●   Only task-related
          ●   Time-boxed
          ●   Always
          ●   (+ TDD)




Refactoring can go on forever => focus, time-box. Task related => in code that
matters most now/in near future. (We: 1/3 every task devoted to refactoring.)
Refactoring: Improving the Design of Existing
Code
Martin Fowler




Working Effectively with Legacy Code
Michael Feathers




 Behead Your Legacy Beast: The Mikado
 Method
 D. Brolund, O. Ellnestam
It worked!
Required:
Management endorsement
True cost of legacy




Show to your management; Legacy code = lot of money lost.
Challenge
Large-scale refactorings
● risky => avoid
● sometimes necessary
● boy scout rule doesn't help
Summary
● Design needs love
● Continuous, focused, time-boxed refactoring
● True cost of legacy
You too can do it!
Recommended

          Retrospectives:            Group code reviews:

         改           Observe
                     Evaluate
                                     Teach
                                     Learn
         善           Adjust          Unify




Something that worked great for us
Questions?




               @HolyJak
         jakub.holy@iterate.no
      theholyjava.wordpress.com

Más contenido relacionado

Similar a Dissolving Technical Debt on Agile Projects - Smidig 2012

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
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
Peter Kofler
 
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Peter Kofler
 
Deliberate Practice (2014)
Deliberate Practice (2014)Deliberate Practice (2014)
Deliberate Practice (2014)
Peter Kofler
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
Mike Harris
 
Effective entrepreneurship for developers
Effective entrepreneurship for developersEffective entrepreneurship for developers
Effective entrepreneurship for developers
Carlos Ble
 

Similar a Dissolving Technical Debt on Agile Projects - Smidig 2012 (20)

Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship CultureTechnical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
 
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
 
Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)Code Refactoring - Live Coding Demo (JavaDay 2014)
Code Refactoring - Live Coding Demo (JavaDay 2014)
 
Technical Excellence Doesn't Just Happen - AgileIndy 2016
Technical Excellence Doesn't Just Happen - AgileIndy 2016Technical Excellence Doesn't Just Happen - AgileIndy 2016
Technical Excellence Doesn't Just Happen - AgileIndy 2016
 
Refactor your code: when, why and how (revisited)
Refactor your code: when, why and how (revisited)Refactor your code: when, why and how (revisited)
Refactor your code: when, why and how (revisited)
 
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
Coding Dojo for Testers/Testing Dojo: Designing Test Cases with FitNesse (2014)
 
Deliberate Practice (2014)
Deliberate Practice (2014)Deliberate Practice (2014)
Deliberate Practice (2014)
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit test
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
 
The bigrewrite
The bigrewriteThe bigrewrite
The bigrewrite
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 
Effective entrepreneurship for developers
Effective entrepreneurship for developersEffective entrepreneurship for developers
Effective entrepreneurship for developers
 
The bigrewrite
The bigrewriteThe bigrewrite
The bigrewrite
 
From Journeyman to Master
From Journeyman to MasterFrom Journeyman to Master
From Journeyman to Master
 
Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity Achieving Technical Excellence in Your Software Teams - from Devternity
Achieving Technical Excellence in Your Software Teams - from Devternity
 
Docker is killing your #devops Efforts
Docker is killing your #devops EffortsDocker is killing your #devops Efforts
Docker is killing your #devops Efforts
 
Coding Dojo Firenze - vol1
Coding Dojo Firenze - vol1 Coding Dojo Firenze - vol1
Coding Dojo Firenze - vol1
 
Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)Designing Test Cases for the Gilded Rose Kata (2013)
Designing Test Cases for the Gilded Rose Kata (2013)
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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)
 

Dissolving Technical Debt on Agile Projects - Smidig 2012

  • 1. An Agile Approach to Technical Debt Is The Only Way Jakub Holý @ iterate no
  • 3. by Jon Baldock nz @ flickr We've all been there - mess of code
  • 4. by Ignaz Wiradi @ wikimedia What we would like to have - clean, structured, fitting
  • 5. by cotallo-nonocot @ flickr What we do have. It (likely) started with st. small & clean but requirements evolved while the design of the code did not - only hacked & patched
  • 6. God class ● 15 kLOC ● 300 properties ● 320 methods ● 50 constants ● used everywhere by mandalinarossa @ flickr Example of legacy - a typical monstrous god class that we were confronted with.
  • 8. True cost of legacy Pain <= Time wasted in code archeology, money & time wasted due to bugs being introduced. Legacy code matters to business for real money are wasted there.
  • 10. Refactor! The only way out is to improve the design
  • 11. ? How do we get from L to R? The sad answer is we don't. It took centuries to build R. We can never get from L to R in a reasonable time. There is too much mess, too much to fix.
  • 12. Code Churn Michael Feathers: Getting Empirical about Refactoring Code-churn driven refactoring: improve where it matters & pays off most - complex & changed often
  • 13. => Boy Scout Refactoring ● Only task-related ● Time-boxed ● Always ● (+ TDD) Refactoring can go on forever => focus, time-box. Task related => in code that matters most now/in near future. (We: 1/3 every task devoted to refactoring.)
  • 14. Refactoring: Improving the Design of Existing Code Martin Fowler Working Effectively with Legacy Code Michael Feathers Behead Your Legacy Beast: The Mikado Method D. Brolund, O. Ellnestam
  • 17. True cost of legacy Show to your management; Legacy code = lot of money lost.
  • 18. Challenge Large-scale refactorings ● risky => avoid ● sometimes necessary ● boy scout rule doesn't help
  • 19. Summary ● Design needs love ● Continuous, focused, time-boxed refactoring ● True cost of legacy
  • 20. You too can do it!
  • 21. Recommended Retrospectives: Group code reviews: 改 Observe Evaluate Teach Learn 善 Adjust Unify Something that worked great for us
  • 22. Questions? @HolyJak jakub.holy@iterate.no theholyjava.wordpress.com