ソフトウエア業界の「バカ世界地図」

mixi発で、「Perl VS Java」というテーマが盛り上がっている。「ソフトウエア業界の中で、ある種のスキルが正当に評価されてないのでは?」という疑問に、「そうだそうだ、おかしいぞ」と同調する声が高まり、「いや、それには正当な理由がある」という反対意見が出て議論になっているようだ。

錯綜する議論の中にいろいろタメになる見解を見ることができて、業界人の端くれとしていろいろ勉強させていただいたが、ちょっと違う視点から(だってそれしか売り物がない)ブログのネタとして業界の外へ発信してみたいと思う。

まず、最初に関連するリンクをならべておく(ちょっとそれ系の用語が多いので業界外の人はパスした方がいいかも)と、mixi内のものとして、

mixi外のものとしては、

私が過去に関連するテーマについて書いたものとしては

この中で、一番ポイントを押さえていてよくまとまっていると思うのは、Walrusさんの「なぜ「業務にPerlは使えない」のか? 」という記事である。Walrusさんは、「Webサービス開発案件」と「システム・インテグレーション(SI)案件」という違う種類の仕事がソフトウエア開発には存在していて、それぞれに必要とされる要件が違うから、スキルの評価は多元的になるというのが当然であるとおっしゃっている。

otsuneさんの「一次元の上下関係で優越感ゲーム」というのは、このことを裏から指摘されているし、私の「コンピュータの4つの文化」は、分類の枠組みが多少違うけど、趣旨は同じだ。

それで、面白いのは、この当然と思われる結論が出るまでにさまざまな意見が出て熱い議論になっていることである。あるいは、単に私がWalrusさんの記事を「決定版」と思っているだけで、議論はまだ続くかもしれない。

こういう状態になるのは、ソフトウエア業界の「全体像」や「地図」のようなものが、共有されていないからだと思う。

つまり、Perl屋さんはWEBが「世界」だと思っていて、PHPRubyは視野に入っているが、SIerの世界が見えてない。Java屋さんは、SIの案件が標準的な案件と思っていて、WEBは例外だと考える。つまり、お互いが自分独自のバカ世界地図を見ながら、話をしている状況なのである。そのくせ、「ノルウェー」とか「ブラジル」とか表面的に共通する語彙はたくさんあるから、よけい話が混乱する。

複数の文化があることが問題なのではなくて、それらを包含する合意された枠組みが存在しないことが問題なのである。自分と遠い仕事をしている人を認識できないのでなく、複数の遠い仕事と自分の相対的な距離を把握できないことが問題なのである。

バカ世界地図」には、アフリカ大陸の南端に「南アメリカ」という国がある。「南アメリカ」は国ではなくて、大陸の名前なのだが、単に場所が違うという問題でなく、そういう概念レベルの混乱がこの地図にはたくさんある。JavaPerlプログラミング言語の名前であると同時に、ある種の開発スタイルや開発する案件の種類を暗黙に代表していて、なかなか多面的な意味を持つ言葉である。


「うちは Javaで飯食ってるので、(Perlのような)そういう低レベルな言語を得意げに話されても困ります」

発端となった人が面接でこう言われたそうだが、この発言の、「Java」は広い概念、「Perl」は狭い概念で使用されている。この発言自体がカテゴリーエラーなので、言語としてのJavaPerlを比較しても議論にはならない。Perlの人とJavaの人が議論すると、これと同じような概念の錯綜があって、なかなか収束しないのだと思う。

おそらく、私がWalrusさんのエントリーに説得力を感じるのは、ほとんど同じ「バカ世界地図」を共有しているからで、それが標準の「世界地図」であるという保証はない。違う「バカ世界地図」を持っている人に、自分の方が正しい地図だと言うことは難しいような気がする。

実際、Walrusさんの日記へのコメントには次のような発言がある。


去年一瞬だけERP屋さんとお仕事したことあったんですが、そのときはいわゆるSAP屋さんはJavaは相手にしてない雰囲気でしたよ。キャッチーなだけで使い物にならん、みたいな。元スレ(?)でのPerlと同じ扱い。

このSAP屋さんの「バカ世界地図」では、JavaPerlが隣接している。

こういうことは、私がこの業界で20年間仕事をしてきて、いろいろな形でずっと感じていることなので、単に業界が未成熟とか発展途上ということではなくて、おそらく何か本質的な理由があるのだと私は考えているが、それが何かはわからない。