2006年02月27日
Joel Spolsky『Joel on Software』(オーム社)
刊行時に担当編集者より献本いただいたものだが、思ったより読むのに時間がかかり感想を書くのが遅れてしまった。
本書の帯には、「ソフトウェアプロジェクトのマネジメントというのは、プログラミングとはまったく関係がない。」という文章が引用されている。結論を先に書けば、本書はプログラマからマネージャにいたるまでソフトウェア開発に関わるあらゆる人たちにとって有益な内容を多く含む書籍である。値段は張るが、それだけの価値はある。公平のため、本書の元となった Joel on Software(とその日本語版)もリンクしておくので、そちらを見てから判断してもよいだろう。
献本いただいたから誉めるわけではないが、本書は編集が丁寧になされている印象がある。これは『ハッカーと画家』のときも思ったことで、つまりはそれがオーム社の編集者の質なのだろう。
本書はカバーを見れば分かる通り、最初からクラシックを志向している(正確に書けば、原書から踏襲されている。こういうところはもっと他の出版社も見習うべきだ)。本書に対する感想で、章により質にバラつきがあるというものがあって気になったが、著者の意識的なくどくどしいユーモアがうんざりくるところがあるのと個人的な好みを除けば、それほど気にならなかった(とは言っても付録は余計だと思う)。本書の第3部のタイトルを借りれば、「それほどランダムでもない、トピックに関するランダムな考察」といったところか。
個人的に本書を読んで最も興味深かったのは、第5〜8章に書かれる機能仕様書作成のすすめである。ドキュメンテーションがソフトウェア開発者にとって悩みの種であるのは昔から変わらないことで、最近ではそれを過度に強制するのは遅れているとする人たちも多いが、著者は敢えてその重要性を説く。この部分はこれからソフトウェア開発者になる人たちにとって特に有益だと思う。ワタシにしても「生きているドキュメント」の重要性はわかっているので、テンプレートを示してくれればなと思いつつ唸りながら読んで、最後に「テンプレートは有害である」とズバリ指摘されてひっくり返ってしまった。ただなぁ、話を具体的にというのは分かるのだけど、著者にしてもマイクロソフトで本当にユーモアの入った仕様書を書いていたのかな?
あともう一つ唸ってしまったのは、ジョエルテストにおける「プログラマは静かな環境で作業している?」の項目。もちろんワタシも「ゾーン」の重要性は理解しているが、一方でワタシは同僚と会話のピンポンをしながら仕様の確認とプログラミングの方針を決めることが多いんだよなぁ。あれは同僚の時間を奪っているんだよねぇ……でも、オラのやり方は変えないがな!(ダメじゃん)
以前から思うことに、優れた人というのは本質を説きながら、論理的同型性を見抜く目でスマートにそれを現在の問題にあてはめてくれる。本書においても、「漏れのある抽象化の法則(第26章)」や「スマートな企業は彼らの製品の補完財をコモディティー化しようとする(第40章)」、そして「報奨(あるいは賄賂)は職場では機能しない(第21章)」といった本質を突いた考察があり、特に「漏れのある抽象化の法則」の話は以前からもやもや考えていたことだったのでありがたかった。おっと、付け加えておくと、上三つのうち最後のは著者の言葉ではないし、著者が書く「チーム殺しを避ける唯一の方法は、チームの全員に褒めちぎりの評価を与えることだ」という場合の「チーム」は、ゲリラ的雇用面接をくぐりぬけた人間から構成されるという前提があるのかもしれないが(それでも最近の成果主義を巡る議論を考えると示唆的だろう)。
さてこのように本書は優れた本なわけだが、個人的に気になるのは著者の会社である Fog Creek Software の今後である。本書でもアプリケーション開発の主戦場がウェブに移りつつあることを著者は渋々認めているが(第42章)、一方で第14章に登場する「アーキテクチャ宇宙飛行士」という言葉を最近の Web 2.0 への熱狂に当てはめ、「私は、人々がWeb 2.0という語を使うのを聞くと、その日一日、自分が少し愚かになった感じがする」と批判している。著者はこれから新たな主戦場にどのようなスタンスで対していくのだろうか。