地方エンジニアが感じる地方・中小企業での悩み

技術的負債と言わなくてもいいんじゃない

»

 数年前から開発の世界では、技術的負債、という言葉が用いられるようになりました。現実世界の負債という概念を、開発の複雑さにあてはめた非常に面白い比喩表現です。コードを書き始めた瞬間からその負債は発生し、常に新しく書き換えていかなければ利息が積もっていくことにより、どうしようもない事態に陥るというものです。
 実際の開発現場に携わっていると、この言葉が表す状況というのが痛いほどわかることもあるかと思いますが、ではどうするか、という決断を下せる立ち位置にないこともまた多く、非常に悶々と過ごさざるを得ない方もまた、非常に多いかと思います。

 多くの方も言われていますが、それが本当に技術的負債か、と聞かれると実のところは難しい判断が必要になります。プログラミングの領域だけに限れば、難解で理解しにくいコードがまさに負債と思われますが、もう少し大きく開発業務として捉えた場合には、そのコードが生み出すメリットとデメリットや、コードを書き換えるにあたり発生するコストなど、多くの要素を元に判断を下さなくてはなりません。極端な事を言えば、どんなに読めないコードであろうとも、それが問題なく動作し今後に改善を行わないのであれば、それは全くもって負債ではなくむしろ多くの価値を生み出す優良債権と扱われるでしょう。

 そのような背景もあり、何をもって技術的負債とするかというのは、個人個人で決められるものではなく、その開発に携わる多くのメンバーの意見を元に決められる必要があります。私が耳にする、目にする中では残念なことに、一部の開発者だけが言っているか、マネージメント層な人だけが言っているかというように、本来ならばメンバーの間で合意が得られて負債とみなす必要があるのですが、それを行えている場面にはそれほど多く出会えていません。

 Martin Fowler 氏は技術的負債を以下の 4 種類に分類しています。時間を最優先し品質よりもまずは成果物となる「無鉄砲で意図的」、問題があることは承知しているが事前に対策を用意しておく「良識的で意図的」、プロジェクトが混乱に陥りつつある「無鉄砲で偶発的」、現時点では最も良い状態と思えるが最良な手段は別にあると後で気づく「良識的で偶発的」。これら 4 種類が技術的負債と呼べるもの、と言われています。

 この定義を見てわかるように、開発を行う事と負債を発生させることはほぼほぼ同意です。最も良い状態と思える「良識的で偶発的」な負債であっても、後でさらに良い手段に気付く以上は負債となりえます。ましてや今の IT 業界では、現時点で最良の選択肢を選んだとしても、翌年には、場合によっては来月にはよりよい別の方法が生まれていることも珍しくはありません。

 これらをふまえると、技術的負債をあまり意識しすぎることは逆によくない事なのではないか、と考えられないでしょうか。この定義に沿う限り、その質は異なるでしょうが必ず負債は発生します。そこは避けられないのです。負債を発生させないという考え方自体が、既に技術的負債と言う定義にそぐわないものなのです。

 もちろん意識しすぎることはよくありませんが、意識しないことはそれよりも厳しい状況を招くのは間違いのないところです。意識しないことは、先ほどの分類に沿うと「無鉄砲で偶発的」な状態であり、デスマーチへ一直線に進んでいても不思議ではない状況にしかなりません。将来的に負担となるどころか、今この時点からの負担を生み出していては、負債かどうかなどと悠長な事を言っている場合にはならないでしょう。

 私自身はこのような考え方をしていますが、技術的負債と言う言葉を用いるのは正直好きではありません。考え方としてはそれほど反対するところもなく、よく理解できるところなのですが、負債、という言葉のイメージから感じる負の印象があまりにも大きく、定義とは異なるもっと悪いもので根絶しなくてはならないもの、のようにも感じられてしまうからです。それでは本質を見誤ってしまい、本来の開発にも悪い影響を与えてしまいます。

 私たちの業務では、このような言葉がなくとも常に同じことを考えているはずです。ならばその考えに従って進んでいくことが、結果的に技術的負債というものに対して対応できていることにはならないでしょうか。

 より状況を理解しやすくするという点で、技術的負債、という言葉は非常に効果があります。ですが、それを必要以上に恐れることは、かえって自分たちの首を絞める結果にしかならないのではないか、と私は思います。

 言葉だけが独り歩きしていることのないように、常によりよく進められるように色々と考え、そして実行していきたいものです。

Comment(7)

コメント

gogotea3

個人的には後先を考えないシステムが多すぎるというのが問題かなぁと。。。
後先を考えすぎて、何もしなくなってしまうのは問題ですが、後先を考えず、ひどい運用になるシステムを見ていると、後先、負債を考えすぎるくらいでバランスが取れる気がします。

