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

SER516 Lecture 22a

SER516 Lecture 22a

Software Agility: Project and Process Management
Technical Debt
(202004)

B546a9b97d993392e4b22b74b99b91fe?s=128

Javier Gonzalez

February 27, 2019
Tweet

Transcript

  1. SER516 Software Agility: Project and Process Management Lecture 20. Technical

    Debt Javier Gonzalez-Sanchez javiergs@asu.edu javiergs.engineering.asu.edu Office Hours: By appointment
  2. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 2 Status

    Report
  3. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 3 Status

    Report Technical Debt
  4. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 4 Definition

    A metaphor to raise awareness: a debt requires interest payment (extra development effort). 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 a debt – Cunningham (1992).
  5. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 5 Definition

    Technical Debt shortcuts purposely taken Bad things that plague systems Bad design Defects Insufficient test coverage Excessive manual testing Poor integration management Lack of platform experience
  6. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 6 Definition

    Technical Debt shortcuts purposely taken Bad things that plague systems Bad design Defects Insufficient test coverage Excessive manual testing Poor integration management Lack of platform experience
  7. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 7 Definition

    Technical Debt shortcuts purposely taken Bad things that plague systems Bad design Defects Insufficient test coverage Excessive manual testing Poor integration management Lack of platform experience • Naïve Debt • Unavoidable Debt • Strategic Debt
  8. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 8 Naïve

    Debt § Not originally intended to be referred as technical debt (Cunningham). Reckless debt (Fowler 2009). Unintentional debt (McConnell 2007). Just mess (Martin 2008) § 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.
  9. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 9 Unavoidable

    Debt § Unpredictable and unpreventable. § Product and product design evolution over time. § Design and implementation decisions.
  10. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 10 Strategic

    Debt § Debt can be a tool that can be used to better quantify and leverage the economics of important time-sensitive decisions. § Shortcuts during product development to achieve a short-term goal. § It is a tool, but as any debt, it should be repaid.
  11. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 11 What

    to do? § Continue paying the interest (by working around the problems), or § pay down the debt principal (for example, refactoring the code). § As the level of debt rises, so does the severity of the consequences.
  12. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 12 Consequences

    § Unpredictable tipping point. Debt grows in an unpredictable nonlinear fashion. At the tipping point, even small changes become major occasions of uncertainty. § 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
  13. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 13 Consequences

    § 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.
  14. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 14 Important

    Attempting to Falsely Accelerate Velocity Work that we Decide not to do. Such as testing
  15. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 15 Important

    Attempting to Falsely Accelerate Velocity
  16. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 16 Important

    § Debt builds on Debt. § Do nothing, and the problem gets worse. § Make ever-larger investments in technical debt reduction and consume more and more development resources. § Manage technical debt before it spirals out of control, i.e., technical bankruptcy.
  17. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 17 Activities

    for managing technical debt
  18. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 18 Managing

    accrual No product is debt free. So how much technical debt we can take on? Product Owner should help to balance business and technical perspectives to make trade-offs What to do? § Stop adding naïve debt (TDD, automating testing, continuous integration, refactoring, etc). § Understand technical debt economics.
  19. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 19 Making

    Technical Debt visible What to do? • Track velocity over time • Technical level: defects and refactoring actions in product backlog.
  20. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 20 Servicing/Repay

    Technical debt What to do? • Not all technical debt should be repaid products with a short life or prototypes. • Boy scout rule “leave the campground cleaner than you found it”. • Happened-upon technical debt. Clean up until you reach a predefined threshold. And, classify the rest adding entries to the product backlog (Known technical debt). Each sprint use some resources (time) to pay selected (targeted technical debt).
  21. Javier Gonzalez-Sanchez | SER516 | Spring 2018 | 21 Reference

    § Textbook Chapter 8.
  22. SER516 – Software Agility Javier Gonzalez-Sanchez javiergs@asu.edu Spring 2018 Disclaimer.

    These slides can only be used as study material for the SER516 course at ASU. They cannot be distributed or used for another purpose.