SlideShare uma empresa Scribd logo
1 de 19
What is technical debt?
7th April 2011   Don't Laugh It's Paid For - Mike Burns   2
7th April 2011   Don't Laugh It's Paid For - Mike Burns   3
“Shipping first time code is like going into debt.
A little debt speeds development, so long as it is
paid back promptly with a rewrite. The danger
occurs when the debt is not repaid. Every
minute spent on not-quite-right code counts
as interest on that debt”



                                                          Ward Cunningham, 1992
7th April 2011   Don't Laugh It's Paid For - Mike Burns                           4
1
                                                          Cost of change
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
   0
                                               Time         Loan

7th April 2011   Don't Laugh It's Paid For - Mike Burns                5
7th April 2011   Don't Laugh It's Paid For - Mike Burns   6
Deliberate

         Quality softwarehave the leastmust ship of time
                  “We don’t
                              takes      “We amount
                                          now and deal
           to develop. If for have code that is simple as
                      time you
                                              with
                       design”
          possible, tests that are complete and a design
                                         consequences”
             that fits just right, additions and changes
         happen in the fastest possible way because the
   Reckless                                              Prudent
            impact is lowest. Consequently, if you hack
          something out, the more you hack the slower
          you go because the cost of “Now we knowchange
                      “What’s            addition or
                     layering?”          how we should
                    grows with each line of done it”
                                          have code.



7th April 2011             Inadvertent                             7
Deliberate

                  A bug by itself is not technical ship
                                          “We must debt.
                     “We don’t have
                                             now and deal
                        time for is more likely poor
                              It                 with
                        design”
                 testing, requirements, design, coding, etc;
                                            consequences”
                 Something within the development
          lifecycle, something that we could probably have
   Reckless                                           Prudent
                      fixed before it became a bug.
                   If bugs continue to appear within
                                the same
                  area, function, feature, this may be
                        a sign of technical debt.
7th April 2011                Inadvertent                       8
    “Don’t we have docs on the file layouts?”
     “I thought we had a test for that?”
     “If I change X, it’s going to break Y. I think.”
     “Don’t touch that code. Last time we did, we spent a
      week fixing it.”
     “We just lost the drive. Where are our backups?”
     “Where’s the email about that bug?”
     “Just put in a comment with XXX.
           We’ll see it later.”
     “Just put in a comment with TODO.
           We’ll see it later.”
     “Just put in a TODO.
           Right about the XXXs.”
7th April 2011    Don't Laugh It's Paid For - Mike Burns     9
7th April 2011   Don't Laugh It's Paid For - Mike Burns   11
7th April 2011   Don't Laugh It's Paid For - Mike Burns   12
I don’t know what happened! I just
changed one line!




It's too late in the life cycle to
upgrade to the new release of the                           We can’t upgrade.
compiler. We'll do it next time                             It will break code.
around.
  7th April 2011   Don't Laugh It's Paid For - Mike Burns                         13
    Developers?
      who is building what, when, and why
      Testers?
     Project Managers?
       add business functionality in deliberate,
       prioritized ways
      Upper Management?
     Everyone in the organization




7th April 2011    Don't Laugh It's Paid For - Mike Burns   14
7th April 2011   Don't Laugh It's Paid For - Mike Burns   15
     Documentation
       Writing tests
       Attending to TODO comments
       Tackling compiler warnings
       Static code analysis warnings

• Technical Debt wiki can capture:
    •     Knowledge that isn't shared around the organization
    •     Code that is too confusing to be modified easily
    •     Prudent, deliberate design decisions that incur technical debt
    •     Potential “messes” (or messes that we know already exist!)
 7th April 2011       Don't Laugh It's Paid For - Mike Burns           16
7th April 2011   Don't Laugh It's Paid For - Mike Burns   17
Even the best teams will have debt to deal with
 as a project goes on - even more reason not to
 recklessly overload it with crummy code.




7th April 2011   Don't Laugh It's Paid For - Mike Burns   18
7th April 2011   Don't Laugh It's Paid For - Mike Burns   19

Mais conteúdo relacionado

Mais procurados

Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05
Guang Ying Yuan
 
Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05
guestaa42e9
 

Mais procurados (11)

SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
 
