Technical debt

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Technical debt and design debt are synonymous, neologistic metaphors referring to the eventual consequences of slapdash software architecture and hasty software development. Code debt refers to technical debt within a codebase.

Ward Cunningham first drew the comparison between technical complexity and debt in a 1992 experience report:

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 that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise.[1]

In his influential 2004 text, Refactoring to Patterns, Joshua Kerievsky presents a comparable argument concerning the costs associated with architectural negligence, which he describes as "design debt".[2]

Activities that might be postponed include documentation, writing tests, attending to TODO comments and tackling compiler and static code analysis warnings. Other instances of technical debt include knowledge that isn't shared around the organization and code that is too confusing to be modified easily.

In open-source software, postponing sending local changes to the upstream project is a technical debt. "Interest payments" are both in the necessary local maintenance and the absence of maintenance by other users of the upstream project. Ongoing development in the upstream project can increase the cost of "paying off the debt" in the future.

[edit] References

  1. ^ Ward Cunningham (1992-03-26). "The WyCash Portfolio Management System". http://c2.com/doc/oopsla92.html. Retrieved 2008-09-26. 
  2. ^ Kerievsky, Joshua (2004). Refactoring to Patterns. ISBN 0321213351. 

[edit] See also

[edit] External links

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export
Languages