2010.03.16
プログラマというのは物書きである
When you were young - 何かが見えなくなっている日本 ― Google村上憲郎氏講演で思ったこと
http://hiroshimo.wordpress.com/2010/03/14/murakami_hirakata/

Google名誉会長・村上憲郎氏の講演について書かれている。その中にある、質疑応答での村上氏の回答がいい。

<Googleという会社は日本の会社とどう違うのか、という非常に根本に迫った質問があり、それに対して村上氏は「日本ではプログラマからSE、主技、部長というようなキャリアステップがあるが、USではプログラマはずっとプログラマだ」ということをおっしゃっていました。プログラマというのは物書きなんだから、ということです。つまり著述業であるということです。松本清張がずっと松本清張であるようなものだと>。

<日本で役職があがるというと、それまで出来ていたことが出来なくなったからマネジャーをやりなさいということが多いとも仰っており、その点も非常に面白く感じたところです。確かに出世していくというのはどんどん現場から離れるという一面があります。私自身はプログラマという職業ではありませんが、コーディングばかりしているのでプログラムを書くことがものを書くことと同じという言葉に共感するところがありました。なるほど、こうしてブログを書くのもよくよく考えればプログラミングの延長のようなところはあります>。

これはもう、完全に同感。

ソフトウェアを作ることは、一種の「製造業」ではあるのだが、その製造の質はまさに「ソフト」であり、「書く」ことに近い。

つまり、プログラマは「エンジニア」ではあるのだが、そこで求められるスキルは、かなり「著述業」「ライター」に近いのだ。

この話は、私は何度か書いている。

ITエンジニアにコンピュータ・サイエンスは必須か
http://mojix.org/2008/12/29/it_engineer_cs

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

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

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

竹内郁雄「良いプログラムを書く力と、良い文章を書く力の共通の根源には言葉力がある」
http://mojix.org/2009/03/22/takeuchi_kotobaryoku

<建物を造るのも、車を造るのも、ソフトウェアを作るのも、何かを「つくる」ことにおいては共通している。しかし、ソフトウェアは、ほかのものと違い、工業的生産物としては、言葉との関連が強い>(竹内郁雄氏の言葉)。

このような認識から、プログラマという職業の勤務形態に関して、次のような意見を書いた。

プログラマに正社員的な「勤務」はフィットしない
http://mojix.org/2010/02/02/programmer_kinmu

<「日々の学習や訓練と仕事が切り離せない」というのがこの話の要点のひとつだが、これはプログラマに限らず、デザイナーや建築家、文筆業、料理人、役者など、「プロフェッショナル」と呼ばれる専門的な職業のほとんどにあてはまるだろう>。

<特にプログラミングは、優秀な人ほど仕事が早く、優秀な人のほうが「成果物が小さい」(プログラムの行数が短い)という世界だ。よって、働いた時間の長さや作業量で評価するという基準が無意味なばかりでなく、むしろ品質に反することが少なくない。マジメに勤務して、たくさんコードを書いているように見えても、そのソフトウェアの品質が高いとは限らない>。

<プログラマという職業が「ふつう」の人には厳しい、プログラマという職業自体が「病んでいる」というふうに見えるとすれば、それはプログラマという職業自体の問題というよりもむしろ、プログラマという仕事の本来的な性質が、現状の「正社員的な勤務形態や評価基準」にはフィットしない、と言ったほうが近いだろう。プログラマを能力や成果でなく「勤務」で計るような雇用形態や評価基準がおかしいのだ>。

私はこのように考えているので、冒頭のエントリで村上憲郎氏の言っていることは、ごくあたりまえのこととして理解できる。

私はもともとライティングの世界から入って、いまは主にプログラミングの世界にいる。いずれも、「言語を使って、意図を実現するものをできるだけエレガントに設計し、機能するものを組み立てる」という行為なので、そのスキルの質はかなり似ている。ライティングは自然言語を使って人間に向けて書き、プログラミングは人工言語を使ってコンピュータと人間の両方に向けて書く、というのが両者の違いである。

ライティングもプログラミングも、すべてのクリエイティブなものと同じく、「いいものをマネする」のが上達のコツであり、毎日実践していないと腕がにぶる。「好きな奴が勝つ」世界であり、サラリーマン的な意識ではとてもやっていけない。


関連エントリ:
竹内郁雄「良いプログラムを書く力と、良い文章を書く力の共通の根源には言葉力がある」
http://mojix.org/2009/03/22/takeuchi_kotobaryoku
ITエンジニアにコンピュータ・サイエンスは必須か
http://mojix.org/2008/12/29/it_engineer_cs