From 🤦 to 🐿️
From 🤦 to 🐿️From 🤦 to 🐿️
From 🤦 to 🐿️
 
From DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed ApidaysFrom DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed Apidays
 
Software Process... the good parts
Software Process... the good partsSoftware Process... the good parts
Software Process... the good parts
 
Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05
 
Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05
 
Who needs an iPad?
Who needs an iPad?Who needs an iPad?
Who needs an iPad?
 
dotJS 2015
dotJS 2015dotJS 2015
dotJS 2015
 
DevOpsDays Silicon Valley 2014 - The Game of Operations
DevOpsDays Silicon Valley 2014 - The Game of OperationsDevOpsDays Silicon Valley 2014 - The Game of Operations
DevOpsDays Silicon Valley 2014 - The Game of Operations
 
The Upheaval of Open Commerce
The Upheaval of Open CommerceThe Upheaval of Open Commerce
The Upheaval of Open Commerce
 
Eli 2008 Fall Focus
Eli 2008 Fall FocusEli 2008 Fall Focus
Eli 2008 Fall Focus
 

Destaque

Destaque (16)

Tasa presentation version 2
Tasa presentation version 2Tasa presentation version 2
Tasa presentation version 2
 
I phone 5
I phone 5I phone 5
I phone 5
 
Bethari bungalow single detached house and lot
Bethari bungalow single detached house and lotBethari bungalow single detached house and lot
Bethari bungalow single detached house and lot
 
Maximizing student assessment systems cronin
Maximizing student assessment systems   croninMaximizing student assessment systems   cronin
Maximizing student assessment systems cronin
 
Masih Relevankah Pancasila Sebagai Ideologi Terbuka
Masih Relevankah Pancasila Sebagai Ideologi TerbukaMasih Relevankah Pancasila Sebagai Ideologi Terbuka
Masih Relevankah Pancasila Sebagai Ideologi Terbuka
 
Agile Mobsters
Agile MobstersAgile Mobsters
Agile Mobsters
 
Apple
AppleApple
Apple
 
Alaa M. Salah CV
Alaa M. Salah CVAlaa M. Salah CV
Alaa M. Salah CV
 
How far will the language go with gender?
How far will the language go with gender?How far will the language go with gender?
How far will the language go with gender?
 
Kirana single detached house and lot
Kirana single detached house and lotKirana single detached house and lot
Kirana single detached house and lot
 
The purpose driven assessment system
The purpose driven assessment systemThe purpose driven assessment system
The purpose driven assessment system
 
Valid data for school improvement final
Valid data for school improvement finalValid data for school improvement final
Valid data for school improvement final
 
Senyawa Anorganik
Senyawa AnorganikSenyawa Anorganik
Senyawa Anorganik
 
College readiness presentation
College readiness presentationCollege readiness presentation
College readiness presentation
 
Bab Relativitas
Bab RelativitasBab Relativitas
Bab Relativitas
 
Chief accountability officers presentation
Chief accountability officers presentationChief accountability officers presentation
Chief accountability officers presentation
 

Semelhante a Dont laugh it's paid for

Devopsdays Goteborg 2011 - State of the Union
Devopsdays Goteborg 2011 - State of the UnionDevopsdays Goteborg 2011 - State of the Union
Devopsdays Goteborg 2011 - State of the Union
John Willis
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Nick Galbreath
 
World Usability Day 2006 (Philippines)
World Usability Day 2006 (Philippines)World Usability Day 2006 (Philippines)
World Usability Day 2006 (Philippines)
gaboogle
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
Igor Moochnick
 

Semelhante a Dont laugh it's paid for (20)

Devopsdays Goteborg 2011 - State of the Union
Devopsdays Goteborg 2011 - State of the UnionDevopsdays Goteborg 2011 - State of the Union
Devopsdays Goteborg 2011 - State of the Union
 
Top 5 Reasons Why Improvement Efforts Fail
Top 5 Reasons Why Improvement Efforts FailTop 5 Reasons Why Improvement Efforts Fail
Top 5 Reasons Why Improvement Efforts Fail
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
7 Wastes of Software Development
7 Wastes of Software Development7 Wastes of Software Development
7 Wastes of Software Development
 
Where Does Developer Testing End And Tester Testing Begin?
Where Does Developer Testing End And Tester Testing Begin?Where Does Developer Testing End And Tester Testing Begin?
Where Does Developer Testing End And Tester Testing Begin?
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013
 
