SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
Technical Debt
                          The ‘Silent’ Application Killer




                                      © ThoughtWorks 2011


Tuesday, 8 November 11
Graham Brooks
                          http://www.thoughtworks.com/blogs/current
                          http://www.grahambrooks.com/blog
                          @wookie870




                              © ThoughtWorks 2011


Tuesday, 8 November 11
Outline

                   • Definition
                   • Why is it important?
                   • Symptoms and signs
                   • Debt resolution strategies

Tuesday, 8 November 11
Technical Debt



Tuesday, 8 November 11
Technical Debt


                         Metaphor coined by Ward Cunningham to
                         explain the misalignment between code and
                         current understanding




Tuesday, 8 November 11
Consciously taking on debt might allow
                         you to get something sooner




Tuesday, 8 November 11
Burden

                   • Not paying off - borrowing without paying
                         it back
                         • Spending power goes to 0
                         • All your money goes into paying interest


Tuesday, 8 November 11
Some might see this as an excuse to write
                         poor code.

                              Never write poor code




Tuesday, 8 November 11
Reckless                                Prudent
                                                            We must ship now
                          We don’t
Deliberate                                                  and deal with the
                          have time
                                                              consequences
                          for design



                                                               Now we know
Inadvertent              What is layering?                     how we should
                                                                have built it

source: http://martinfowler.com/bliki/TechnicalDebtQuadrant.html

Tuesday, 8 November 11
Evidence is anecdotal and based on personal
                         experience of many projects




Tuesday, 8 November 11
No debt Management
Cost of Change




                               Time
      Tuesday, 8 November 11
A re-write will...
                   • Solve all our problems
                    • If we use language X
                    • The latest framework
                    • A new code generator
                    • A new database
                    • .....
Tuesday, 8 November 11
Cost of change




                         Time
Tuesday, 8 November 11
Teams like these get better at rewrites.

                         They don’t learn how to continuously
                         deliver value indefinitely.....




Tuesday, 8 November 11
No debt Management
Cost of Change




                                     Technical Debt Managed



                              Time
     Tuesday, 8 November 11
Your codebase can never be in Credit

                         For commercial projects technical debt is a
                         fact of life

                              You either have enough or too much




Tuesday, 8 November 11
Symptoms and Signs



Tuesday, 8 November 11
Productivity



Tuesday, 8 November 11
Velocity




                           Iteration




  Tuesday, 8 November 11
Velocity




                           Iteration




  Tuesday, 8 November 11
Velocity




                           Iteration




  Tuesday, 8 November 11
Velocity




                           Iteration




  Tuesday, 8 November 11
Velocity




                           Iteration




  Tuesday, 8 November 11
Velocity




                           Iteration




  Tuesday, 8 November 11
Tracer Stories
                  11Point
                     Point
                    11Point
                       Point
                      11Point
                         Point
                        11Point
                           Point
   Velocity




                     7h            5h                7h       10h
                                        Time              5-10 months
                                         Iteration




Tuesday, 8 November 11
Code



Tuesday, 8 November 11
Code Review



Tuesday, 8 November 11
“You know you are working on clean code
                          when each routine you read turns out to be
                          pretty much what you expected.You can call
                         it beautiful code when the code also makes it
                             look like the language was made for the
                                             problem”

                                                   Ward Cunningham
                                                   Clean Code by Robert C Martin




Tuesday, 8 November 11
http://www.osnews.com/story/19266/WTFs_m
Tuesday, 8 November 11
Readability is a key



Tuesday, 8 November 11
How often features are
                         used
                   Never


                  Rarely


          Sometimes

                                              45%
                 Often                     NEVER USED

               Always


                           0   12.5   25   37.5         50
                                                  Source: Standish Group


Tuesday, 8 November 11
Remove Unused ‘stuff’

                   • Unused features
                   • Unused files and tools
                   • Unused classes
                   • Unused methods
                   • Unused lines

Tuesday, 8 November 11
Duplication

                         Direct duplication
                           Exact Code copies
                         Aggressive
                           Algorithmically Equivolent


    Tool tip: Simian
