Technical debt (also known as design debt or code debt) are synonymous, neologistic metaphors referring to the eventual consequences of poor software architecture and software development within a codebase.
Common causes of technical debt include (a combination of):
- Business pressures, where the business considers getting something released sooner is of more value than avoiding technical debt
- Lack of process or understanding, where businesses are blind to the concept of technical debt, and make decisions without considering the implications
- Lack of building loosely coupled components, where functions are hard-coded; when business needs change, the software is inflexible.
- Lack of documentation, where code is created, but may be difficult or time consuming for anyone other than the author to understand, as functions are not documented
"Interest payments" are both in the necessary local maintenance and the absence of maintenance by other users of the project. Ongoing development in the upstream project can increase the cost of "paying off the debt" in the future.
Best Practice in paying down technical debt is to refactor code as part of ongoing development.
"As an evolving program is continually changed, its complexity, reflecting deteriorating structure, increases unless work is done to maintain or reduce it."
— Meir Manny Lehman, 1980
While Manny Lehman's Law already indicated that evolving programs continually add to their complexity and deteriorating structure unless work is done to maintain it, 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.
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".
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.
- ^ Ward Cunningham (1992-03-26). "The WyCash Portfolio Management System". http://c2.com/doc/oopsla92.html. Retrieved 2008-09-26.
- ^ Kerievsky, Joshua (2004). Refactoring to Patterns. ISBN 0321213351.
Wikimedia Foundation. 2010.
Look at other dictionaries:
Debt-to-equity ratio — The debt to equity ratio (D/E) is a financial ratio indicating the relative proportion of shareholders equity and debt used to finance a company s assets. Closely related to leveraging, the ratio is also known as Risk, Gearing or Leverage. The … Wikipedia
Technical analysis — Financial markets Public market Exchange Securities Bond market Fixed income Corporate bond Government bond Municipal bond … Wikipedia
Debt moratorium — A debt moratorium is a delay in the payment of debts or obligations. The term is generally used to refer to acts by national governments. A moratory law is usually passed in some special period of political or commercial stress; for instance, on… … Wikipedia
Technical Default — A deficiency in a loan agreement that arises not from a failure to make payments as promised, but from a failure to uphold some other aspect of the loan terms. Technical default indicates that the borrower may be in financial trouble, and can… … Investment dictionary
Fair Debt Collection Practices Act — The Fair Debt Collection Practices Act (aka FDCPA), usc|15|1692 et seq., is a United States statute added in 1978 as Title VIII of the Consumer Credit Protection Act. Its purposes are to eliminate abusive practices in the collection of consumer… … Wikipedia
United States public debt — Part of a series of articles on Unit … Wikipedia
United States debt-ceiling crisis — Part of a series of articles on Unit … Wikipedia
Non-Recourse Debt — A type of loan that is secured by collateral, which is usually property. If the borrower defaults, the issuer can seize the collateral, but cannot seek out the borrower for any further compensation, even if the collateral does not cover the full… … Investment dictionary
claim in proceeding for readjustment of public debt under the Bankruptcy Act — The claim of a creditor holding securities in the technical or nontechnical sense, even a holder of an unliquidated claim against the municipality or other public body. 9 Am J2d Bankr § 1423 … Ballentine's law dictionary
Dette technique — La dette technique est une métaphore du développement logiciel inventée par Ward Cunningham. Il s inspire du concept existant de dette dans le contexte du financement des entreprises et l applique au domaine du développement logiciel. Sommaire 1… … Wikipédia en Français