Your SlideShare is downloading. ×
Dissolving Technical Debt on Agile Projects - Smidig 2012
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Dissolving Technical Debt on Agile Projects - Smidig 2012

276
views

Published on

Experiences with dealing with legacy code while delivering value. Key points: 1) Legacy code costs a lot. 2) Design must be maintained & evolved. 3) Continous refactoring during each task is a way to …

Experiences with dealing with legacy code while delivering value. Key points: 1) Legacy code costs a lot. 2) Design must be maintained & evolved. 3) Continous refactoring during each task is a way to achieve 2.

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
276
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. An Agile Approach to Technical Debt Is The Only Way Jakub Holý @ iterate no
  • 2. Origins
  • 3. by Jon Baldock nz @ flickrWeve all been there - mess of code
  • 4. by Ignaz Wiradi @ wikimediaWhat we would like to have- clean, structured, fitting
  • 5. by cotallo-nonocot @ flickrWhat we do have. It (likely) started with st. small & clean but requirements evolvedwhile 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 @ flickrExample of legacy - a typical monstrous god class that we were confronted with.
  • 7. The pain!It was pain!
  • 8. True cost of legacyPain <= Time wasted in code archeology, money & time wasted due to bugs beingintroduced.Legacy code matters to business for real money are wasted there.
  • 9. Escape???
  • 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 dont.It took centuries to build R. We can never get from L to R in a reasonable time. Thereis too much mess, too much to fix.
  • 12. Code Churn Michael Feathers: Getting Empirical about RefactoringCode-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 thatmatters most now/in near future. (We: 1/3 every task devoted to refactoring.)
  • 14. Refactoring: Improving the Design of ExistingCodeMartin FowlerWorking Effectively with Legacy CodeMichael Feathers Behead Your Legacy Beast: The Mikado Method D. Brolund, O. Ellnestam
  • 15. It worked!
  • 16. Required:Management endorsement
  • 17. True cost of legacyShow to your management; Legacy code = lot of money lost.
  • 18. ChallengeLarge-scale refactorings● risky => avoid● sometimes necessary● boy scout rule doesnt 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 UnifySomething that worked great for us
  • 22. Questions? @HolyJak jakub.holy@iterate.no theholyjava.wordpress.com