闘うプログラマー 下巻
2002/10/30 記
「泳げないヤツは、おぼれるしかない」…いやはや、僕も同じ(?)ソフトウェア開発に身をおいているだけあって、当時、彼らの味わっていたであろう日々が、ありありと目の前に浮かんでくるようだ。その中から出てくる言葉――ドッグフード~や、泳げないヤツは~だ――は、実感があるし、そして何より良い言葉だ。泳げないヤツはおぼれるしかないし、泳ぐつもりのないヤツにはいてほしくない。
昔、読んだ「私がマイクロソフトで学んだこと」といい、マイクロソフトの社内事情に付いて書かれている本を読むたびに、この会社で働くのは居心地が良さそうだと感じる。とは言っても、仕事のために、それ以外のすべてを(本当に)犠牲にするというのは、少々病的だ。……って、あんまり彼らのことを言えた義理ではないが。
さらに、印象に残った言葉。「人生最良の時が、終わった」
デーブ・カトラー氏の、プロジェクトの末期の言葉だが、確かにその通りだ。苦しい開発は、進行中ではさっさと終わらせたくてたまらないが、それがいったん終わってしまい、それらを後から思い返すと、「あぁ、楽しかったよな」と思えるときがある。もちろん、それはプロジェクトの内容にもよるんだが、確かにいくつかは「人生最良の時」だったのだ。プロジェクト終了直後の、かすかな喪失感がそれを教えてくれる。
最後に、もう一つ。「プログラムとは、この世で数少ない、完璧を求められる仕事だ」
だから、出荷される/リリースされるバージョンというのは、ほぼ妥協にまみれている。確かに、完璧であることを求められ、完璧でなければならないのだが、ちょっと考えてみればわかることだ。時に1000万行を越える事もある、数々のプログラムのすべてが、限られた期間、予算内で完璧になるわけがない。なんせ、作成しているのは人間なのだから。だから、コンピュータとは、意図したとおりには動かない。指示された通りに動くだけなのだ。
そこで、完璧にどれだけ時間をかけずに近づけることができるか?という命題の元、数々のプログラミング手法が生まれてきた訳だが、未だすべてにおいて完璧であった事はない。何とも気の滅入る話だ。目標を100%達成することのないプロジェクトしかないとは!
しかし、世の中そんなモンだ。完璧なプログラムを書くこと、つまり、プログラム作成の目的は、コンピュータでどのような処理を行わせるかがもっとも重要であり、それが100%完璧である事よりも、いま、その機能が使えることが重要であるのだから。僕らはバギーなWindowsOSの事を全く笑えもしない。
けれども、いつかは手に入れなければならない。完璧なプログラムを。完璧なデザインを。そのために日々努力すること、そして結果を出すことが、プログラムという行為の本質であるとは言えないだろうか? 或いは、そんなことは夢物語でしかないのだろうか?