技術的負債
最初のコードを出荷することは、借金をしに行くのと同じである。小さな負債は、代価を得て、即座に書き直す機会を得るまでの開発を加速する。危険なのは、借金が返済されなかった場合である。品質の良くないコードを使い続けることは、借金の利息としてとらえることができる。技術部門は、欠陥のある実装や、不完全なオブジェクト指向などによる借金を目の前にして、立ち尽くす羽目になる
Ward の言う負債の悪影響とは、開発と共に得られていく知識や理解と目の前のシステムとの乖離が引き起こす生産性低下のことであり、自分たちが書いているコードの保守性(あるいは、雑さ)のことではありません。むしろコードを書くときには常にそのときのベストを尽くせと言っています。 Ward にとって負債の返済手段はリファクタリングであり、リファクタリングの目的は自分たちのドメイン理解と現時点のプログラムの乖離の解消です。つまりこのリファクタリングとはドメイン駆動設計(DDD)における「より深い洞察へ向かうリファクタリング(Refactoring toward deeper insight)」のようなものと言えるかもしれません。
「負債」という言葉は、経営に近い人ほどポジティブな印象を持ち(資本のイメージ)、純粋な技術面に近い人ほどネガティブな印象を抱く(借金のイメージ)傾向があるように思われます。Ward が語っている負債のメタファーはどちらかというとポジティブなものです。
しかしその後「負債」という強い言葉が独り歩きして、現在の技術的負債のイメージを作り上げたのではないでしょうか。
こちらのほうが大きい。なぜなら変更容易性を高めることで"ソフト"になるから 振る舞いの価値を追加し続け、構造に投資しないと"ハード"になっていく
https://gyazo.com/8ab70bf5b56883b5c46d312107148915
左の2象限が振る舞いの価値でユーザーに見える
右の2象限が構造の価値で開発者にしか見えない
構造の価値を構成する特性
生み出される4つの理由
https://gyazo.com/5910d3ec29ae562d3cf11e03fa9c0a2d
左下は知識・スキル不足
右上は良い負債
優れた構造や振る舞いを追求する過程である
右下は知識があとから追いつくケース
https://gyazo.com/a1a424447431a13bbdd1e5f53f3af089
https://gyazo.com/a35c098c0e74ac0b27cf194f90fafd4d
https://gyazo.com/d6e4c41382e2b4646538572f1fc347b5