SlideShare a Scribd company logo
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

More Related Content

ODP
Dealing With Legacy: The Real-World Experience
Jakub Holy
 
PDF
Commit on day one thanks to vagrant & puppet!
Jakub Holy
 
PDF
Why Functional Programming and Clojure - LightningTalk
Jakub Holy
 
PDF
Specification by example - course summary
Jakub Holy
 
PPTX
Spec by-example
David Navarro Alvarez
 
PPTX
Specification by Example
Excella
 
PPT
Specification by example and agile acceptance testing
gojkoadzic
 
PDF
Specification-By-Example with Gherkin
Christian Hassa
 
Dealing With Legacy: The Real-World Experience
Jakub Holy
 
Commit on day one thanks to vagrant & puppet!
Jakub Holy
 
Why Functional Programming and Clojure - LightningTalk
Jakub Holy
 
Specification by example - course summary
Jakub Holy
 
Spec by-example
David Navarro Alvarez
 
Specification by Example
Excella
 
Specification by example and agile acceptance testing
gojkoadzic
 
Specification-By-Example with Gherkin
Christian Hassa
 

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

PPTX
Refactoring workshop
Itzik Saban
 
PDF
Agile Software Design
eduardomg23
 
PPTX
Cleaning Code - Tools and Techniques for Large Legacy Projects
Mike Long
 
PDF
Managing Software Debt in Practice 2011
Chris Sterling
 
PPTX
Software Quality via Unit Testing
Shaun Abram
 
PDF
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
Agile đây Vietnam
 
PDF
Workshop fight legacy code write unit test
Tung Nguyen Thanh
 
PDF
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Allison Pollard
 
ODP
Xp days ukraine 2012
Wiktor Żołnowski
 
PDF
From Mess To Masterpiece - JFokus 2017
Sven Ruppert
 
PDF
Mine Your Own Code
Peter Norrhall
 
PPTX
Refactoring in Software Reengineering .pptx
itstehreem2830
 
PDF
Caring about Code Quality
Saltmarch Media
 
PDF
Working With Legacy Code
Andrea Polci
 
PDF
Slow and dirty with callouts
AgileOnTheBeach
 
PPTX
Stop fearing legacy code
Yaki Koren
 
PPTX
Everything you Wanted to Know About Refactoring
Gary Short
 
PDF
20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...
Antonio de la Torre Fernández
 
PDF
Test Driven Design
Saad Ahmed
 
PDF
Test Driven Design - GDG DevFest Istanbul 2016
Lemi Orhan Ergin
 
Refactoring workshop
Itzik Saban
 
Agile Software Design
eduardomg23
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Mike Long
 
Managing Software Debt in Practice 2011
Chris Sterling
 
Software Quality via Unit Testing
Shaun Abram
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
Agile đây Vietnam
 
Workshop fight legacy code write unit test
Tung Nguyen Thanh
 
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Allison Pollard
 
Xp days ukraine 2012
Wiktor Żołnowski
 
From Mess To Masterpiece - JFokus 2017
Sven Ruppert
 
Mine Your Own Code
Peter Norrhall
 
Refactoring in Software Reengineering .pptx
itstehreem2830
 
Caring about Code Quality
Saltmarch Media
 
Working With Legacy Code
Andrea Polci
 
Slow and dirty with callouts
AgileOnTheBeach
 
Stop fearing legacy code
Yaki Koren
 
Everything you Wanted to Know About Refactoring
Gary Short
 
20191116 DevFest 2019 The Legacy Code came to stay (El legacy vino para queda...
Antonio de la Torre Fernández
 
Test Driven Design
Saad Ahmed
 
Test Driven Design - GDG DevFest Istanbul 2016
Lemi Orhan Ergin
 
Ad

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Ad

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 [email protected] theholyjava.wordpress.com