World Usability Day 2006 (Philippines)
World Usability Day 2006 (Philippines)World Usability Day 2006 (Philippines)
World Usability Day 2006 (Philippines)
 
Put a UI Developer in a Bank; See What Happens
Put a UI Developer in a Bank; See What HappensPut a UI Developer in a Bank; See What Happens
Put a UI Developer in a Bank; See What Happens
 
/dev/fort: you can build it in a week @emw
/dev/fort: you can build it in a week @emw/dev/fort: you can build it in a week @emw
/dev/fort: you can build it in a week @emw
 
Why projects fail
Why projects failWhy projects fail
Why projects fail
 
ITB2016 best practices are best except when they are not
ITB2016 best practices are best except when they are notITB2016 best practices are best except when they are not
ITB2016 best practices are best except when they are not
 
Is Advanced Verification for FPGA based Logic needed
Is Advanced Verification for FPGA based Logic neededIs Advanced Verification for FPGA based Logic needed
Is Advanced Verification for FPGA based Logic needed
 
Technical Debt - The Code Monster in the Closet
Technical Debt - The Code Monster in the ClosetTechnical Debt - The Code Monster in the Closet
Technical Debt - The Code Monster in the Closet
 
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin GrahamDevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
 
Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debt
 
Fixing security by fixing software development
Fixing security by fixing software developmentFixing security by fixing software development
Fixing security by fixing software development
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridge
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
From monitoring to automated testing, Jesse Reynolds, Puppet
From monitoring to automated testing, Jesse Reynolds, PuppetFrom monitoring to automated testing, Jesse Reynolds, Puppet
From monitoring to automated testing, Jesse Reynolds, Puppet
 
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
 

Mais de Mike Burns

Mais de Mike Burns (6)

Munro Map Workshop
Munro Map WorkshopMunro Map Workshop
Munro Map Workshop
 
Munro Map Workshop Handouts
Munro Map Workshop HandoutsMunro Map Workshop Handouts
Munro Map Workshop Handouts
 
Switching on the agile light takes more than flick
Switching on the agile light takes more than flickSwitching on the agile light takes more than flick
Switching on the agile light takes more than flick
 
Cynefin in an agile world
Cynefin in an agile worldCynefin in an agile world
Cynefin in an agile world
 
Feature funny business
Feature funny businessFeature funny business
Feature funny business
 
Three baseline metrics & what they can tell you about your team.
Three baseline metrics & what they can tell you about your team.Three baseline metrics & what they can tell you about your team.
Three baseline metrics & what they can tell you about your team.
 

Dont laugh it's paid for

  • 2. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 2
  • 3. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 3
  • 4. “Shipping first time code is like going into debt. A little debt speeds development, so long as it is paid back promptly with a rewrite. The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt” Ward Cunningham, 1992 7th April 2011 Don't Laugh It's Paid For - Mike Burns 4
  • 5. 1 Cost of change 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 Time Loan 7th April 2011 Don't Laugh It's Paid For - Mike Burns 5
  • 6. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 6
  • 7. Deliberate Quality softwarehave the leastmust ship of time “We don’t takes “We amount now and deal to develop. If for have code that is simple as time you with design” possible, tests that are complete and a design consequences” that fits just right, additions and changes happen in the fastest possible way because the Reckless Prudent impact is lowest. Consequently, if you hack something out, the more you hack the slower you go because the cost of “Now we knowchange “What’s addition or layering?” how we should grows with each line of done it” have code. 7th April 2011 Inadvertent 7
  • 8. Deliberate A bug by itself is not technical ship “We must debt. “We don’t have now and deal time for is more likely poor It with design” testing, requirements, design, coding, etc; consequences” Something within the development lifecycle, something that we could probably have Reckless Prudent fixed before it became a bug. If bugs continue to appear within the same area, function, feature, this may be a sign of technical debt. 7th April 2011 Inadvertent 8
  • 9. “Don’t we have docs on the file layouts?”  “I thought we had a test for that?”  “If I change X, it’s going to break Y. I think.”  “Don’t touch that code. Last time we did, we spent a week fixing it.”  “We just lost the drive. Where are our backups?”  “Where’s the email about that bug?”  “Just put in a comment with XXX. We’ll see it later.”  “Just put in a comment with TODO. We’ll see it later.”  “Just put in a TODO. Right about the XXXs.” 7th April 2011 Don't Laugh It's Paid For - Mike Burns 9
  • 10.
  • 11. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 11
  • 12. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 12
  • 13. I don’t know what happened! I just changed one line! It's too late in the life cycle to upgrade to the new release of the We can’t upgrade. compiler. We'll do it next time It will break code. around. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 13
  • 14. Developers?   who is building what, when, and why Testers?  Project Managers?  add business functionality in deliberate,  prioritized ways Upper Management?  Everyone in the organization 7th April 2011 Don't Laugh It's Paid For - Mike Burns 14
  • 15. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 15
  • 16. Documentation  Writing tests  Attending to TODO comments  Tackling compiler warnings  Static code analysis warnings • Technical Debt wiki can capture: • Knowledge that isn't shared around the organization • Code that is too confusing to be modified easily • Prudent, deliberate design decisions that incur technical debt • Potential “messes” (or messes that we know already exist!) 7th April 2011 Don't Laugh It's Paid For - Mike Burns 16
  • 17. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 17
  • 18. Even the best teams will have debt to deal with as a project goes on - even more reason not to recklessly overload it with crummy code. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 18
  • 19. 7th April 2011 Don't Laugh It's Paid For - Mike Burns 19

