技術的免責

技術的負債ってときどき返さなくていいときあるよね、という話。

わかりやすい例: いわゆる MVP として雑になにかをつくり製品としての手応えを確かめた結果ダメそうという結論になったとき。その試作的コードは捨てられておしまいとなる。

OS バグなどのワークアラウンドをベタっと埋め込んだ時: OS のバージョンがあがってそのワーウアラウンドをまるごとばっさり消せる。同様に CPU の遅さを回避すべくグチャっと非同期なコードを書いた時: CPU がはやくなってそのワークアラウンドをまるごと消せる。PM が締め切り前に無茶な機能をつっこむよう求めていたのでやっつけ仕事をしたが、その思いつきは結果が出なかったので巻き戻すとき: これは冒頭の MVP の例と一緒か・・・。

無駄に一般化するなら: 目の前にある複雑な問題と戦う抽象を生み出すことができずベタっとゴミを投げつけ目をつぶっていたら、いつの間にか複雑な問題自体がなくなってしまうことがある。そういうときは技術的負債、借金を踏み倒せる。

これは単に「そういうこともたまにあるんだな」という発見を紹介しているだけであって、だから負債しても OK とかどういう負債は免責されやすいとか、役に立つ洞察は特に無い。しいていえば一種の YAGNI を示唆していると解釈できるかもしれない。つまり、過剰な一般化をしてしまうと問題が消えた時に巻き戻しにくいので、相手をしている複雑さが居座るとわかるまではベタって書いておいた方がよい、かもしれない。

なおゴミコードを書いたあと異動なり転職なりをするという踏み倒しもありうるが、人間関係の負債にすり替わりがちなので waiver できたとは言えない気がする。