013 RR Technical Debt

    0
    130
    • Deliberate technical debt – deferring development to when you can later afford the time
    • Inadvertent technical debt – adding technical debt without realizing it or because libraries/frameworks go out of date.
    • When would you deliberately accrue technical debt?
      • Time crunches
      • Everything pretty much devolves down to time
      • Deferring for lack of expertise
    • Shorten time to market by trading time.
    • Lean Startup
    • What’s the right solution? Fix your code? or rewrite your code?
    • Quantify the cost of your technical debt – Josh gave an example.
    • Sources of Technical Debt:
      • Upgrade costs
      • Test coverage
      • Application features
      • Non-core features
      • Compatibility costs
      • Coupled code
      • Dependencies
      • Early adoption
    • Solutions:
      • Versioning
      • Upgrading
      • Do the work
      • Bypassing the problem – Solving it a different way
    • How do you know you’re adding technical debt?
      • When you start to feel the pain.
      • When you make the initial payment.
    • Technical debt is a deficiency in your code or process. It’s costing you time.
    • Counter-examples:
      • Code you don’t need to maintain
      • Code you can avoid without incurring immediate or eventual cost
    • How do you avoid technical debt?
      • Good abstractions
      • Good refactoring
      • Refactoring (by Martin Fowler)
    • Declaring Bankruptcy – Folding up the project? Restarting/rewriting?