無限リファクタ地獄
今回は作品を完成させる上で最大の問題と言っても過言ではない無限リファクタ地獄と私が呼んでいる現象について書いてみます。
無限リファクタ地獄とは
無限リファクタ地獄とはなにか。
リファクタ?
まず、リファクタとは、リファクタリングの略で、通常プログラムにおいて、外部のふるまいを変えずに、内部のソースコードを(通常はメンテナンス性の向上などを目的として)書き換える行為です。
ただ、このリファクタ……一見有益に思えますが、基本的に無限にできるため、気を抜くと四六時中リファクタばかりしている状態に陥ります。
なぜ無限にできるのかというと、改善しようとしている性質が、定性的で終わりを定義することが難しいからです。
レベル感としては、リファクタの終わりを定義する>>>(越えられない壁)>>>リファクタをする>リファクタをしないくらいの感じです。
初心者+がリファクタを覚えると、延々リファクタばかりする状態に陥る
リファクタの終わりを定義するのは、難しいです。一方で、リファクタ自体は簡単です。そうすると、リファクタをしなかった初心者の頃より、リファクタを覚えた初心者+のほうが、むしろ
無限リファクタ地獄に陥り作品を完成させられない
という現象が発生します。
とにかく目が肥えてしまい、悪いところが目について仕方なくなります。そして、そこを直すことばかりに気をとられ、作品が完成しなくなるのです。
締切駆動でなんとか乗り切っても、その後は無限リファクタ地獄に陥るパターンも
対症療法ですが、締切駆動はそれなりに有効です。
ただ、対症療法に過ぎないので個人的にはおすすめしません。それよりも、きちんと完成させる習慣をつけて根本原因に対処したほうがいいと思います。
なにより、締切駆動でなんとか締切に間に合わせても、その後無限リファクタ地獄に陥ってしまうという、よくないパターンがけっこうあります。
印刷などして強○的に更新ができなくなるなどの制約があればいいですが、プログラムやデジタルデータなどの場合、いつまでもそれを継ぎ足し継ぎ足し修正するばかりになってしまいます。
このパターンですと、締切駆動でなんとか1作品程度は出せても、そのあと継続して新作や新機能を出すということができません。
まあ、新作・新機能を出すことがすべてではありませんが……個人的には、あまりよくない傾向だと思ってはいます。
プログラムばかりの話ではない
この現象は、プログラムだけの話ではありません。
- 小説なら、無限に推敲を繰り返し、作品が完成しなくなる無限推敲地獄
- 漫画なら、無限に過去のページの修正を繰り返し、作品が完成しなくなる無限修正地獄
- etc., etc. ……
……と、枚挙にいとまがありません。
リファクタ・推敲・修正等をすること自体は大事
もちろん、リファクタや推敲、修正をすること自体は大事です。でないと作品のクオリティがいつまで経っても上がりません。ただ、それはあくまで作品が完成するというのが大前提です。
問題は、リファクタや推敲、修正の終わりを定義できず、いつまでもそればかりしてしまうことです。
きちんと作品を完成させられるひとは、何度も完成させた経験で、さじ加減をわかっています。これ以上時間をかけても仕方ないな、とか、ちょっと気に入らないけど、ここに時間をかけていたらスケジュールを圧迫するな、とかです。
一方、無限リファクタ地獄に陥ってしまうのは、作品を完成させられない状態が多いです。
特に、多少経験はありつつも、1作も完成作品がない頃~数作品程度の頃がいちばん多いと思います。
本当に最初の最初は、むしろ陥りにくい傾向があります。ただ、多少慣れてきた段階ですと、細部には凝れるが全体を俯瞰して見るのが難しいため、細かいところに気をとられ、全体のスケジュールが延々と遅延してゆくのです。
細部に凝りつつも全体を俯瞰して見るのは、本当に難しいことです。両立できないときは、すくなくとも完成を優先するなら、細部に目をつむる力というのも重要です。
スケジュールが遅延に遅延を重ねても、5年・10年かけて完成させる人もいるにはいるが……
ちなみに、人によっては5年・10年かけて本当に大作を完成させてしまう人もいます。
ただ、かなり例外的なパターンだとは思います。多くの場合、その前に力尽きて完成しません。
ですので、あまりおすすめできる道ではないと思いますが……最終的には、個人の自由な気がします。
無限リファクタ地獄に陥ってはいまいか?
だいぶ長文になってしまいましたが、どうでしたか? 私も、気を抜くとすぐに無限リファクタ地獄に陥ってしまっている自覚があります。本当に細かいことでも、よくなっているにはよくなっていますから、よりタチが悪いというか……「本質的な進捗」からの逃避を正当化する最強の理由になってしまうんですよね。
新しいなにかをつくるより、既存のものを改善するほうがずっと心理的にも楽ですし簡単です。でも、既存のものをいくら改善しようと、やっぱり完成に向けては1歩も進んでない、ってこともよくあります。
そんなとき、なにもしないというのは「焦り」が生まれます。その「焦り」を止めて「安心」したいがために、リファクタというのは絶好の手法なんです。
でも、完成に向けて歩を進めるなら、やっぱり「本質的な進捗」をする必要があります。
本当に完成に向けて歩を進めることができているのか。それとも、なにもしなければ時間を失うという「焦り」から、なにか手を動かさなければという心理からの行動なのか。
そのふたつを見極めて、着実に完成に向けて歩を進めるのが重要だと思います。