Technical Debt in Agile environment

Ward Cunningham coined the term, and Martin Fowler has some good takes on the subject, and Ron Jeffries as well.


  • Technical Debt includes those internal things that you choose not to do now, but which will impede future development if left undone. This includes deferred refactoring.
  • Technical Debt doesn't include deferred functionality, except possibly in edge cases where delivered functionality is "good enough" for the customer, but doesn't satisfy some standard (e.g., a UI element that isn't fully compliant with some UI standard).
During the planning or execution of a software project, decisions are made to defer necessary work. For example:
  • It's too late in the LifeCycle? to upgrade to the new release of the compiler. We'll do it next time around.
  • We're not completely conforming to the UserInterface guidelines. We'll get to it next time.
  • We don't have time to uncruft (refactor, see RefactorMercilessly) the hyper-widget code. Punt until next time.

Comments

Popular posts from this blog

Scrum Answer to Top 10 Software Project Risks