技術的負債
以下の2つの乖離による、生産性低下のこと
自分たちが書いているプログラムの状態
そのドメインに対する理想的な状態
つまり、物理的な汚いコードのことを指しているわけではない
よくある誤解
極端な例を考えると、
ある時点で、プログラムとドメインが完全に一致していて、プログラムがきれいだったとしても、
その後、ドメインに対する知識が増えたが、プログラムを更新しない、となった時
プログラムはキレイだが、技術的負債がある、と言える
プログラムが綺麗かどうかではなく、ドメイン知識を正しく反映しているかどうかが肝
金融的な「負債」のメタファー
緊急対応して、一時的に汚い状態でdeployし、後でリファクタする そのリファクタをサボると、後にドメインに対する理解を得た時に、それをプログラムに反映できず、更に緊急対応を重ねることになる 最終的に、進捗を出せなくなり、身動き取れなくなる
一時的に借金して、後に返済していく
借金返済をサボると、後に何かを購入したい時に、更に借金することになる
最終的に、収入が利子に食いつぶされ、身動き取れなくなる
参考
誤解が生じてると何が問題か?
病気によって必要な薬が異なり、いろんな病気を一括りにしてしまうと薬の選択が難しくなるように、いろんな問題を「技術的負債」の傘の下に一括りにしてしまうと対応を間違ってしまうので、言葉の厳密な定義を持っておくべきだということ。ref これは誤解の問題ではなく、ある名称が指す範囲の問題ではないのか
誤解がなくても起きうる問題なんじゃないの
Ward が語っている負債のメタファーはどちらかというとポジティブなものです。 ref そうなのか?どの文章からそう読み取れるのか #?? Wardの主張は前提に「ドメインとコードを一致させるのが最も理想的な状態」がある
「負債」と言った時、その状態から離れているのでポジティブじゃなくない?
面白い事例
コード量が膨れ上がってメンテできなくなったので開発終了
技術的負債の発生理由の分類へ言及してる
ボトムアップにコードをキレイにしていく
大きなシステムを寒いステムに分解し、サブシステム単位で置き換えていく
ゼロから書き直す
https://gyazo.com/32aea87356b7d8c86189fd7f01a8a35c https://speakerdeck.com/mtx2s/internal-quality-issues-caused-by-organizational-design?slide=12