技術的負債(6) [技術的負債]

Becoming a Better Programmer: A Handbook for People Who Care About Code

Becoming a Better Programmer: A Handbook for People Who Care About Code

  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2014/10/03
  • メディア: Kindle版

この本の「Chapter 13: A Tale of Two Systems」からの抜粋(p.122)です。

Technical Debt

Technical debt is a term coined by Ward Cunningham that’s widely used in the software industry today. The metaphor leans on the financial world: making a decision to help ship software quickly is like taking on a loan. It can enable you to do something now that you would not otherwise be able to do.

But you can’t ignore that loan—you always have to pay it back. The longer it takes to pay back, the more it costs you. If you fail to make timely repayments, you’ll be stuck paying off interest on the loan, and your purchase power diminishes.

In the software world, that means return to your code to update it, or else your progress will slow as the code bogs down in accrued debt. This is important: in the long run, lower code quality means longer development times, but a responsible short-term loan can speed things up.

Technical debt might be deferred refactoring, design adjustments that reflect what you’ve discovered, waiting to update libraries or toolchains until after the next major release, or rationalising the logging/debugging scaffolding.

This is a colourful metaphor that can be misused: technical debt does not just mean doing something badly. Sometimes writing bad code is justified as being “pragmatic”; there is a difference between a pragmatic choice and a sloppy one.

Consciously managing technical debt is a powerful weapon in your development arsenal. Don’t let debt build up, and keep it visible. Like a real loan, pay back debt as early as possible to avoid suffering excessive interest and charges.