技術的負債の返済はいつすべきか
こんにちは。
HRBrainという会社でVPoEを担当している川田です。
社内ラジオで話をしたネタの抜粋記事を書きます。
技術的負債の返済にまつわるよくある話
「こんな負債大きくなるまでなんで放っといたの?」
「リリース前にやっておけたらこんなに苦労しなくてすんだのに」
「いつかやろうと思ってるけどそのいつかはいつまでも来ないじゃん」
こういうこと、少しでも開発に携わったことのある方なら誰しも考えたことがあると思います。
負債はいつ返済するのが良いのでしょうか。
最もコストがかからないのは、分かりきっていることはリリース前に対応しちゃうことです。その方が稼働中のデータ移行や互換性のことを気にしなくて良いので、考慮すべきことが減って簡単かつ安全に短時間で対応できます。
「よし、じゃあリリース前に対応するのが正解だ!強い意志でリリースの延期を訴える!」
と、結論を出す前に少しだけお金のことを考えてみます。
簡単にシミュレーションしてみましょう。
仮想会社のお金シミュレーション
とある会社には従業員が20名います。エンジニアもセールスもコーポレートも、みんな一律月額50万円の給与をもらっていると仮定します。
会社を立ち上げて、1億円の資金調達をしました。
20名×50万円なので人件費が月で1000万円。10ヶ月で資金が尽きる計算になります。
負債があることを知りながら早めにリリースした場合
なんとか4ヶ月で開発を終えて、プロダクトをリリースしたら 5ヶ月目からは100万円、2ヶ月目は新しい機能も追加されるので200万円、 3ヶ月目は更に機能が増え300万円と、月々+100万円の売上が見込めると仮定します。
こんな感じです。
4ヶ月間の開発を経て5ヶ月目で無事にリリースできたので、少しずつ売上が増えて、いずれ人件費を売上が超えて利益が出始めます。
会社設立から13ヶ月目で最もお金がなくなり、会社の銀行口座には1500万円しかなくなります。調達した1億円におさまっているので、なんとかなりました。
この損益分岐点を境目にどんどん収益が上がり、22ヶ月目で累計のお金が 5000万円を突破しました。一安心です。
リリース前に負債返済を実施した場合
さて、次に分かりきっている負債をリリース前に返済するために、リリースが2ヶ月伸びたケースを考えてみます。6ヶ月間開発をし、7ヶ月目から売上が発生します。
リリースが伸びましたが、2ヶ月なのでまあ許される範囲でしょう。
…本当にそうでしょうか?
同じようにグラフにすると
なんとお金がなくなってしまいました。
もう少しで利益が出るというところまでいけたのに、従業員の給与が支払えなくなりました。辛い。
もしなんとかこの局面を乗り越えたとして、累計のお金が5000万円を突破するのは26ヶ月目です。
比較するとこんな感じ。
開発期間が4ヶ月の場合は22ヶ月目で5000万円を突破したのに対し、開発期間が6ヶ月だと26ヶ月かかっています。その差は4ヶ月。しかも後者は一度お金が尽きています。
負債の返済を前倒してリリースが2ヶ月遅れたことにより、会社が同じ状態になるまで4ヶ月の差が生まれてしまいました。
ここで、4ヶ月で開発を完了してリリース後に負債返済をすると決めたチームの場合、どのくらいの期間を返済に当てられるかを考えてみます。
負債返済のための開発をしている時期は新機能が追加できないので、負債返済開発をはじめたら毎月+100万円になっていた売上が横ばいになると想定して、5000万円に到達したタイミングから月の売上横ばいでシミュレーションしてみます。
同じ状態になるまで、なんと10ヶ月もかかる計算になりました。
言い換えると、リリース前の負債返済は我慢して2ヶ月早くリリースをしたことで、リリース後に最大で5倍の10ヶ月の時間をかけて改修するチャンスを得られたということになります。
最終的に全く同じ状態になるんならどっちでも良いやんけ!と思う方もいらっしゃるかもしれませんが、より早く売上が作れていると追加の資金調達がしやすかったり、マーケの面で有効な手が打ちやすかったり、市場の中で存在感を出しやすかったり、あらゆる面で有利に働きます。
もちろん、10ヶ月まるまる使わずにもっと短い期間で十分メリットが得られる改修ができれば万々歳です。
今回のケースだと、リリースまでの期間は少しでも短くしてリリース後のあるタイミングからじっくり負債返済に当てる方が良さそうです。
まとめ
決して「何が何でも早くリリースせよ!」と言っているわけではありません。
「リリース前に対応したほうが短時間で済むから先にやりたい」という考えは一見正しいように見えて、実はお金のことを考えてみると正しくない可能性があるよということが伝えたかったです。
またお金の話はちょっと考えれば職種関係なく誰にでも理解することができますが、開発のリスクや展望をエンジニア以外に的確に把握・理解してもらうのは非常に困難です。
そのためお金のことも設計のことも両方を正しく踏まえた適切な判断は、実はエンジニアにしかできないんじゃないかと思っています。
エンジニアだからこそシステムの構造だけでなく、会社の構造やお金の構造についても考えてみることで説得力が増し、より自由に仕事ができるようになるはずです。
おしまい。