Technical Debt 101

3,019
-1

Published on

What is Technical Debt? It doesn't have to be negative, but it does have to be carefully managed. Here is a quick run-down of best practice to approaching Technical Debt management.

Technical Debt 101

  1. 1. TECHNICAL DEBT 101 It’s not all bad…
  2. 2. "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. Objects make the cost of this transaction tolerable.The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise." “Technical Debt” was defined by Ward Cunningham in 1992
  3. 3. The cost of havingTechnical Debt… Physical: time & effort to generate the feature Opportunity: time to wait for benefits to be realised Competitive: inability to be as quick to market with new features 1 2 3
  4. 4. While it’s true that technical debt can be a very negative force…very negative
  5. 5. …it can also be positive
  6. 6. There is benefit in the building of all systems It can make sense to go intoTechnical Debt to get those benefits sooner
  7. 7. Let’s first talk about types of Technical Debt to watch out for… …then define some “good” and “bad” forms of Technical Debt!
  8. 8. What types of Technical Debt should you watch out for?
  9. 9. The departed genius “x wrote this and no-one else understands it” 1
  10. 10. The next big thing “x wrote this in a new tech that’s no longer supported, no-one else understands it” 2
  11. 11. The self sufficient developer “x didn’t agree with / understand what y had done so he re-wrote the same functionality to run alongside it” 3
  12. 12. The uncommunicative developer “x didn’t talk to y so didn’t realise they were working on nearly the same functionality so it is in there twice” 4
  13. 13. The grumpy developer “x would never let anyone see his code or work on his areas of the system” 5
  14. 14. The unhappy supplier “That was developed by x before he fell out with the MD so we don’t have the source code and can’t make any changes” 6
  15. 15. Some positive forms of Technical Debt
  16. 16. Positive forms of Technical Debt #1 A “Director’s Loan” Tech equivalent: Debt that is never required to be repaid
  17. 17. Positive forms of Technical Debt #1 A “Director’s Loan” An example could be a simple system that won’t change much.
  18. 18. Positive forms of Technical Debt #1 A “Director’s Loan” An example could be a simple system that won’t change much. It solves a problem, i.e. replaces a manual process…
  19. 19. Positive forms of Technical Debt #1 A “Director’s Loan” An example could be a simple system that won’t change much. It solves a problem, i.e. replaces a manual process… … and can survive without ever needing to repay the debt.
  20. 20. Positive forms of Technical Debt #2 “Structured Finance” Tech equivalent: When compromises are made in order to get a system up and running sooner
  21. 21. The agile principle of “You Aren’t Gonna Need It” says that to see the benefits of a system as soon as possible, you need to get a minimum viable product out in the quickest way possible. Positive forms of Technical Debt #2 “Structured Finance”
  22. 22. The agile principle of “You Aren’t Gonna Need It” says that to see the benefits of a system as soon as possible, you need to get a minimum viable product out in the quickest way possible. Positive forms of Technical Debt #2 “Structured Finance” By this principle,Technical Debt should be embraced as a way to quickly prove the potential benefit of your system.
  23. 23. There is, however, interest to be paid back on these debts Positive forms of Technical Debt #2 “Structured Finance”
  24. 24. There is, however, interest to be paid back on these debts The additional cost associated with introducing new features because of having to deal with the short cuts taken in earlier 1 Positive forms of Technical Debt #2 “Structured Finance”
  25. 25. There is, however, interest to be paid back on these debts The additional cost associated with introducing new features because of having to deal with the short cuts taken in earlier 1 The reduction in benefit associated with the workarounds, manual processes and missing features in the system 2 Positive forms of Technical Debt #2 “Structured Finance”
  26. 26. Positive forms of Technical Debt #2 “Structured Finance” So when does the debt need to be repaid?
  27. 27. Positive forms of Technical Debt #2 “Structured Finance” So when does the debt need to be repaid? When the cost of the changes to the system outweighs the benefit gained
  28. 28. Positive forms of Technical Debt #2 “Structured Finance” So when does the debt need to be repaid? When the cost of the changes to the system outweighs the benefit gained (Technical negative equity)
  29. 29. Positive forms of Technical Debt #3 Investor demanding pay-out Tech equivalent: When a technology is chosen because it’s the easiest/fastest to implement, but at a certain point becomes unviable moving forward
  30. 30. Positive forms of Technical Debt #3 Investor demanding pay-out The technology has reached the capacity for your current usage level When does this happen?
  31. 31. Positive forms of Technical Debt #3 Investor demanding pay-out The technology or platform is no longer available – more common in 3rd party/cloud based services When does this happen?
  32. 32. Positive forms of Technical Debt #3 Investor demanding pay-out How can it be dealt with?
  33. 33. Positive forms of Technical Debt #3 Investor demanding pay-out Systems should be designed to be abstract of the technology so as to make swapping to another platform as easy as possible How can it be dealt with?
  34. 34. Positive forms of Technical Debt #3 Investor demanding pay-out Systems should be designed to be abstract of the technology so as to make swapping to another platform as easy as possible How can it be dealt with? The technology should be carefully aligned with the system’s growth plan with an estimate of the technology’s longevity
  35. 35. Some negative forms of Technical Debt
  36. 36. Negative forms of Technical Debt #1 “Credit card” debt Tech equivalent: Unplanned Technical Debt introduced through poor project management / inexperienced developers
  37. 37. Negative forms of Technical Debt #1 “Credit card” debt This happens when a system…
  38. 38. Negative forms of Technical Debt #1 “Credit card” debt …was “developed by x and we don’t dare change it because we’ve no idea how it works” This happens when a system…
  39. 39. Negative forms of Technical Debt #1 “Credit card” debt …was “developed by x and we don’t dare change it because we’ve no idea how it works” … has areas that were knocked up by the owner/his nephew who was doing A-Level computers and it would be too big a job to rewrite it now This happens when a system…
  40. 40. Negative forms of Technical Debt #1 “Credit card” debt …was “developed by x and we don’t dare change it because we’ve no idea how it works” … has areas that were knocked up by the owner/his nephew who was doing A-Level computers and it would be too big a job to rewrite it now … was written in [insert language] because someone wanted to have a play with it/was good at it and no one here now knows that language This happens when a system…
  41. 41. Negative forms of Technical Debt #1 “Credit card” debt How to deal with it
  42. 42. Negative forms of Technical Debt #1 “Credit card” debt How to deal with it Get someone to sit down with the “credit card statements” and understand the interest that is being paid on this debt - until that is completed there is no way to understand if it needs dealing with and what the cost of dealing with it is
  43. 43. Negative forms of Technical Debt #2 “Over-funding” Tech equivalent: Over-engineering to a level of complexity that is just not needed for the system being built
  44. 44. Negative forms of Technical Debt #2 “Over-funding”
  45. 45. Negative forms of Technical Debt #2 “Over-funding” “You Aren’t Gonna Need It!”
  46. 46. Negative forms of Technical Debt #2 “Over-funding” Or… if you don’t need it, don’t build it…! “You Aren’t Gonna Need It!”
  47. 47. Negative forms of Technical Debt #2 “Over-funding” This type of Technical Debt is hard to control…
  48. 48. Negative forms of Technical Debt #2 “Over-funding” This type of Technical Debt is hard to control… … because it only becomes apparent when it’s already in existence
  49. 49. Negative forms of Technical Debt #2 “Over-funding” This type of Technical Debt is hard to control… … because it only becomes apparent when it’s already in existence (why build a feature you know you don’t need?)
  50. 50. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with
  51. 51. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with Agile practices
  52. 52. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with Agile practices Focused development
  53. 53. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with Agile practices Focused development Regular architectural reviews
  54. 54. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with Agile practices Focused development Regular architectural reviews Experienced developers
  55. 55. So how can we minimize the risk of Technical Debt?
  56. 56. Good system architecture
  57. 57. Abstract systems to ease technology swap-out
  58. 58. Robust system management
  59. 59. Enough testing to enable low risk re-engineering if needed
  60. 60. Removal of dependency on individuals
  61. 61. Technical debt management
  62. 62. Awareness of the types of debt and their impact
  63. 63. Paying off the debt Lump sum payment Take everyone out of feature production for a set period and resolve the main areas of technical debt - Make technical debt everyone’s problem for a short time
  64. 64. Paying off the debt On-going small payments Make a commitment that with every feature introduced an area of technical debt will also be addressed - Make technical debt everyone’s on-going problem
  65. 65. Paying off the debt Dedicated payment plan Create a dedicated technical debt team who do nothing but resolve technical debt issues and run this alongside the development program - Create some people who have technical debt as their only problem.
  66. 66. wajakemek | rashdanothman walknboston bruckerrlb EvanHahn Lawrence Whittemore Wysz ThomasThomas Clio20 Sam UL Bert Kaufmann Jonkeelty JohnFinn gerlos Image credits MyTudut CarbonNYC Mukumbura mutsmuts Matthew (WMF) Digger/ATL Tripp Todd Ehlers miuenski grafixtek xJason.Rogersx SFB579 :) stevendepolo Flickr Creative Commons:
  67. 67. intechnica.co.uk blog.intechnica.co.uk @intechnica perforancebydesign.co.uk Read more detailed blogs aboutTechnical Debt at http://ow.ly/oQ0uv
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×