SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
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

Más contenido relacionado

Similar a Technical Debt

Journey to 1000 tests a day
Journey to 1000 tests a dayJourney to 1000 tests a day
Journey to 1000 tests a dayBruce McLeod
 
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 mitigationAmmar WK
 
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 presentationTheo Schlossnagle
 
Content focused web design
Content focused web designContent focused web design
Content focused web designEddie Monge
 
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 Cachingsoft-shake.ch
 
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 Gridssoft-shake.ch
 
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 digitizationLiza Daly
 
Practical Cloud Security
Practical Cloud SecurityPractical Cloud Security
Practical Cloud SecurityJason Chan
 
Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the DisruptorTrisha Gee
 
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 jobsAndy Lester
 
Hadoop: A Hands-on Introduction
Hadoop: A Hands-on IntroductionHadoop: A Hands-on Introduction
Hadoop: A Hands-on IntroductionClaudio Martella
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSCaridy Patino
 
ECPA CEO Synposium Wrap-up
ECPA CEO Synposium Wrap-upECPA CEO Synposium Wrap-up
ECPA CEO Synposium Wrap-upCadabra Media
 
Are Your Tests Really Helping You?
Are Your Tests Really Helping You?Are Your Tests Really Helping You?
Are Your Tests Really Helping You?LB Denker
 
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-commerceKellan
 
Connfu Adhearsion
Connfu AdhearsionConnfu Adhearsion
Connfu AdhearsionBlueVia
 
Clouds against the Floods (RubyConfBR2011)
Clouds against the Floods (RubyConfBR2011) Clouds against the Floods (RubyConfBR2011)
Clouds against the Floods (RubyConfBR2011) Leonardo Borges
 

Similar a 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
 
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
 
Clouds against the Floods (RubyConfBR2011)
Clouds against the Floods (RubyConfBR2011) Clouds against the Floods (RubyConfBR2011)
Clouds against the Floods (RubyConfBR2011)
 

Más de Kmanthei

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

Más 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
 

Último

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 servicePooja Nehwal
 
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsHigh Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
03_Emmanuel Ndiaye_Degroof Petercam.pptx
03_Emmanuel Ndiaye_Degroof Petercam.pptx03_Emmanuel Ndiaye_Degroof Petercam.pptx
03_Emmanuel Ndiaye_Degroof Petercam.pptxFinTech Belgium
 
Dharavi Russian callg Girls, { 09892124323 } || Call Girl In Mumbai ...
Dharavi Russian callg Girls, { 09892124323 } || Call Girl In Mumbai ...Dharavi Russian callg Girls, { 09892124323 } || Call Girl In Mumbai ...
Dharavi Russian callg Girls, { 09892124323 } || Call Girl In Mumbai ...Pooja Nehwal
 
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...dipikadinghjn ( Why You Choose Us? ) Escorts
 
(ANIKA) Budhwar Peth Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANIKA) Budhwar Peth Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANIKA) Budhwar Peth Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANIKA) Budhwar Peth Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Basic concepts related to Financial modelling
Basic concepts related to Financial modellingBasic concepts related to Financial modelling
Basic concepts related to Financial modellingbaijup5
 
Call US 📞 9892124323 ✅ Kurla Call Girls In Kurla ( Mumbai ) secure service
Call US 📞 9892124323 ✅ Kurla Call Girls In Kurla ( Mumbai ) secure serviceCall US 📞 9892124323 ✅ Kurla Call Girls In Kurla ( Mumbai ) secure service
Call US 📞 9892124323 ✅ Kurla Call Girls In Kurla ( Mumbai ) secure servicePooja Nehwal
 
Pooja 9892124323 : Call Girl in Juhu Escorts Service Free Home Delivery
Pooja 9892124323 : Call Girl in Juhu Escorts Service Free Home DeliveryPooja 9892124323 : Call Girl in Juhu Escorts Service Free Home Delivery
Pooja 9892124323 : Call Girl in Juhu Escorts Service Free Home DeliveryPooja Nehwal
 
The Economic History of the U.S. Lecture 22.pdf
The Economic History of the U.S. Lecture 22.pdfThe Economic History of the U.S. Lecture 22.pdf
The Economic History of the U.S. Lecture 22.pdfGale Pooley
 
The Economic History of the U.S. Lecture 23.pdf
The Economic History of the U.S. Lecture 23.pdfThe Economic History of the U.S. Lecture 23.pdf
The Economic History of the U.S. Lecture 23.pdfGale Pooley
 
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.pdfGale Pooley
 
00_Main ppt_MeetupDORA&CyberSecurity.pptx
00_Main ppt_MeetupDORA&CyberSecurity.pptx00_Main ppt_MeetupDORA&CyberSecurity.pptx
00_Main ppt_MeetupDORA&CyberSecurity.pptxFinTech Belgium
 
