BLOG

2022-03-22 テクニカル

技術的負債について

どうも、畜産ペンギンです。

 

もうすぐペナントレース開幕ですね。

今年も優勝しないかなぁ。。。

 

今回は、技術的負債という物について語って行こうと思います。

目次は以下の通り。

 

目次

・技術的負債とは

・技術的負債の分類

・まとめ

 

技術的負債とは

技術的負債とは主にシステム開発において使用される比喩表現ですが、どういう事かざっくり言うと、今楽をする為に行ったやっつけ作業に対して後々のしかかってくる苦労(負債)を指します。

 

システム改修を行った人なら大抵経験あると思いますが、既存機能のこいつ何でこんな作り方してんだ直すのに余計な時間がかかるじゃねーかというアレです。

ベタな所を言うと1種類の文言を複数の定数に設定していて、文言修正の改修が入ったらわざわざ複数直さないといけなかったりとか。

 

誤解無きよう、原典と言われている物を紹介しておきます。Ward Cunningham (ウォード・カニンガム)という方が言い出したらしいです。

参考:The WyCash Portfolio Management System

 

技術的負債の分類

負債、と聞くとマイナスイメージが強いが必ずしもそうとは限らない。

敢えて抱えるべき負債もあれば、返す必要性の無い負債もある。

それらを見極めるべく、技術的負債を四象限に分ける考え方があるらしい。

軸は、「無鉄砲(Reckless) / 慎重(Prudent)」と「意図的(Deliberate) / 不注意(Inadvertent)」の2軸となる。

図的にはこんな感じ。

 

意訳すると以下の感じ。

・無鉄砲-意図的 「設計する時間がない、品質を落としてでも急ぐ。」
・慎重-意図的 「今すぐリリースしないといけない、起きるであろう問題には先手を打っておく。」
・無鉄砲-不注意 「レイヤー化?なにそれおいしいの?よくわからんけどやっとく。」
・慎重-不注意 「ミスったが、今はどうすべきだったかわかる。」

 

引用元:TechnicalDebtQuadrant

 

 

一つずつ良し悪しについて考えていく。

 

・「無鉄砲-意図的」

基本的には悪だろう。ただ、リスクが小さい物であれば詳細な計画は必要なく、ある程度無鉄砲の方が効率が良いかもしれない。

例えば、ある程度の負債は覚悟の上で、経験を積ませる為に仕事を任せるというのもこれに該当すると考えれば必ずしも悪では無いかと。

 

・「慎重-意図的」

その時打つべき手を打っている。結果として負債は生まれてしまっているがこれは起きる物として受け入れるしかないかな。

勿論「打つべき手を打ってもを尽くしても技術的負債は発生してしまう」という状況事態を回避出来るならそれが一番だけど。

 

・「無鉄砲-不注意

悪。情状酌量の余地無し。

 

・「慎重-不注意

一見奇妙に見えるが、以下のような実例が当てはまるらしい。

「価値のあるソフトウェアを提供し、顧客も喜んでくれた。コードもよく検討された物だった。だが、より良い改善点を見つけた。」

まぁなんとなくわかるよーな気はする。

不注意はあったがソフトウェア提供まで慎重に検討し、また提供後も慎重に改善点を見つける事が出来るのであれば今後良い方向に向かうのでそれほどマイナスに捉える必要は無いという風に解釈出来るかな。

 

まとめ

結論としてざっくばらんに言うと、作業には意図を持つこと。

また、慎重に考えましょう。

という事ですね。

当たり前っちゃ当たり前の話ですが「どうしてこうしたの?」という意図を聞かれたときに、必ず理路整然と答えられるようしておくというのは意識的にやらないと難しい。

 

また、当然皆完璧人間ではないし、リソースも限られている中で取り組まないとならないので上手くいかない事も出てくるでしょう。

その時の対処の考え方としては、無鉄砲な事をするならリスクを考えましょう。不注意があったのなら次に生かしましょう。

といった感じでしょうか。

 

今回改めて調べてみた中での個人の感想ですが、基本的に技術的負債という物はマイナスイメージしか持っていなかったので敢えて抱える必要もあるという発想は面白かった。

ただ、経験則的には返済するには凄くエネルギーが必要で、ほぼ返済される事が無いんですよね。返済の為の工数なんか基本的に取れないので。

ので、やっぱり嫌な物には違い無いとイマイチ整理出来ていない部分もあります。

 

今回はここまでです。

 

さようなら。

 

The following two tabs change content below.

畜産ペンギン

主にネットワーク系、開発系を経験しているエンジニアです。 技術系を気まぐれに書いて来たけどそれ以外も気まぐれに書いていこうかなぁと。