代替不可能なプログラマとは。

果たしてプログラマという職業はクリエイティブな職業だろうか。

そもそも、クリエイティブとはどういうことだろうか。以前の投稿にもあるように、私は「センス」なるものは一切信用していない。クリエイティブとて同じことで、検証不可能な「センス」によって計られるべきではない。おそらく、クリエイティブとは「代替不可能な価値をもたらす、実証可能な能力そのもの」だ。私なりのクリエイティブを定義したところで、改めて問うてみる。

果たしてプログラマという職業はクリエイティブな職業だろうか。

残念ながらほとんどの場合はそうではない。世の中にある大半のコードは代替可能な能力によって生産されている。ほぼ全ての実現したいことに関する情報は、インターネットのどこかに存在する。私が日々の仕事で行っていることも、もちろんそうだ。また、これは非常に大事なことだが、目新しいことができるかどうかでプログラマの能力を計るべきでもない。誰もやりたがらないことを確実に行うプログラマの価値は非常に高い。一般的なプロダクトの完成に寄与する割合で言えば、目新しさは1割ぐらいで、残りの9割は能力的には誰でも出来る作業だろう。だから、デヴィッド・カトラーは優秀なのである。

カトラーは、プログラマーがいつも新しいコードだけを書きたがり、ミスは忘れたいと考えているとみると、うるさく小言を言った。(G・パスカル・ザカリー著『闘うプログラマ』より)

こうした理由から、代替可能な作業の精度を挙げて、その精度が代替不可能になることを目指すという手段で代替不可能になることも考えられる。だが、頭では分かっていても、どうしても「他の人には分からないことができること」のほうが精神衛生上好ましいと考えてしまう。では、そういう「誰にも分からないこと」が私にできる可能性があるだろうか。はっきりいって今のところその可能性は絶望的に低い。そもそも、調べても誰も言及していないようなことを実現したことがあるというような幸運な人自体滅多にいないだろう。やはり、「未踏の地に辿り着く」というのはあまりに高望みしすぎなのだろうか。

鈴木慶一率いるムーンライダーズの曲「マニアの受難」の歌詞にはこんな一節がある。

全ての事はもう一度行われている。全ての土地はもう人が辿り着いている。

全くその通りだ。これだけ過去のアーカイブ化が進んでいる時代で、過去に前例のないことをやるのは相当困難である。この歌詞には、過去に飲み込まれてしまう人間の虚しさが端的に言い表されている。「誰も成し遂げたことのないことをやりたい」というのも「誰も成し遂げたことのないことをやっている」というのも、どちらも空虚に聞こえる。まわりが、そして過去が見えていない人間の言葉に聞こえる。

だが、幸いにも技術の世界は現在が過去を超えていることを実感できる世界だ。だから、どこかで誰かが未踏の地を踏んでいる。もし、単なる希望で、恥を承知でものを言っていいならば、やっぱり私も未踏の地を踏んでみたい。

さて、ここまでは完全に理想の話だ。何事も極端には解決はなく、良い頃合いというのがある。例えば、今回だと「未踏の地を踏みたい」というところから「踏める人がかなり限られている土地を踏みたい」に変えてみると少し現実的になるだろう。とはいえ、これでも相当な高望みかもしれない。私は完全に独学のプログラマで、さらに経験も2年に満たない。文系の学部卒で、それも美学とかいうプログラミングには直接結びつかない学問を専攻していた(当然ながら間接的な関係性はある。美学や哲学に興味がなければ、『ゲーデル・エッシャー・バッハ(GEB)』を読むこともなく、またそれを読んでいなければプログラマにもなっていないだろう)。そんな人間がいきなり大それたことができるわけがない。だが、問題なのは大それたことをやるにはどんなスキルがいるかも分からないということなのだ。それを紐解くには、まず自分にとって「大それたこと」・「代替不可能なこと」を定義しなければならない。ざっと思いつくのは以下の様なものだ。

  1. 新しいハードウェアの開発に関わることができる。
  2. 新しいプログラミング言語やコンパイラを開発できる。
  3. 新しいアルゴリズムを発案できる(画像処理など)。
  4. 海外にいっても通用する。

こうして見ると、私の「未踏観」はどうやら低レイヤや数学の理解にあるような気がする(4は少し毛色が違って、人脈とか語学能力も関わってくるが、それもベースとなる技術力があってのことだ)。だが、残念ながらこれらはどうもアカデミックな素養が必須なように見える。一方で、私はプログラミングというジャンルにおいて、アカデミックからは最も縁遠いところにいる人間だ。ここで選択を迫られる。それは

「今からでは遅く、時間を無駄にしないために方向転換する」と「遅くても遅すぎることはないからひたすらに努力する」

の選択だ。何度も前者を選びそうになったが、じゃあプログラム以外に何か私自身に大きなアドバンテージがある分野があるのか、といえばそんなことはなく、腹を括って後者を選ぶしか無い。惰性で生きることを選択しない限り、「やる気ある凡人」というのは得てしてこの選択を迫らているのではないかと思う(ちなみに、凡人でない人というのは、例えば「3歳からバイオリンを始め、若くして国際コンクールで輝かしい成績をおさめ、超有名芸大を卒業し、今では世界的バイオリニストです」みたいな人をさす。こういう人は、私のような凡人からすると、能力と目標が一致していて、とても幸せに見えるのだが、どうなのだろうか。一度でいいからそういう人の意見を直接聞いてみたい)。

前置きが長くなったが、後者を選んだ結果、「アカデミックなコンピュータの基礎の理解」に時間を充てることにした。そして、その達成のための手段として、高名な「コンピュータの構成と設計(通称パタヘネ)」と「計算機プログラムの構造と解釈(通称SICP)」を読むことにした。きっとこれを読んだからといって、いきなり「準未踏の地を踏む」という目標が達成できるわけではないだろうし、むしろ独学者特有のエスタブリッシュメントに対するコンプレックス丸出しの解決策に過ぎないような気もする。だが、「凡庸なプログラマであることを悩んでいる人間」より「凡庸なことに悩んだ結果、アカデミックな本を読んでコンプレックスを少し解消した人間」のほうがまだ数が少なく、それゆえに一歩「代替不可能」に接近していると言えるはずだ。

結論:「パタヘネ」と「SICP」を1年内に完読することにした。