エンジニア宗教戦争の本質

※書いたあとに思ったんですが、エンジニアというよりプログラマと書いた方が良かった気がします。全部直すの面倒くさいのでココに書きます

内容

ふとエンジニアがエディタとか言語とか、なんならタブスペースとかの「宗教戦争」に思わず熱くなってしまう理由に納得のいく説明ができるのでは、と思ったので書き始めたものです。宗教戦争に合理的な理由があるのでは、という仮説ですね。

独りプロジェクト

ぼくが所属している組織のうちの1つは比較的小さい会社ながら、若干マイクロサービス的な思想もあり、沢山のプロジェクトを開発保守管理しています。なので1人でガッと作って機能追加も1人でやるぜ、みたいなプロジェクトがちょいちょいあったりします。

ぼくも2つぐらい抱えているのですが、自分独りプロジェクト、すごい気持ちがいいんですよね。具体的に言うと機能追加も猛烈な勢いでできて、複数人で開発してるプロジェクトより生産効率めちゃくちゃいいんですよ。

勿論俗人化という致命的な欠点があり、仕事のプロジェクトでそんな状態をずっと放置しておくわけにもいかないので、一時的な生産性低下を覚悟の上で引き継いだり複数人プロジェクトに移行するわけですが。

ただこの生産性向上を複数人で擬似的に発生させる方法があります。宗教です。

宗教

複数人の開発でも独りプロジェクトと同じ効果を発揮させるには、キツいルールで縛り、そのルールの信奉者でグループを作るという方法が1つ思い付きます。つまりこのルールを体系化したものが、このblogで言う「宗教」の定義とします。

ぼくがWebエンジニアなので、大分Webに偏った話として、以下のようなものが思い付きます。

これ、なんか言語やWebFrameworkと密接に結び付いてる気がしませんか。こうやって言語やWebFrameworkの宗教戦争が起こるのだ、ということに説明できる気がしませんか。

宗教戦争のカラク

つまりこういうことです。同じ宗教の人間で開発プロジェクトを固めると大変開発効率が良くなります。しかし、多くの場合宗教には別の宗教に比べて際だって強い点はありません。どの宗教もなんやかんや言って開発できるので一定の勢力を保っていると思われます。(分野の違いによって強さが変わるとかもあると思います)自分の宗派が強くなればそれだけ自分の転職可能性も上がりますし、自分の開発効率が相対的に上がるとも言えます。

特に言語は開発スタイルを伴っていることが多く、宗教戦争の火種になりやすいと言えます。エディタも最近は半ば冗談で語られることが多いですが、エディタを制限する職場もちょいちょいあると聞くので馬鹿にはできないと思います。そもIDEと非IDEで効率的なコードは若干異なるという話もあります。あとC++のようにコミュニティが大きく、言語があまり開発スタイルを強制しないために差がでかいところだと、エディタという宗教の流派みたいなので差が付くという話もあるかもしれません。

宗教という言葉について

エンジニアの宗教戦争に合理的な理由が付与されてしまった以上、宗教という言葉は相応しくないのでは、という言説もあると思うので補足ですが、宗教が合理的でないという発想が間違っているという主張はしたいと思います。宗教は一見非合理性の塊とも言えますが、歴史的な研究からは宗教が果たした重要な役割について、所謂理系人間は軽視し過ぎていると考えています。Civilizationというゲームでは、宗教から多くの場合、都市の幸福度にプラス補正が入ったりと様々な役割を与えられています。(勿論負の側面もありますが)まさにエンジニアのそれを「宗教」と呼ぶのが相応しいと思いませんか?