Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CSC309 Lecture 07

CSC309 Lecture 07

Software Engineering II
Technical Debt
(202304)

Javier Gonzalez-Sanchez

January 24, 2023
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. jgs CSC 309 Software Engineering II Lecture 07: Technical Debt

    Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.com Building 14 -227 Office Hours: By appointment
  2. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    2 § It is the result of prioritizing speedy delivery over perfect code. § It is a metaphor to raise awareness: A debt requires interest payment (extra development effort). § A little debt speeds development so long as it is paid back promptly. The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on debt – R. Cunningham (1992) Technical Debt
  3. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    3 What is Speed? Velocity = story points/time Example: Velocity = 80 / 6 = 13.33
  4. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    4 Attempting to Falsely Accelerate Velocity Work that we Decide not to do. Such as testing
  5. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    5 § Unpredictable tipping point. Debt grows in an unpredictable nonlinear fashion. § Increased time to delivery. The greater the debt today, the slower the velocity tomorrow. § Defects. Debt increase complexity; therefore, it is harder to do things correctly. § Rising Cost of Change. Built + Repair § Product Atrophy. Product ceases to be a viable option. § Decreased predictability. Any prediction is nearly impossible. Estimates become bad estimates even for the most experienced team members. § Underperformance (teamwork). Increment of technical debt lower development performance and therefore reduce expectations of what is possible. § Frustration. People burn out. Consequences
  6. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    6 Technical Debt Bad design Defects Insufficient test coverage Excessive manual testing Poor integration management Definition 1. Naïve Debt 2. Unavoidable Debt 3. Strategic Debt bad things that plague systems
  7. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    7 § Not originally intended to be referred to as technical debt (Cunningham). Unintentional debt (McConnell 2007). Just mess (Martin 2008) Reckless debt (Fowler 2009). § Origin: Team members or business immaturity or process deficiencies that lead to sloppy design, poor engineering practices, and a lack of testing. § Solution: Proper training. Good understanding of technical practices. Naïve Debt
  8. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    8 § Unpredictable and unpreventable. § Product and product design evolution over time. § Origin: Design and implementation decisions. § Solution: No big deal, just payback, sooner the better Unavoidable Debt
  9. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    9 § Debt can be a tool that can be used to better quantify and leverage the economics of important time-sensitive decisions. § Origin: Shortcuts during product development to achieve a short-term goal. § Solution: It is a tool, but as with any debt, it should be repaid. Strategic Debt
  10. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    11 1. Avoid accrual, i.e., the accumulation or increase of debt over time. 2. Make debt visible, i.e., do not ignore it or try to hide it. Experts could assume you are naïve. 3. Repay periodically, i.e., schedule your payments as a routine. Each sprint uses some resources (time) to pay selected (targeted technical debt). Activities for managing technical debt
  11. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    12 § No product is debt free. So how much technical debt can we take on? § As a team, balance business and technical perspectives to make trade-offs. § But, Do Not add naïve debt. Do TDD, automating testing, continuous integration, refactoring, etc. • Track velocity over time Key ideas
  12. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    13 • Boy Scout rule Leave the campground cleaner than you found it Clean up until you reach a predefined threshold. And classify the rest, adding entries into the product backlog, such as a [known technical debt] Key Ideas
  13. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    15 § Textbook Chapter 8. Reference
  14. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    16 Office Hours Tuesday and Thursday 3 - 5 pm But an appointment required Sent me an email – [email protected]
  15. jgs

  16. jgs CSC 309 Software Engineering II Lab 07: Technical Debt

    Dr. Javier Gonzalez-Sanchez [email protected] Building 14 -227 Office Hours: By appointment
  17. jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 |

    19 Let’s Work Do you have Technical Debt? Which one (Naïve, Unavoidable, Strategic)? What is the plan for managing technical debt (including but not limited to REPAY)? What is your current velocity (Sprint zero)?
  18. jgs CSC 309 Software Engineering II Javier Gonzalez-Sanchez, Ph.D. [email protected]

    Winter 2023 Copyright. These slides can only be used as study material for the class CSC308 at Cal Poly. They cannot be distributed or used for another purpose.