リファクタリングどこから手を付けるか問題
「リファクタリングしよう!」と技術的負債と向き合い始めた時にどこから手を付ければいいか問題ってありますよね。っていうかありました。
すぐに思いつくようなものだと以下のようになると思います。
- 修正が簡単そうな箇所
- 複雑そうな箇所
- 影響なさそうな箇所
- DRY原則に反している箇所
はじめは小さく、影響範囲を狭めて、リリース時の影響範囲も小さくしたいと考えるでしょう。
ですがここでリファクタリングの目的を考えてみましょう。
Q. 何のためにリファクタリングするのか?
A. 顧客に価値を届ける速度(リードタイム)を上げるため
うちの場合はこれでした。
上記で挙げた箇所をリファクタリングしても実はこの目的を果たせないかもしれません。
なぜなら「誰が使ってんねん」とツッコミたくなる機能をリファクタリングしても、それが最後の変更になる可能性があります。
ではどこから手を付けるか?
変更回数の多いコア機能
という結論に達しました。
現時点で顧客に価値を多く届けられている箇所を変更容易にすることで、
今後の機能改修では顧客に対し追加の価値を高速に届けられます。
「価値の大きさ * 価値を届ける速度」の最大化を考えてリファクタリングしていきましょう!(自分に言い聞かせながら)
😉