さとまも

全社的なシステム状況についてクライアントと話をすることが多いですが、各システムの重要性、費用対効果、今後の拡張要否、という部分について整理ができていないことが多いですね。それが負債の意味合いを分けてくるのだと思います。あと、古くからの問題でもあり、未だにIT組織で良く課題に挙がるのが、アプリケーション品質に紐付く運用コストでしょうか。設計レベルの話とも考えられますが、後続の運用に余計な負荷を強いるアプリケーションは、結果としてランオフ(廃棄)のタイミングまでのコストがかさむ可能性がありますが、これが軽視されてきましたよね。

昨今は、クラウド化によって運用が雲の向こうに行ってしまったところもあり、余計にカスタムアプリケーションの運用効率の低さが目に付いているような気がします。

まりも

根絶しなくてもいいからこそ、
負債にたとえているんじゃありませんでしたっけ?

世の中に無借金経営の企業がどれだけあります?

やまぐち

>gogotea3
>負債を考えすぎるくらいでバランスが取れる気がします。
ソースの保守ができない理由は
後先考えすぎて望まれもしない拡張要素をてんこ盛りにしたけれど
お客さんの追加要求はまったく別の方向だったよ・・・というわけで
しこたま入れた後先考えたつもりのシステムは全部不良債権になりました
ごめんちゃい(笑)ってコメントを設計書に残せないことですよ

Ahf

gogotea3さん、さとまもさん、まりもさん、やまぐちさん、コメントありがとうございます。

>後先を考えすぎて、何もしなくなってしまうのは問題ですが、後先を考えず、
>ひどい運用になるシステムを見ていると、後先、負債を考えすぎるくらいで
>バランスが取れる気がします。

このあたりはバランスでないかなと私は思います。
酷い運用も確かに見かけられますが、あまりに考えすぎて当初の予定通りに
運用開始できない状態になるのもよく聞く話かな、と。

>全社的なシステム状況についてクライアントと話をすることが多いですが、
>各システムの重要性、費用対効果、今後の拡張要否、という部分について
>整理ができていないことが多いですね。

そうですね。ユーザー側の企業で、ここをしっかり把握・整理できているところは
非常に稀有かと思います。人的余裕のある大きな企業でも難しですし、
システム数が少なくなる中小企業であってもまた難しいですよね。
どこにリソースを集中させるか、というのも判断に困るところなのかと思います。

>根絶しなくてもいいからこそ、
>負債にたとえているんじゃありませんでしたっけ?

はい、その通りですね。必ずついて回るものですので、
根絶させることは不可能だとも思います。
SNS 上で別の方も言われていたのですが、負債、という言葉から感じる
負のイメージが、本来以上の意味合いを持たせているのかな、と思いました。

>後先考えすぎて望まれもしない拡張要素をてんこ盛りにしたけれど
>お客さんの追加要求はまったく別の方向だったよ・・・

これも非常によくわかります・・・
将来的要素を想定して、システム上に仕組みを盛り込むこともよくありますが、
なかなかそれが的中することもないですよね。

山無駄

以下の一文を考えたとき、技術的負債よりかは技術的業(カルマ)という
方がしっくりくる感じがします。

>技術的負債をあまり意識しすぎることは逆によくない事なのではないか、
>と考えられないでしょうか。この定義に沿う限り、その質は異なるでし
>ょうが必ず負債は発生します。そこは避けられないのです。

リスクとして定量的に管理したいのであれば「負債」という言葉でも良いのかも
しれませんが、望むにしろ望まざるにしろ、何かを作るときには完璧なものは
できないわけで、また例えその時は完璧であったとしても、時代の移り変わりの
中ではいつまでも完璧であり続けるわけでもなく。

だとしたら業としてとらえるほうが、技術に対して真摯になれるのではないか
と。

取り立て屋

負債という言葉に対する印象が悪すぎるのではないでしょうか。実際の経営では負債というのは悪でも恥じることでもなく、事業の初期投資にほぼ必須の要素です。事業の立ち上げに当たって妥当な額の負債を抱えることは当然であり、そこを避けるべきではありません。
ただし、負債をいつまでも抱え続けることは問題です。その事業の負債はなるべく早く圧縮するか、事業規模の発展状況に対して十分コントロール可能な額に抑える必要はあります。「負債」という言葉が使われた一番の理由は、放置すると「利息」がついて、いずれ手が付けられなくなるという性質によると思われます。アメリカ人は debt が発生することそのものについては問題視していない印象があります。利息が怖いというのも、低金利に慣れきった日本人には印象が湧きにくい部分かもしれません。

コメントを投稿する