The Economic History of the U.S. Lecture 30.pdf
The Economic History of the U.S. Lecture 30.pdfThe Economic History of the U.S. Lecture 30.pdf
The Economic History of the U.S. Lecture 30.pdfGale Pooley
 
Booking open Available Pune Call Girls Talegaon Dabhade 6297143586 Call Hot ...
Booking open Available Pune Call Girls Talegaon Dabhade  6297143586 Call Hot ...Booking open Available Pune Call Girls Talegaon Dabhade  6297143586 Call Hot ...
Booking open Available Pune Call Girls Talegaon Dabhade 6297143586 Call Hot ...Call Girls in Nagpur High Profile
 
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...Pooja Nehwal
 
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptxFinTech Belgium
 

Último (20)

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
 
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsHigh Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
High Class Call Girls Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
 
03_Emmanuel Ndiaye_Degroof Petercam.pptx
03_Emmanuel Ndiaye_Degroof Petercam.pptx03_Emmanuel Ndiaye_Degroof Petercam.pptx
03_Emmanuel Ndiaye_Degroof Petercam.pptx
 
Dharavi Russian callg Girls, { 09892124323 } || Call Girl In Mumbai ...
Dharavi Russian callg Girls, { 09892124323 } || Call Girl In Mumbai ...Dharavi Russian callg Girls, { 09892124323 } || Call Girl In Mumbai ...
Dharavi Russian callg Girls, { 09892124323 } || Call Girl In Mumbai ...
 
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
(INDIRA) Call Girl Mumbai Call Now 8250077686 Mumbai Escorts 24x7
 
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
VIP Independent Call Girls in Bandra West 🌹 9920725232 ( Call Me ) Mumbai Esc...
 
(ANIKA) Budhwar Peth Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANIKA) Budhwar Peth Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANIKA) Budhwar Peth Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANIKA) Budhwar Peth Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Basic concepts related to Financial modelling
Basic concepts related to Financial modellingBasic concepts related to Financial modelling
Basic concepts related to Financial modelling
 
Call US 📞 9892124323 ✅ Kurla Call Girls In Kurla ( Mumbai ) secure service
Call US 📞 9892124323 ✅ Kurla Call Girls In Kurla ( Mumbai ) secure serviceCall US 📞 9892124323 ✅ Kurla Call Girls In Kurla ( Mumbai ) secure service
Call US 📞 9892124323 ✅ Kurla Call Girls In Kurla ( Mumbai ) secure service
 
Pooja 9892124323 : Call Girl in Juhu Escorts Service Free Home Delivery
Pooja 9892124323 : Call Girl in Juhu Escorts Service Free Home DeliveryPooja 9892124323 : Call Girl in Juhu Escorts Service Free Home Delivery
Pooja 9892124323 : Call Girl in Juhu Escorts Service Free Home Delivery
 
Veritas Interim Report 1 January–31 March 2024
Veritas Interim Report 1 January–31 March 2024Veritas Interim Report 1 January–31 March 2024
Veritas Interim Report 1 January–31 March 2024
 
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
(Vedika) Low Rate Call Girls in Pune Call Now 8250077686 Pune Escorts 24x7
 
The Economic History of the U.S. Lecture 22.pdf
The Economic History of the U.S. Lecture 22.pdfThe Economic History of the U.S. Lecture 22.pdf
The Economic History of the U.S. Lecture 22.pdf
 
The Economic History of the U.S. Lecture 23.pdf
The Economic History of the U.S. Lecture 23.pdfThe Economic History of the U.S. Lecture 23.pdf
The Economic History of the U.S. Lecture 23.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
 
00_Main ppt_MeetupDORA&CyberSecurity.pptx
00_Main ppt_MeetupDORA&CyberSecurity.pptx00_Main ppt_MeetupDORA&CyberSecurity.pptx
00_Main ppt_MeetupDORA&CyberSecurity.pptx
 
The Economic History of the U.S. Lecture 30.pdf
The Economic History of the U.S. Lecture 30.pdfThe Economic History of the U.S. Lecture 30.pdf
The Economic History of the U.S. Lecture 30.pdf
 
Booking open Available Pune Call Girls Talegaon Dabhade 6297143586 Call Hot ...
Booking open Available Pune Call Girls Talegaon Dabhade  6297143586 Call Hot ...Booking open Available Pune Call Girls Talegaon Dabhade  6297143586 Call Hot ...
Booking open Available Pune Call Girls Talegaon Dabhade 6297143586 Call Hot ...
 
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
Independent Call Girl Number in Kurla Mumbai📲 Pooja Nehwal 9892124323 💞 Full ...
 
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
02_Fabio Colombo_Accenture_MeetupDora&Cybersecurity.pptx
 

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