闘うプログラマー - ビル・ゲイツの野望を担った男達

タイトル闘うプログラマー - ビル・ゲイツの野望を担った男たち
著者G. Pascal Zachary
発売日1994/12/7
出版社日経BP社
ページ数239ページ
評価

概要

原題は「Show Stopper! - The Breakneck Race to Create Windows NT and the Next Generation at Microsoft」

そのまま訳すと「ショーストッパー! Windows NTとMicrosoftの未来を作り上げたデスマーチ」とでもすれば良いだろうか。

Windows NTを作り上げた人々の活躍をドキュメンタリー形式でまとめた書籍だ。プロジェクトXのようなテイストで、積み重なる難題をチームが1つずつ解決していく姿を描いている。

本書で開発されたWindows NT3.1は、その後、NT4、Windows2000とバージョンアップを重ね、長く市場シェアを独占したWindows XPへと進化していくことになる。まさにMicrsoftの未来を作り上げたOSと言える。

巻末の解説で紹介されているが(解説文はMicrosft日本法人の代表取締役も勤めていた成毛眞氏が執筆)、原題のshow stopperという言葉には2つの意味がある。

1つは、演目を中断しなければいけなくなるくらいの拍手喝采が鳴り響くような名演技のこと。もう1つの意味は、プログラムが実行不可能になるような深刻なバグのこと。

本作は後者のshow stopperに悩まされながら品質の向上の為にもがく姿を描きつつ、その奮闘する姿に対して前者のshow stopperという意味を送るダブルミーニングになっている。

プログラミング経験がない人にも伝わるように難しい表現は控えているが、それでいて開発の詳細や裏側が透けて見えるような描写がされているので、プログラマが読んでも楽しめる。

作中で描かれる典型的なデスマーチの姿や、ハンガリアン記法に対する論争などは、多くのプログラマにとって共感が持てるところではないだろうか。

NTが開発されたのは1990年台前半。バージョン管理システムも整っていない、チームのやり取りもメールが中心。今と比べれば集団開発の為のツール手法も整備されていなかった時代だ。しかも言語はC/C++に加えてパフォーマンスの為に一部はアセンブラ。

開発の難易度は非常に高かったであろうことが想像される。

現代はシステム開発の手法も風景も若干変わってきているので、これがソフトウェア開発のスタンダードな姿だと考えてしまうと誤りになる。注意されたし。

Windows NTの開発

Windows NTは、移植可能なOSであること、OS/2やDOSのアプリケーションが動くこと、開発中にWindowsがヒットしたことからそれとも足並みを揃えること、といった相当無理ゲーな要求を抱えて開発される。

当時はスピードを必要とする箇所はアセンブラで記述することが一般的だったが、Intelの決められたアーキテクチャだけでなはく他のCPUでも動作するような移植性を持たせるには、CやC++などの高級言語で書く必要が出てくる。するとどうしてもこれまでのOSよりも速度が遅くなる。

OS/2やDOSなどの別OSの為に書かれたアプリも動かそうとすると、各OS向けのエミュレーターも必要になる。そのアプリがDOSのバッドノウハウを利用したようなものだと、想定通りに動かないことも多々発生する。

他のOSとの互換性をもたせる辛さについては、DOSとOS/2でファイルの最大文字数が違う問題をカバーする為に取った有名な仕様を思い起こすだけでも、十分に伝わってくることと思う。

最終的に、NTで新規作成したファイルには、自動的に二つの名前を付けるようにすることで意見がまとまった。

こんな仕様で開発しろと言われたら、私なら泣くかキレる。

これに加えて一部のどうしても動かない有名アプリを動かす為に、フラグを用意して「このアプリだったらここの挙動はこう変える」みたいなこともやっていたらしい。全米が泣くレベルの辛さである。

当時、この手の大規模システムは開発の途中で頓挫することも珍しくなかった。(今でもしばしばそうしたことは起こっている)

