技術的負債の一括払い、分割払い

技術的負債について

ja.wikipedia.org

技術的負債は基本的には避けるべきものだが、スタートアップにおけるプロダクト開発では往々にしてスピードが求められるために、負債を負うことを甘受したほうがよい、と判断される場面がある。プロダクトが大きくなっていくといずれ対応しないといけないが、そもそもその段階までプロダクトが育つかどうかよく分からない、むしろ他の高優先度の機能開発を優先しないと死ぬ、みたいなケースを想定している。

自分の経験から具体例を挙げると、例えば一覧画面におけるページングは後回しにされることが多い。初期段階では全件取得するようにしておいて、プロダクトが順調に成長して一覧ページが重くなってきたら実装する、といった感じ。

一括払い

前述した、「必要になったらその機能を追加する」という考え方は一括払いと言えそう。最初に負った負債を一気に返す。一気に返さないといけないので、その分かかる労力が大きい。

ページングの例で言うと、ページング基盤のような設計・実装が必要になり、その基盤を使う対応をバックエンド・フロントエンドの両方に入れる必要がある、といった感じ。

一括払いの課題は、労力がかかってしまう(≒工数がかかる) ために後回しにされがちな点だと思っている。

分割払い

では分割払いとは何か。これは、最初から将来のことを想定した設計・実装にしておくというアイデアかと考えている。

ページングの例で言うと、ページング機能自体は実装しないが将来的にページングが可能な設計にあらかじめしておくという感じ。設計を最初に考える必要があり、かつ一覧画面を作るときは都度その設計に沿う必要がある。一括払いよりも前の時点から少しづつ負債を返していくというイメージ。

分割払いの課題は、負債を少しずつ返す分、一括払いのような一時的なスピードが得られない点だと言えそう。

まとめ

どちらかの方法が優れている!ということが言いたかったわけではなく、単に今までの経験で感じたことを文章にまとめたかったので書いてみた。

これまでの経験では一括払いを選ぶケースが多かったけど、ケースに応じて分割払い選択をするのもありなんじゃないかと思っている。