$30 off During Our Annual Pro Sale. View Details »

CSC309 Lecture 07

CSC309 Lecture 07

Software Engineering II
Technical Debt
(202304)

Javier Gonzalez-Sanchez
PRO

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

    View Slide

  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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  10. Manage Technical Debt

    View Slide

  11. 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

    View Slide

  12. 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

    View Slide

  13. 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

    View Slide

  14. jgs
    Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 14
    Questions

    View Slide

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

    View Slide

  16. 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]

    View Slide

  17. jgs

    View Slide

  18. jgs
    CSC 309
    Software Engineering II
    Lab 07:
    Technical Debt
    Dr. Javier Gonzalez-Sanchez
    [email protected]
    Building 14 -227
    Office Hours: By appointment

    View Slide

  19. 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)?

    View Slide

  20. 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.

    View Slide