Managing Technical Debt: Reducing Friction in Software Development I-2
https://learning.oreilly.com/library/view/managing-technical-debt/9780135646052/
Part I: Exploring the Technical Debt Landscape
Chapter 2. What Is Technical Debt?
技術的負債のほとんどは、開発組織が将来負担する可能性のある追加コストである。
“<これ>を今やらせて、<それ>をもっとうまくやる余裕があるかどうかは後で決めよう"。
基本的に、負債は借りたお金ではなく、借りた時間、より正確には借りた努力であり、組織はこれを金銭に換算することができる。
これらの追加コストは、常に特定の技術的負債項目と明確に関連して現れるわけではない。
その代わりに、ベロシティ(または生産性)の低下、リリースサイクルの長期化、あるいは開発チームの士気への影響といった形で現れる。
Principal and Interest(元本と利息)
Step 1:最初の借金をする:ソフトウェスタックの選択
Step 2:システムを進化させ、負債と向き合う
Step 3:借金の処理方法を決める
Step 4:利息の支払い
コスト:あらゆる開発コスト
定期的な利息:システムを進化させなければならないたびに、技術的負債のために発生する、常に追加される、場合によっては増大する労力のコスト。
元本と未払い利息:負債を返済するために設計を変更する費用と、依存部分(回避策)を改修する費用。
・分割払いプラン(ローン)は現場で参考になると思う
ある画面にある機能を作る
↓
・他の画面に同じ機能が必要になったのでコピペで作る※スケジュール要因
↓
・更なる他の画面に同じ機能が必要になった。
分割返済をするために、機能の中の一部の共通化からはじめる。
どのような技術的負債であっても、"何もしない “と “すべて返済する “という明白な両極の間には、多くの場合、さまざまな選択肢があるということ。
潜在的債務と実際の債務
すべての技術的負債が同じ影響を持つわけではない。
ある問題が実際の技術的負債であるかどうかは、開発チームがソフトウェアシステムに将来どのような進化を加えたいかによって決まる。
技術的負債の項目が、将来の進化に影響されないコードの一部に存在する場合、この技術的負債の項目は潜在的負債に過ぎない。
それが進化に影響する場合、それは実際の負債となる。
原則:利息が発生しないのであれば、技術的負債を負っていない可能性が高い。
時間は大きな役割を果たす
技術的負債が問題になるのは、時間が流れ、ソフトウェア・システムが進化していくときだけである。
もしシステムが進化しなければ、利息を支払う必要はなく、したがって技術的負債も重要ではなくなります。
プランニング
・借金をする価値はあるのか?
・技術的負債を抱えたら、いつ返済すべきか?
・すべてを返済する余裕がない場合、どの部分を優先すべきか?