ペアプログラミングの効用

CNET Japan Blog「近藤淳也の新ネットコミュニティ論: 開発者が楽しく仕事できる環境とは」
http://blog.japan.cnet.com/kondo/archives/002275.html
で、ペアプログラミングの話が出てくる。

まずはペアプログラミング。これは、2人1組になってプログラムの開発を行うスタイルで、XP(エクストリームプログラミング)のプラクティスの一つとしても提唱されているものです。
2人でプログラムを開発するというのは、1人がプログラムを書き、もう一人が横からそれを見ている、という方法です。この方法を聞くと、1人がそれぞれの作業を行うよりも作業量が2分の1になってしまいそうな気がするものですが、実際はそれぞれが別々の作業をするよりも効率が上がる、という興味深い逆説的な現象が発生します。(略)
なぜ2人1組でプログラミングをする方が1人ずつでやるよりも効率が上がるのでしょうか。それにはいくつか秘密があって、大まかに言うと、

  • ペアで作業を行うため仕事以外の事は一切できない(一人で作業しているとついついメールをチェックしたりウェブを見たりしてしまいます)
  • 「これはあとからちゃんと作るから今は適当に作っておこう」という「とりあえず」なプログラムができにくく、プログラムの品質が上がる(「とりあえず」を放っておくとどんどんバグができてしまい、最終的な効率を大きく下げてしまいます)
  • 作業者間のノウハウが共有され、スキル向上につながる(特に新人教育時には有効です)

といった効果があるように思います。

特にこの「ペアで作業を行うため仕事以外の事は一切できない」という「ペアプログラミングの効用」に対する反応がなかなか面白かった。
「「ふっかつのじゅもんがちがいます。」 - ペアプロと上司でないマネージャはすっぱいブドウ」
http://d.hatena.ne.jp/ajiyoshi/20050806/p1
では、「Joel on Software」の「射撃しつつ前進」
http://japanese.joelonsoftware.com/Articles/FireAndMotion.html
の一部を引用しながら、

優秀なプログラマならば誰だってペアプロが効率的であることが直感的に分かるはずだ。僕の知る限り優秀なプログラマは大抵就業時間の30%くらいしか労働しない。残り70%を使えるのは北斗神拳の伝承者くらいのものだ。(30%は言い過ぎかもしれない。こんなに働ける人は稀だ!)(略)
ペアプロで作業することを(技術者出身でない)CEOに納得させることは不可能に近いくらい困難であることが分かる。そのためには、自分が70%遊んでいることを自供するか、さもなければ相当トリッキーな手段を使うかしなければならないからだ。

と書いている。最高に面白い。リンク先も含め是非まとめて読んでみてください。
プログラミングではないけれど、昔々、大手コンサルティング会社に勤め始めた頃、報告書というのは、まさにプロジェクトの終了間際に、このペアプログラミングみたいにして書かれていた。皆普段からこのくらいちゃんと仕事していれば、プロジェクトなんて10分の1の工数と3分の1の期間で終わるよな、といつも心の中で思っていた。
原稿を書く仕事も全くそうだ。
集中すれば2-3時間で終わるものを、ぐずぐずしていてなかなか取り掛からず、結局は締め切りの前日になって書くのが常。「そうやってぐずぐずしている間に構想が煮詰まっていったのだ」とか、まあ一応自分を納得させるわけではあるが、締め切りが仮に一週間早くても、結局は同じクオリティのものが書けたはずなのである。
ジョエルの一言

たぶんこれが生産性の鍵なのだ: ただ始めること。

は、全くその通りなのだ。常に自分を追い込んでいければ、より多くの仕事ができる。
でもこの「ぐずぐずして何もしないでいられる時間」こそが最も幸福な時間でもあるんだよなぁ。ここが人生の難しいところである。