技術的負債
【翻訳】技術的負債という概念の生みの親 Ward Cunningham 自身による説明 - t-wadaのブログ
Ward Cunningham
by t-wada
「技術的負債」という言葉から想像されるものは「リリース優先で雑なコードを書いたものの、結局はきれいに書き直されていないコード」や「古くなってしまった技術基盤(言語やインフラやフレームワーク)」ではないでしょうか。
そうだっけ?miyamonz.icon
miyamonz.iconは、時間経過に伴う劣化だと認識してたっぽい
Wikipedia には「行き当たりばったりなソフトウェアアーキテクチャと、余裕のないソフトウェア開発が引き起こす結果」ともあります。しかしこれらは誤解から生じていると Ward は言います。
カニンガムが言ってるのは
早くリリースして、自己認識と実際のズレを認識する
ズレを直す部分が、利子の返済みたいなもの
返済をサボるとズレがでかくなり、利子の返済だけに追われてアジリティを失う
多くのブロガーが負債のメタファーのことを、「後できれいに書き直すつもりなら雑なコードを書いてもいい」と思ってる
これは違う
理解が不完全でも、何がどうズレてるのかを認識するためにリリースをして、そのズレを直すのが良いと言ってるだけ
miyamonz.icon
理解が不完全でも、より良い理解を得るためにリリースするのは良いのは同意
「後できれいに書き直すつもりで雑なコードを書く」
の問題は別なんだけど、それはそれで問題
本当にきれいに書き直せる?
そんな時間が取れる?
きれいに書けるかどうかも技法なので、普段から訓練しないと行けない
訓練してたら、きれいに書くために必要な時間は少ないのでは
実は、単にきれいに書くための方法を知らないだけでは
やらない場合に
めんどくさいからやらないのか
よりよいきれいな状態の絵図が思いつかないからやらないのか
思いついてるのにやらないのか
ある程度、こういう絵図はあるが、ビジネスの方針変更で変わりうるから、一旦おいておくのか
十分な技術力がないからきれいに書けないというだけの場合、それはメンテナビリティが悪いコードを資産として保有するしか選択肢がないということなので、闇金(不当に利子の高い借金)からしか金が借りられない、というのと同じ状況
闇金よりたちが悪いのは、それを罰する人がおらず、法で守れないこと
闇金より良いのは、プロダクトを捨てる場合に、とにかくまるごと捨てればメンテナンスを踏み倒せること