エヌ氏の成長・円錐

小胞輸送研究をはじめて18年めの分子神経科学者の日々雑感

プログラマーのジレンマ

昨日はヴィラデストのワイン(白・2013年)を開けて家族で味わう。後口の良さが独特。


スコット・ローゼンバーグの「プログラマーのジレンマ」を読む。

プログラマーのジレンマ 夢と現実の狭間

プログラマーのジレンマ 夢と現実の狭間

前書きにこうある。
「なぜ良いソフトウェアを作ることがこれほど難しいのか。コンピュータ時代に入ってから50年たった21世紀初頭の現在でも、この問いに完璧に答えられる人はいないだろう。そこで、あるソフトウェアの開発物語を、実地調査に基づいて書いてみることにした」

そのソフトウェアは「チャンドラー」というカレンダーソフトで現在はVer. 1.0が出ているようだ。
http://chandlerproject.org/
Netscape創業時メンバーのアレックス・トーテックが立ち上げて、オープンソースOutlookを目指しているらしい。
この本に書かれているのは2001年の開発開始から、2005年にチャンドラー 0.5が出るまでの5年間になる。

いくつか章題を拾うと感じがわかるだろう。
第3章  プロトタイプとパイソン
第5章  犬とギークの扱い方
第10章 エンジニアとアーティスト


共同作業として商用プログラムを作るというのがどういうことか全くわかっていなかったが
この本でぼんやりと見えてきたというのが一番の感想だろうか。

異分野の共同研究をするときに、それぞれの分野で使われている言葉(言葉はフレームワークや問題意識を反映するので、このすり合わせはcriticalに大事である)をお互いに理解できるようになるまでに当たり前のように2年くらいかかるが、プログラミングという同じ畑でも、「すり合わせ」がこれほどの大事だというのはやはり最後はマシンに仕事をさせるという部分の特殊性なのだろうか。
それに加えて、商用プログラムの開発手法が驚くほどいい加減(より正確には組織や計画というものを好きなプログラマーがほとんどいないので結果的にそうなるだけで、すべてのプログラマーとそのマネジャーのための報告書は山ほど存在するのだが)であること、ソフトウェアの多様性のために大きくて再利用可能なソフトウェアコンポーネントが整備されていないことが問題をひどく厄介なものにしているらしい。


「『これがプログラマーの仕事だ』。のちのマイクロソフトインターネットエクスプローラとなるウェブブラウザの開発を率いたプログラマー、エリック・シンクはこう書いている。「われわれは無数の抽象化を構築する。自分たちの抽象化を設計して、それをほかの誰かから手に入れた層の上に重ねるのだ」。そして年々山は高く積もっていく」

「私にとって「斧を研ぐ」ことの大きな問題は、それがゼノンのパラドックスか何かのように回帰的であることだ。最初の2/3の時間は、道具作りの作業を完遂するために割り当てる。ところが、道具作りの作業自体にも道具は必要だ。斧を研ぐには砥石が必要である。そこで、斧を研ぐ時間の2/3は、良い砥石を探すことに費やす必要がある。そのためには、砥石に最適の石を算出するといわれるバフィン島の北岸へ行く必要がある。ところが、そこへ行くには犬ぞりを作る必要があり、。。。
 ゼノンのパラドックスが解決されるのは、それは無限の和ではあるが、指数関数的に減少していく値の無限の和だからである。実際には、そううまくはいかない。道具作りの作業ははてしなく膨らんでいき、最初に何をしていたのか、あっという間にわからなくなってしまう」


大変楽しんで読んだし参考になる部分も多かったのだが、現代社会が根本的に依存しているソフトウェアの開発の舞台裏がこういうものだというのは本当のところかなり怖い話だ。