メンテできないからショベルカーなんていらない、つるはしでいい

以前についったで話した内容なのだけど、「属人性が生じるのが嫌だから高度な技術は用いない」という思想の是非というテーマ。
私は「属人性を排除」するという名目で「属技能性を排除」してはならない、と結論付けた。


以下のエントリを読んでこれを思い起こした。

第五に、抽象化し、共通ルーチン化しすぎたプログラムは、可読性が低くなり、スキルの低いプログラマに引き継ぎをしなければならなくなったときに、途方に暮れてしまうことがある。

中途半端に優秀なプログラマが「正しいプログラミングテクニック」だと妄信しがちな3つポイント - 分裂勘違い君劇場 by ふろむだ

という一文が生理的に受け付けなかったので(うひぃ、ぞわぞわっ、となってしまった)、わざわざ書いてしまう次第。

迷信 - みねこあ

という部分。


例えれば、故障した時に自分でメンテナンスできないのでショベルカーは使いません。つるはしで穴を掘りますというソリューション。
故障した時に自分でメンテナンスできないのでトラックは使いません。大八車で荷物を運びます、というソリューション。


もちろん、日常生活では自動車整備を生業にしているような人はともかく、多くの人は自分でメンテナンス出来ないが自動車を使っている。いざメンテナンスが必要となればお金を払って専門家に見てもらうという選択をする。
なのになぜ、システムについてはメンテナンスできないからという理由で竹やりで戦闘機に戦いを挑みたがるのだろうか?


思うに、近年普及したプログラミングパラダイムの威力と言うものが、どうにも想像しにくいというのが一つの理由に挙げられるのではないだろうか。


ショベルカーで穴を掘る威力は人力に対して圧倒的であることは誰が見ても理解できる。
10tトラックで荷物を運搬する威力は人力に対して圧倒的であることは誰が見ても理解できる。
では、オブジェクト指向プログラミングの威力は理解できるだろうか?


つまるところ、その威力が凄まじければ、運転免許なりを取得してでもそっちを使おうと考えるのだろうけども、OOPとかAOPとかジェネリクスとかってのは威力の凄まじさが分かりにくいので、頑張って使えるようになろうと思わないのではないだろうか。