エンジニア向け
柵の倒し方
narita
コンピュータ・インターネットの世界は日進月歩。
これまで誰も予想しなかった技術・サービスが、あっという間に世界中に広がり、常識が一日ごとに塗り替えられていきます。
そうした環境においては、常に自己を革新することがもとめられ、新しいことに挑戦する勇気を持たぬものは消えていく運命にある……といったような認識を持っていらっしゃる方も多いのではないでしょうか。
そうした見方は概ね正しいと思います。
挑戦と革新はいつの世も進歩と発展の原動力であったことは間違いなく、またこれからもそうであることでしょう。
その一方で、プログラマの間でよく知られる格言に、
フェンスが建てられた理由が分からないうちは、それを倒してはならない。
Don’t ever take a fence down until you know why it was put up.
というものがあります。
沼に人が落ちて死ぬと、再び人が溺れないよう、そこに柵が立てられます。
しかし、時が経ち、沼が干上がって湿原となると、そこは周囲の地面と変わりないように見えるでしょう。
昔そこに沼があったことを知らない人は、柵を無用なものと思い、これを撤去してしまいます。
そこが踏み入れた者を地中へと引きずり込む悪魔の口であることを知らずに。
それまでになかったある手法・方針が導入されるのには、それなりの理由があるものですが、時代や環境が変わると、その理由が忘れ去られたり、見えなくなったりすることがあります。
そのため、新しい世代の人々には、その古い手法・方針が「馬鹿げたもの」としか思えません。
そこで、「無駄なものはなくしてしまおう」という「合理的な」発想のもと、人々はこれを排除しようとするわけですが、その行動が、先ほどの沼のたとえ話のような、予想もしなかった大きなトラブルの引き金となってしまうことが往々にしてあるわけです。
使われてない (ように見える) 変数・関数を削除したら、プログラムが動かなくなった。
知らないサービスがメモリを大量に使っていたのでこれを止めたら、システムが立ち上がらなくなった。
柵を倒したその場で問題が顕在化するものはまだマシでな方で、しばらくしてからトラブルが発生し、調査しようとしたらログが出てなかった (止めたのはログ出力管理のサービスだった) なんてこともあったりなかったり……。
「新しいもの」を作り出すのに必要なのは「勇気」と「発想」だけではありません。
それまでの経緯・歴史を学ぶという先人への「敬意」と、自分が進む道が正しいか、間違っていないかを確かめながら進む「慎重さ」が不可欠なのです。