はじめに
エンジニアリングは簡単だ。人間は難しい。
−Bill Coughran
人生は予測できない展開に満ちあふれている。ぼくたちは2人ともソフトウェアエンジニアリングに関する本を書くとは思っていなかった。
ほとんどのコンピュータギークがそうだと思うけど、ぼくたちも大学を卒業したあとに趣味(コンピュータで遊ぶこと)で生計を立てられることがわかった。同世代のハッカーと同じように、1990年代は余ったパーツでPCを作ったり、何枚ものフロッピーディスクを使ってリリース前のLinuxをインストールしたり、Unixマシンの管理方法を学んだりした。最初はシスアドとして働いた。それからドットコムバブルの兆しがあるときに小さな会社でプログラマになった。バブルがはじけたあとは、シリコンバレーの企業(Apple社など)を渡り歩き、スタートアップ(CollabNet社)でオープンソースのバージョン管理アプリケーションの設計・実装をすることになった。そのアプリケーションがSubversionだ。
2000年から2005年の間に予測できないことが起きた。その頃もSubversionを作り続けていたが、仕事の責任がゆっくりと変化してきたのである。1日中コードを書くのではなく、オープンソースプロジェクトをリードするようになっていた。つまり、ボランティアの十数人のプログラマと一緒にチャットルームで過ごし、彼らが何をしているかに気を配ることになったのである。新機能については、メーリングリストで調整した。そのなかで気づいたのは、優れたコードを書くだけではプロジェクトは成功しないということだ。最終目標に向かってみんなが協力することが重要なのである。
2005年からGoogleのシカゴエンジニアリングオフィスでプログラマとして働くようになった。このときはすでにオープンソースの世界にどっぷり浸かっていた。Subversionだけでなく、Apacheソフトウェア財団(ASF)にも参加するようになった。SubversionをGoogleのBigTableのインフラに移植して、オープンソースプロジェクトのホスティングサービス(SourceForgeみたいなもの)をGoogle ...