Tuesday, 8 November 11
!"
                                               #!"
                                                     $!"
                                                           %!"
                                                                 &!"
                                                                       '!!"
                                                                              '#!"
                                                                                     '$!"
                                                                                            '%!"
  0569?-**"
 50-:?-**"
 (>4,+@?2A"
59.-5?-**"
  (;50-:?A"
01D8?F=+"




 Tuesday, 8 November 11
340569?A"
0159.-5?A"
+.509?-**"
:6D+6?.="
H.5.?-**"
  ==01?A"
01H.5.?A"
 ?-*90I6-5"
>4,+@?F=+"
 (?*90I6-5"
 .869?-**"
(25@.LF?A"
 ?-*90I6-5"
:6D+6?.="
  K625?-**"
5K625?-**"
  509<?-**"
 .869?-**"
  1C+.22?A"
 0++69?-**"
C+.22?-**"
0<NO?F=+"
 .1.869?A"
22,01?-**"
1590+?-**"
                                                                                                   !"##$%&!"'(%&




-4+.509?A"
01D8?F=+"
 (?*90I6-5"
 15?-2*90I"
                                                                                                                   Volatility




 +,615?-**"
<Q4<?-**"
 +,615?-**"
5K625?-**"
 +,615?-**"
 +,615?-**"
 @,.509?-2"
 +,615?-**"
  590++69?A"
1,509?-**"
  K625?-**"
  @+69?-**"
,/.+,U69?A"
9K625?-**"
 09=?962F"
                               C0==,5"C0415"
Toxicity


                         250 branches in a single class




Tuesday, 8 November 11
Clean               Toxic

                            Volatile
    Volatile             requirements?   !Refactor Now!
                            Monitor




       Stable             Leave alone     Refactor later




Tuesday, 8 November 11
ures
                                              /feat
                                      te   sts
                                 r of               O C
                           m be               on
                                                 L
                          u                ti
                         N
                                     pl ica
                                  Ap             C
                                             LO
                                      Te  st



                          Time


Tuesday, 8 November 11
Debt resolution
                           strategies


Tuesday, 8 November 11
Stop the Line

                   • Works for major changes
                   • Challenging to implement
                   • Smells of a rewrite
                   • Short

Tuesday, 8 November 11
Little and often

                   • Make improvement part of the process:
                   • “Improvement as part of every change”
                   • Stangler pattern


Tuesday, 8 November 11
It’s going to get worse
                                 before it gets better
                                                                             Desired State
                 Productivity




                                 Current Situation


                                                     Cost of Change




                                                                      Time


Tuesday, 8 November 11
Closing Thoughts



Tuesday, 8 November 11
First Steps

                   • Imagine you have joined a new team
                    • Run metrics
                    • Estimate debt
                    • Plan next steps
                    • Execute the plan

Tuesday, 8 November 11
Software Rusts
                         Things Change
                            New capabilities
                            Libraries
                            Frameworks
                            OS



Tuesday, 8 November 11
Every modification of a system might incur
                         technical debt unless it is accompanied by
                         some effort to bring the design into line with
                         the requirements.




Tuesday, 8 November 11
Questions?



Tuesday, 8 November 11
Thank You!
           http://www.thoughtworks.com/blogs/current
           http://www.grahambrooks.com/blog
           @wookie870
           gbrooks@thoughtworks.com
                                         © ThoughtWorks 2008


Tuesday, 8 November 11

Contenu connexe

Similaire à Technical Debt

Monitoring is easy, why are we so bad at it presentation
Monitoring is easy, why are we so bad at it  presentationMonitoring is easy, why are we so bad at it  presentation
Monitoring is easy, why are we so bad at it presentation
Theo Schlossnagle
 
Content focused web design
Content focused web designContent focused web design
Content focused web design
Eddie Monge
 
Practical Cloud Security
Practical Cloud SecurityPractical Cloud Security
Practical Cloud Security
Jason Chan
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
Caridy Patino
 
ECPA CEO Synposium Wrap-up
ECPA CEO Synposium Wrap-upECPA CEO Synposium Wrap-up
ECPA CEO Synposium Wrap-up
Cadabra Media
 
Optimizing for change: Taking risks safely & e-commerce
Optimizing for change: Taking risks safely & e-commerceOptimizing for change: Taking risks safely & e-commerce
Optimizing for change: Taking risks safely & e-commerce
Kellan
 
Connfu Adhearsion
Connfu AdhearsionConnfu Adhearsion
Connfu Adhearsion
BlueVia
 

Similaire à Technical Debt (20)

Journey to 1000 tests a day
Journey to 1000 tests a dayJourney to 1000 tests a day
Journey to 1000 tests a day
 
Layer 7 denial of services attack mitigation
Layer 7 denial of services attack mitigationLayer 7 denial of services attack mitigation
Layer 7 denial of services attack mitigation
 
Monitoring is easy, why are we so bad at it presentation
Monitoring is easy, why are we so bad at it  presentationMonitoring is easy, why are we so bad at it  presentation
Monitoring is easy, why are we so bad at it presentation
 
Content focused web design
Content focused web designContent focused web design
Content focused web design
 
soft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Cachingsoft-shake.ch - Data grids and Data Caching
soft-shake.ch - Data grids and Data Caching
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Grids
 
What publishers need to know about digitization
What publishers need to know about digitizationWhat publishers need to know about digitization
What publishers need to know about digitization
 
HTML5 and Sencha Touch
HTML5 and Sencha TouchHTML5 and Sencha Touch
HTML5 and Sencha Touch
 
Practical Cloud Security
Practical Cloud SecurityPractical Cloud Security
Practical Cloud Security
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the Disruptor
 
Collaborating with Stakeholders
Collaborating with StakeholdersCollaborating with Stakeholders
Collaborating with Stakeholders
 
Resumes and job interviews for technical jobs
Resumes and job interviews for technical jobsResumes and job interviews for technical jobs
Resumes and job interviews for technical jobs
 
Hadoop: A Hands-on Introduction
Hadoop: A Hands-on IntroductionHadoop: A Hands-on Introduction
Hadoop: A Hands-on Introduction
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
 
ECPA CEO Synposium Wrap-up
ECPA CEO Synposium Wrap-upECPA CEO Synposium Wrap-up
ECPA CEO Synposium Wrap-up
 
Are Your Tests Really Helping You?
Are Your Tests Really Helping You?Are Your Tests Really Helping You?
Are Your Tests Really Helping You?
 
Optimizing for change: Taking risks safely & e-commerce
Optimizing for change: Taking risks safely & e-commerceOptimizing for change: Taking risks safely & e-commerce
Optimizing for change: Taking risks safely & e-commerce
 
Connfu adhearsion
Connfu adhearsionConnfu adhearsion
Connfu adhearsion
 
Connfu Adhearsion
Connfu AdhearsionConnfu Adhearsion
Connfu Adhearsion
 

Plus de Kmanthei (10)

Distributed Agile
Distributed AgileDistributed Agile
Distributed Agile
 
Design in Practice (V1)
Design in Practice (V1)Design in Practice (V1)
Design in Practice (V1)
 
Evolutionary architecture
Evolutionary architectureEvolutionary architecture
Evolutionary architecture
 
We Can't Do That Here
We Can't Do That HereWe Can't Do That Here
We Can't Do That Here
 
Agile Dependency Management
Agile Dependency ManagementAgile Dependency Management
Agile Dependency Management
 
Rails in the Large - Neal Ford
Rails in the Large - Neal FordRails in the Large - Neal Ford
Rails in the Large - Neal Ford
 
4 tales of enterprise agility
4 tales of enterprise agility4 tales of enterprise agility
4 tales of enterprise agility
 
Agile Design in Practice
Agile Design in PracticeAgile Design in Practice
Agile Design in Practice
 
Rebecca parsons agile east
Rebecca parsons   agile eastRebecca parsons   agile east
Rebecca parsons agile east
 
Introduction to Continuous Delivery
Introduction to Continuous DeliveryIntroduction to Continuous Delivery
Introduction to Continuous Delivery
 

Dernier

Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
dipikadinghjn ( Why You Choose Us? ) Escorts
 
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
dipikadinghjn ( Why You Choose Us? ) Escorts
 
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
dipikadinghjn ( Why You Choose Us? ) Escorts
 
20240429 Calibre April 2024 Investor Presentation.pdf
20240429 Calibre April 2024 Investor Presentation.pdf20240429 Calibre April 2024 Investor Presentation.pdf
20240429 Calibre April 2024 Investor Presentation.pdf
Adnet Communications
 
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort : 9352852248 Make on-demand Arrangements Near yOU
 

Dernier (20)

Top Rated Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...
Top Rated  Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...Top Rated  Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...
Top Rated Pune Call Girls Viman Nagar ⟟ 6297143586 ⟟ Call Me For Genuine Sex...
 
Shrambal_Distributors_Newsletter_Apr-2024 (1).pdf
Shrambal_Distributors_Newsletter_Apr-2024 (1).pdfShrambal_Distributors_Newsletter_Apr-2024 (1).pdf
Shrambal_Distributors_Newsletter_Apr-2024 (1).pdf
 
The Economic History of the U.S. Lecture 21.pdf
The Economic History of the U.S. Lecture 21.pdfThe Economic History of the U.S. Lecture 21.pdf
The Economic History of the U.S. Lecture 21.pdf
 
03_Emmanuel Ndiaye_Degroof Petercam.pptx
03_Emmanuel Ndiaye_Degroof Petercam.pptx03_Emmanuel Ndiaye_Degroof Petercam.pptx
03_Emmanuel Ndiaye_Degroof Petercam.pptx
 
Top Rated Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...
Top Rated  Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...Top Rated  Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...
Top Rated Pune Call Girls Sinhagad Road ⟟ 6297143586 ⟟ Call Me For Genuine S...
 
Booking open Available Pune Call Girls Wadgaon Sheri 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Wadgaon Sheri  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Wadgaon Sheri  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Wadgaon Sheri 6297143586 Call Hot Ind...
 
The Economic History of the U.S. Lecture 26.pdf
The Economic History of the U.S. Lecture 26.pdfThe Economic History of the U.S. Lecture 26.pdf
The Economic History of the U.S. Lecture 26.pdf
 
Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
Call Girls in New Ashok Nagar, (delhi) call me [9953056974] escort service 24X7
 
The Economic History of the U.S. Lecture 17.pdf
The Economic History of the U.S. Lecture 17.pdfThe Economic History of the U.S. Lecture 17.pdf
The Economic History of the U.S. Lecture 17.pdf
 
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
VIP Independent Call Girls in Andheri 🌹 9920725232 ( Call Me ) Mumbai Escorts...
 
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
VIP Independent Call Girls in Mumbai 🌹 9920725232 ( Call Me ) Mumbai Escorts ...
 
Call Girls in New Friends Colony Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escort...
Call Girls in New Friends Colony Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escort...Call Girls in New Friends Colony Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escort...
Call Girls in New Friends Colony Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escort...
 
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
VIP Call Girl in Mumbai 💧 9920725232 ( Call Me ) Get A New Crush Everyday Wit...
 
WhatsApp 📞 Call : 9892124323 ✅Call Girls In Chembur ( Mumbai ) secure service
WhatsApp 📞 Call : 9892124323  ✅Call Girls In Chembur ( Mumbai ) secure serviceWhatsApp 📞 Call : 9892124323  ✅Call Girls In Chembur ( Mumbai ) secure service
WhatsApp 📞 Call : 9892124323 ✅Call Girls In Chembur ( Mumbai ) secure service
 
20240429 Calibre April 2024 Investor Presentation.pdf
20240429 Calibre April 2024 Investor Presentation.pdf20240429 Calibre April 2024 Investor Presentation.pdf
20240429 Calibre April 2024 Investor Presentation.pdf
 
The Economic History of the U.S. Lecture 18.pdf
The Economic History of the U.S. Lecture 18.pdfThe Economic History of the U.S. Lecture 18.pdf
The Economic History of the U.S. Lecture 18.pdf
 
The Economic History of the U.S. Lecture 20.pdf
The Economic History of the U.S. Lecture 20.pdfThe Economic History of the U.S. Lecture 20.pdf
The Economic History of the U.S. Lecture 20.pdf
 
Top Rated Pune Call Girls Dighi ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Dighi ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Dighi ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Dighi ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
From Luxury Escort Service Kamathipura : 9352852248 Make on-demand Arrangemen...
 
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...
Kharghar Blowjob Housewife Call Girls NUmber-9833754194-CBD Belapur Internati...
 

Technical Debt

  • 1. Technical Debt The ‘Silent’ Application Killer © ThoughtWorks 2011 Tuesday, 8 November 11
  • 2. Graham Brooks http://www.thoughtworks.com/blogs/current http://www.grahambrooks.com/blog @wookie870 © ThoughtWorks 2011 Tuesday, 8 November 11
  • 3. Outline • Definition • Why is it important? • Symptoms and signs • Debt resolution strategies Tuesday, 8 November 11
  • 5. Technical Debt Metaphor coined by Ward Cunningham to explain the misalignment between code and current understanding Tuesday, 8 November 11
  • 6. Consciously taking on debt might allow you to get something sooner Tuesday, 8 November 11
  • 7. Burden • Not paying off - borrowing without paying it back • Spending power goes to 0 • All your money goes into paying interest Tuesday, 8 November 11
  • 8. Some might see this as an excuse to write poor code. Never write poor code Tuesday, 8 November 11
  • 9. Reckless Prudent We must ship now We don’t Deliberate and deal with the have time consequences for design Now we know Inadvertent What is layering? how we should have built it source: http://martinfowler.com/bliki/TechnicalDebtQuadrant.html Tuesday, 8 November 11
  • 10. Evidence is anecdotal and based on personal experience of many projects Tuesday, 8 November 11
  • 11. No debt Management Cost of Change Time Tuesday, 8 November 11
  • 12. A re-write will... • Solve all our problems • If we use language X • The latest framework • A new code generator • A new database • ..... Tuesday, 8 November 11
  • 13. Cost of change Time Tuesday, 8 November 11
  • 14. Teams like these get better at rewrites. They don’t learn how to continuously deliver value indefinitely..... Tuesday, 8 November 11
  • 15. No debt Management Cost of Change Technical Debt Managed Time Tuesday, 8 November 11
  • 16. Your codebase can never be in Credit For commercial projects technical debt is a fact of life You either have enough or too much Tuesday, 8 November 11
  • 19. Velocity Iteration Tuesday, 8 November 11
  • 20. Velocity Iteration Tuesday, 8 November 11
  • 21. Velocity Iteration Tuesday, 8 November 11
  • 22. Velocity Iteration Tuesday, 8 November 11
  • 23. Velocity Iteration Tuesday, 8 November 11
  • 24. Velocity Iteration Tuesday, 8 November 11
  • 25. Tracer Stories 11Point Point 11Point Point 11Point Point 11Point Point Velocity 7h 5h 7h 10h Time 5-10 months Iteration Tuesday, 8 November 11
  • 27. Code Review Tuesday, 8 November 11
  • 28. “You know you are working on clean code when each routine you read turns out to be pretty much what you expected.You can call it beautiful code when the code also makes it look like the language was made for the problem” Ward Cunningham Clean Code by Robert C Martin Tuesday, 8 November 11
  • 30. Readability is a key Tuesday, 8 November 11
  • 31. How often features are used Never Rarely Sometimes 45% Often NEVER USED Always 0 12.5 25 37.5 50 Source: Standish Group Tuesday, 8 November 11
  • 32. Remove Unused ‘stuff’ • Unused features • Unused files and tools • Unused classes • Unused methods • Unused lines Tuesday, 8 November 11
  • 33. Duplication Direct duplication Exact Code copies Aggressive Algorithmically Equivolent Tool tip: Simian Tuesday, 8 November 11
  • 34. !" #!" $!" %!" &!" '!!" '#!" '$!" '%!" 0569?-**" 50-:?-**" (>4,+@?2A" 59.-5?-**" (;50-:?A" 01D8?F=+" Tuesday, 8 November 11 340569?A" 0159.-5?A" +.509?-**" :6D+6?.=" H.5.?-**" ==01?A" 01H.5.?A" ?-*90I6-5" >4,+@?F=+" (?*90I6-5" .869?-**" (25@.LF?A" ?-*90I6-5" :6D+6?.=" K625?-**" 5K625?-**" 509<?-**" .869?-**" 1C+.22?A" 0++69?-**" C+.22?-**" 0<NO?F=+" .1.869?A" 22,01?-**" 1590+?-**" !"##$%&!"'(%& -4+.509?A" 01D8?F=+" (?*90I6-5" 15?-2*90I" Volatility +,615?-**" <Q4<?-**" +,615?-**" 5K625?-**" +,615?-**" +,615?-**" @,.509?-2" +,615?-**" 590++69?A" 1,509?-**" K625?-**" @+69?-**" ,/.+,U69?A" 9K625?-**" 09=?962F" C0==,5"C0415"
  • 35. Toxicity 250 branches in a single class Tuesday, 8 November 11
  • 36. Clean Toxic Volatile Volatile requirements? !Refactor Now! Monitor Stable Leave alone Refactor later Tuesday, 8 November 11
  • 37. ures /feat te sts r of O C m be on L u ti N pl ica Ap C LO Te st Time Tuesday, 8 November 11
  • 38. Debt resolution strategies Tuesday, 8 November 11
  • 39. Stop the Line • Works for major changes • Challenging to implement • Smells of a rewrite • Short Tuesday, 8 November 11
  • 40. Little and often • Make improvement part of the process: • “Improvement as part of every change” • Stangler pattern Tuesday, 8 November 11
  • 41. It’s going to get worse before it gets better Desired State Productivity Current Situation Cost of Change Time Tuesday, 8 November 11
  • 43. First Steps • Imagine you have joined a new team • Run metrics • Estimate debt • Plan next steps • Execute the plan Tuesday, 8 November 11
  • 44. Software Rusts Things Change New capabilities Libraries Frameworks OS Tuesday, 8 November 11
  • 45. Every modification of a system might incur technical debt unless it is accompanied by some effort to bring the design into line with the requirements. Tuesday, 8 November 11
  • 47. Thank You! http://www.thoughtworks.com/blogs/current http://www.grahambrooks.com/blog @wookie870 gbrooks@thoughtworks.com © ThoughtWorks 2008 Tuesday, 8 November 11