ソフトウェア開発には技術的負債という言葉があります。
負債なので返済を余儀なくされるものであり、ごく稀にテストをしない言い訳に使われたりします。この技術的負債について本当に必要なのか?を含めて考えてみたいと思います。
われわれは何を借りているのか?
ビジネスを伴うソフトウェアであれば利益、OSSのようなものであれば社会的意義などに集約されるかもしれませんが、ここでは開発者が想像しやすい、「速さ」を借りていると考えていきます。
テストを書かなかったばかりに未来でバグが見つかる。Flakyなテストを作ってしまったばかりにテストのたびにFailの内容を確認する必要ができてしまう。関数名を適切に付けなかったばかりに可読性が下がり毎回関数の内容を読み解いていく必要がある。
など、将来コストがかかりそうだけど、今は速いからよし!となると技術的負債が増加していくと思います。
われわれは誰から借りているのか?
先ほども「将来」など出てきましたが、われわれは未来から借りていると言えます。未来の利益を前借りしています。しかも利息付きで。下手したら複利で。
われわれは本当に借りなければいけないのか?
借りないに越したことはないはずですが、現実的には借りなければならないでしょう。どれだけ綺麗に将来も速くなるようにしたとしても、ライブラリのアップデートなどはコントロールできないので少なからず借りることにはなると思います。
現実問題、未来から速さを借りなければ現在では戦えないケースが多いはずです。将来も速く作れるソフトウェアを作るのが難しいは難しいです。
われわれは本当に本当に借りなければいけないのか?
借りなければいけないはずです。ここでは借り方を考えてみましょう。
いわゆる資金調達などには、投資・投機・融資などがあります。われわれはどのように借りているのでしょうか?
無尽蔵に借りることはできない前提で考えると、よく「返済計画を立てましょう」などと言われることが多いので、融資に近いのかなと思います。返さなければいけないし、利息もつきます。銀行から借りれたら良いですが、萬田銀次郎やウシジマくんから借りるしかなければと思うと先が見えません。
では、投資で、もっと言えば投機で資金調達できないか?を考えてみましょう。
投資や投機では資金提供する側がリスクを持ってくれます。それに対しわれわれはどれだけのリターンを返せるか?を提案します。ただし成功するとは限りません。いい感じです。
つまり、われわれはリターンを提案しつつ未来から投資してもらうのです。負債を返す必要はなくリターンを与えることが目的です。プロダクトっぽくなってますね。借りなくて良くなりました。
だからどうなの?
われわれが未来から投資を受けていると考えると、常に大きなリターンを返せる状態を作り出すことが重要になります。これは返済計画のようなものではなく常にリターンを返すことを阻害する要素を排除し続けることが求められます。計画的に進めてもいいですが、その計画が投資に対してのいい提案になるかはわかりません。当たるかわからないので。
技術的負債から戦略的投資計画へと意識の違いが生まれました。
本当はどうなの?
多分ただの言葉遊びです。