■ はじめからやり直したい症候群
仕事がある程度の段階まで進むと、あちこちに歪みやアラが目立ってきて、全部「 はじめからやり直したい 」という気持ちが強くなってきます。これを私は「はじめからやり直したい症候群」と呼んでいます。この症候群の特徴は、以下のような言葉で表現できます。
- あっちとこっちが 統一されていない のが気になる
- いまはAとBとCと別れているけれど実は 汎用的な Gで対応できるはずだ
- XとYがごちゃごちゃしていてわかりにくいので 全体的に整理 したい
- 要するに、全部捨ててゼロから作った方が 絶対 よいものになるのだ
でも、安易にはじめからやり直すと、たいていは失敗します。
■ なぜ最初から作り直したくなるのか
長い間に、プログラムをどんどん機能拡張して行くとだんだんコードが汚くなってくる。ローカルな問題はいいんだけど、とくにデータ構造や大局的なアルゴリズム、プログラム内のインターフェイスなんかが汚くなって、「もう作り直すしか無い」と考えるようになる。
しかし、最初から作り直すのは大抵は間違いだ。地道なリファクタリングで大抵はなんとかなる。自分でcipherで実践してみてもまったくそう思う。できるはずが無いと思えるようなアルゴリズムの大変革でも連続的な等価変形を積み重ねてできる。そのあいだプログラムは常に動く状態を保てる。
その経験から反対に、なぜ連続的な変形/改良では解決できないように思えるかの原因も分かる。最終的にどうしたいのかが分かっていれば、大抵は連続的な変形/改良の経路を発見する事ができる。
つまり改良が不可能なような気がするのは、最終的にどうするべきか分かっていないからなのだ。
■ 再利用の罠
- 1. 再利用しようとしてはいけない
再利用するのはいいことですが、再利用しようとしてはいけません。一見矛盾しているようですが間違いではありません。再利用はしようとするものではなく、正しい分析や設計をすれば自動的にできてしまうものなのです。目的ではなく結果なのです。
「再利用をしよう」とスローガンを掲げる人には「なぜそんなに再利用をしたいのですか?」と聞いてみましょう。きっとなぜそんな当たり前の事を聞くんだとでも言うような顔をして少し返答に困り、こう言うでしょう。「だってプログラムコードを再利用できれば書く量が減るだろ?」と。
これこそプログラムコード至上主義です。今までに何度も言っているように、コードなんてすぐ書けるのです。大変なのは設計であってプログラムコード書きではありません。「今まで書いたプログラムコードを使い回そう」と思っている人はきっと落し穴にはまります。