ソフトウェアを作っていて、ここの開発体験が悪いのでちょっとリファクタリングしたい、と思ったときにどうするか。
- とにかく直してしまう
- 今後のリファクタリング予定、みたいなロードマップと見比べて、ロードマップに合致してたら直す
- すぐには手を付けず、今後のリファクタリング予定、みたいなロードマップを粛々と進める
とにかく見かけたら完膚なきまでに直す、という人もいると思って、カッとなって直してきました…みたいな言説はよく見る。
一方で、目についた順に手を付けていてもできることには限界があって、全員の意識を統一して、こういう順序でやればうまくいくに違いない、みたいにロードマップを作ったりして段取りをして、同じ方向に向かっていけると、より大きいことができたり、より良い状態になれたりする、ということもあるだろうと思う。
というときに、どれくらいのバランスで、ちょっと直すのか、直さないのか、段取りを定めて長期的にやるとよいか、という指針を建てるのが難しい。
一人でやってるときには、まずは動かしてリリースできるようにして、その後の余った時間で調整する、という手段を取ることが多い。
もともとやりたかったことができるまえに、先に直していて、その最中に新たな別の問題が見つかって、実はそっちに時間を使ったほうがお得だった、ということがありえるので、リリース可能にしておく、動くようにする、というのは最初にやってしまったほうが、自由に使える時間が長くなる可能性があるため。
もう一つ思うのは、本当にやらないといけないこと以外をいったん放っておく力も重要で、本質的でない作業をひたすら続けることをヤクの毛狩りと呼んだりするけど、どの分野でもヤクの毛を狩ることはできるので、どんな誘惑があっても今は毛は狩らない、と決めたら手を付けないようにすることが重要だと思う。
ランダムなタイミングで目についたところをちまちま直しているだけでやりたいことができなかった、ということがあっては、戦略もなく、やりたいことも実現できない、という悲しい結果になってしまう。