新規性があり難易度も高いWindows NTの開発は、予想通り困難を極めたが、本作の主人公であるデヴィット・カトラーは混乱し切ったプロジェクトの中で、なんとか規律を保とうと、時には怒鳴り散らし、時には壁を殴って穴を空けつつも(非常に短気な人だったらしい)、なんとか完成へと漕ぎ着けることに成功する。

カトラーは前職で独自OSを作成した経験を持つ高名なプログラマで、ビル・ゲイツはカトラーをMicrosoftに招くにあたって高額のストック・オプションを付け、またプロジェクトの管理をほぼ一任して自身は極力関わらないようにするという配慮を見せている。

文中では勤務中にボール遊びを始めたりする自由なMicrosoft社員(マイクロソフティと呼ばれる)と、カトラーが転職した際に引き連れてきた規律の取れた精鋭チームとが対比的に書かれている。

カトラーは当初はできるだけ規律の取れた自身のチームでことを済ませようとするが、大きくなり過ぎたNTの仕様を実現する為にはより多くのチームを編成しなければならなくなる。

人が増えれば管理は行き届かなくなる。コードの質も保てなくなる。それを十分に承知しているカトラーだが、最後には周囲に押されて多数のチームを管理することを受け入れざるを得なくなり、死の行進の中を歩くことになる。

ビル・ゲイツについて

邦題のサブタイトルには名前が入っているビル・ゲイツだが、文中にはそれほど多くは登場しない。もちろん意思決定の際には顔を出すこともあるし、最終決定権を握るMicrosftの帝王として存在感を見せているが、前述の通り、NTの開発についてはカトラーに任せるという態度を決めていた為、開発にはほぼ関わっていない。

登場回数は少ないものの、ゲイツの考え方がMicrosoftの社風と共に紹介される箇所はいくつか見受けられた。

ゲイツは、まともなコードが書けるプログラマーだけが管理者になるべきで、管理者になってからもコードを書きつづけるべきだと考えている。これは、ソフトウェア会社が陥りやすい問題をみごとに解決する方法だ。
マイクロソフトは、十分な研修をしないことで有名だ。「泳げないヤツは沈めばいい」というのが、新人のルールだった。
給与水準は低く(ゲイツも例外ではない)、サービス残業がすさまじいが、ストック・オプションでこれをおぎなう仕組みをとっており、株価の上昇に依存していることになる。

最後の一文を読むと、Microsoftの給料は悪かったのかと驚かれるかもしれないが、当時は株価の上昇が激しく、ストック・オプションで100万ドル以上を得た人間が何人もいた。NTを開発した数年で家の1つや2つは建てられたし、仕事を辞めて悠々自適な生活を送れるくらいの資産を得た人間も多かったようだ。

作中にはMicrosoftの2代目CEOであるスティーブ・バルマーもしばしば登場する。ゲイツとバルマーがどのように関係してMicrosoftという企業を経営していたかが垣間見えるような描写もしばしば見受けられる。三代目CEOのサトヤ・ナデラは登場しない。ナデラは1992年まで今は亡きサン・マイクロシステムズにいたので、NT開発当時はまだ重要なポジションにはついていなかったはずである。

感想

この本はデスマーチの典型とも言える開発現場の状況を描いているが、一般的なデスマーチと違う点は、マネージャーも開発者もこの世界で名前が残るようなレベルの優秀な人材だということだ。

そうした人々にとっても、NTの開発は困難なことであったし、新規機能の開発を止めてバグの数を減らすことに注力して、何ヶ月もデバッグと改修を続けてもなかなか望むレベルの品質まで至らないでいる様は、想像するだけで胃が痛くなる。こんな環境で3年も4年も働いたら、私なら間違いなく胃に穴を空けて入院していたことだろう。(その前に泳げないヤツとして沈んでいたかもしれないが)

そうした、表題どおりのまさに「闘うプログラマー」の姿を読み進めるのは、非常に感慨深いものがあった。

手放しに推薦できる本だと思う。