2008.12.29
ITエンジニアにコンピュータ・サイエンスは必須か
一昨日のエントリ「ITは「理系」なのか?」を補足したい。

私がここで主に想定し、前提にしていた「ITのスキル」は、SEやプロジェクト・マネージャーのように対人スキルを要求される職務ではなく、純粋に「プログラミング」や「設計」のスキルだった。

このエントリのはてなブックマークを見ると、この部分について私の書き方があいまいだったために、私の意図と違うように受け取られているものがあると感じた。これは私の書き方が言葉足らずだったことを認める。

ここで、「コンピュータ・サイエンスをきちんと学んでいないとダメだ」といった趣旨の意見があった。これこそ、「ITは「理系」なのか?」で私が主題にしたかったポイントであり、まさにこのような考えかたに対して、私はちょっと違う気がする、ということが言いたかったのだ。

コンピュータ・サイエンスの知識は、もちろんあったほうがいい。しかし、ないとダメということもないと思う。

その理由は、プログラミングや設計の能力は、コンピュータ・サイエンス的な「科学の能力」というよりも、むしろ文章を書くような言語運用力、つまり「文芸の能力」に似ていると思うからだ。

Peter Novig 「プログラミングを独習するには10年かかる」 (2001)
http://mojix.org/2005/12/27/113250

この中に引いた、

<コンピュータ・サイエンスの教育で誰かをプロのプログラマーにしようとするのは、ブラシや絵の具について学ばせてプロの画家にするのと同じくらい難しい>

というエリック・レイモンドの言葉に、私は共感する。

コンピュータ・サイエンスは、コンピュータやプログラムを可能にする仕組みの知識であって、「プログラミングのスキル」というものは、それとは違うものだと思う。

それは理詰めでは到達できない、一種の「アート」であって、論理的な思考力以上に「美的感覚」を要求される、職人芸だと思う。

日本のIT業界がダメなのは、コンピュータ・サイエンスのような専門教育をきちんと受けていない人材があふれているからだ、という見方がある。私はこれにも一理あると思うのだが、むしろそれ以上に、ITスキルとは「文芸の能力」であり、理詰めでは到達できないアーティスティックな能力だからこそ、これを学べばできるようになるという「教育」「養成」が難しい、という側面のほうが大きいように思う。つまり、ある程度「センス」「才能」「適性」といったものがやはりモノをいう世界であり、それによって大きな差がつく世界なのだ。日本のIT業界の悲劇は、こういった「スキルの性質」が理解されておらず、単に人員をたくさん投入して「労働を集約」すれば早く進む、といった考え方から生まれているのではないだろうか。

ITの世界で有名な人には、「科学者」というよりも「文章家」のイメージに近い人がけっこういる。上記のエリック・レイモンドもそうだし、TeXの作者であり、まさに「文芸的プログラミング」というコンセプトの提唱者でもあるドナルド・クヌース、『一般システム思考入門』など多くの著作で知られるジェラルド・ワインバーグPerlの作者ラリー・ウォールWikiの生みの親ウォード・カニンガムリファクタリングなどで著名なマーチン・ファウラーXPの創始者ケント・ベック、いまではエッセイストVCとしての顔が有名なポール・グレアム、といった人たちがいい例だ。こういう人たちを思い浮かべると、いいプログラムを書く能力というものは、科学者のような能力というよりも、いい文章を書く能力に近い、という思いが強まるのだ。