Notas do Editor

  1. TEST NOTES FOR PRESENTER VIEW
  2. Last year at Tech Day I did Agile Mobsters - and YC asked me this time if I was going to have a theme, at first I wasn’t but I started thinking about the title of my presentation - Don’t laugh it’s paid for - some of you may have seen these on old cars, there is another bumper sticker that is closely related - “If this car were a horse, I'd have to shoot it” - basically I know this is a piece of junk but I’ve already paid for it so I’m not getting another one. Picture courtesy of www.cadebsminishop.be
  3. So, themes, bumper stickers, signs, what is a famous sign, Hollywood, Las Vegas,What about a cartoon sign, ah road runner, so my theme today is loosely based around roadrunner and wile e coyote. It is also a lot easier to say then my bad Italian pronunciations last time.
  4. ASK GROUP - “What do you think technical debt is?” - most likely answer is bugs - come back to this later Ward Cunningham - developer of the first wiki, and a pioneer in Extreme Programming, first coined the term technical debt in 1992. After a while the industry started talking about Technical debt, and with the excitement around Agile at the moment, there are a lot more people looking for answers to why their software has failed to deliver.*CLICK* [Many] have explained the debt metaphor and confused it with the idea that you could write code poorly with the intention of doing a good job laterhttp://en.wikipedia.org/wiki/Technical_debthttp://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspxhttp://www.slideshare.net/DocOnDev/oredev-the-technical-debt-trap
  5. Debt is usually given a bad rap. "Debt is evil! Stay away at all costs!" While yes, being indebted for life is a bad thing, sometimes debt is necessary. It can actually be an incredibly useful tool. *Click*This "good debt" can be defined as debt that will ultimately create more wealth. Yes, it may seem strange to think of debt as something good, but there are certain circumstances where it is very helpful. Buying a house, buying a car, HECS. We have to remember that technical debt that Ward Cunningham talked about is just a metaphor. *Click*We don’t actually have incur any interest, but the longer we leave a poor decision the hard it can be to reverse it and in the long run it may cost us more to fix. This is sometimes called the cost of change curve.http://www.agilemodeling.com/essays/costOfChange.htm
  6. http://c2.com/cgi/wiki?FirstLawOfProgramming
  7. So what is technical debt? Martin Fowler describes technical debt through the use of a technical debt quadrant.*CLICK*The first sort of debt, could be also called a mess. Messy code, usually produced by people who are ignorant of good design and coding practices. This sort of debt it should be fixed immediately and those involved educated.If not it leads to crippling interest payments or a long period of paying down the principal. *CLICK*Next is inadvertent but prudent debt. In software we are always learning. Often you don’t realize how you should have done something until it’s over. This sort of debt results in a high, but more manageable, interest rate and can also take a long time to pay off, depending on how badly you were off “the right” solution. *CLICK*Deliberate debt can be good, but it can also be very bad. A team may know about good design practices, even be capable of practicing them, but decide to go "quick and dirty" because they think they can't afford the time required to write clean code. This sort of debt, can also be managed, but as the first law of programming states… *CLICK* *Read from slide**CLICK*The prudent,deliberate debt is when the team knows they are taking on a debt, and thus puts some thought as to whether the payoff for an earlier release is greater than the costs of paying it off. This is “good debt”. Technical debt like this is just as the entrepreneur treats financial debt. They use it. It speeds delivery, so long as it is properly managed.http://c2.com/cgi/wiki?FirstLawOfProgramminghttp://martinfowler.com/bliki/TechnicalDebtQuadrant.htmlhttp://www.thoughtclusters.com/2009/10/technical-debt-quadrant/http://www.c2.com/cgi/wiki?TechnicalDebt
  8. *Ask group where they think bugs fit* Bugs and technical debt are entirely different things. Fixing a bug may reduce tech debt, leave tech debt unchanged, or even increase tech debt, depending on how the fix is done.http://www.rants.org/2010/01/10/bugs-users-and-tech-debt/
  9. Pretty sure we have said or heard some of these said before.
  10. Often the best sign of debt is the big ball of mud. Wikipedia has a definition that goes like this…A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. These systems show unmistakable signs of unregulated growth, and repeatedrepair. Information is shared among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated. The overall structure of the system may never have been well defined. If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems. People who maintain such systems, are often seen wearing socks and sandals.I like a definition that I heard James use once - ball of mud, poke it here and it goes splat somewhere on the other side.http://en.wikipedia.org/wiki/Big_ball_of_mud
  11. http://c2.com/cgi/wiki?FirstLawOfProgramming
  12. We work within a business, that business needs to make money, therefore sometimes we need to make decisions that can help us make money, either by doing something quicker, at a lower quality than we had hope, or for more money than we had hoped - how we choose these decisions can be the difference between a small debt and a large debt - its all about seeing the signs and making sure that the team, group and business understand why we have gone into debt.
  13. While development teams may deserve a fair amount of criticism, you cannot forget that successful software projects require active and adequate participation by all stakeholders.Everyone’s participation is crucial, because in order to stave off failure, you need to know who is building what, when, and why. You need to add business functionality in deliberate, prioritized ways. You need to catch problems with poorly captured and expressed requirements. You need to nip impediments in the bud by spotting people who are potential blockers, noting communication failures, and helping overwhelmed development teams.Developing software requires valid metrics, clear communication, and engaged business and executive stakeholders. They must be involved in software delivery efforts and assume partial responsibility for both positive and negative outcomes. However, development teams need time to clean up their own messes. As they rush toward various releases, they will incur technical debt. Each iteration of work should include new business functionality, as well as a sanctioned effort to refactor some of the hacks that inevitably show up in the code. This is neither a license to goof off, nor the sign of a bad team. It is simply a programming reality that must be routinely addressed with full support from the executive stakeholders. So on your next project, let the project manager know when you incur technical debt, and hopefully they will let you have some time to clean up. Software Failure Is Organizational Failure by Brian Sletten, Beverly Hills, California, U.S.
  14. The best way to pay off your technical debt is to assess what “loans” were taken at the end of each iteration. Ask your team - what hacks have we done in the past iteration? What would we like to unwind? How much time do we think we need to do it?You don’t need to pay debt off immediately, but it is good to gauge the extent of the needed repair while the shortcuts are still fresh in the developers’ minds. Agile gives us a definition of done, so that everyone in the team knows when something is really completed, 100%, not just developed, but tested - so keep in mind things like *CLICK*During the sprint, or project if not doing agile, why not create a technical debt wiki on the project portal page - it could be used to capture:*CLICK*Most importantly, make sure that the stakeholders and the development group know that the wiki exists and give regular updates.
  15. http://msdn.microsoft.com/en-us/magazine/ee819135.aspx
  16. So, technical debt can be bad, but can also be very good, if we keep an eye out for the signs, and leave a few sign posts out for the next travellers, by using code comments, keeping a technical debt wiki, and informing the team, the project manager, the development manager, of technical debt early and making sure there is enough time to clean up those really nasty ones before the interest gets on top of us.Remember*CLICK*