ペアプログラミングに関する誤解

2006年10月31日

ペアプログラミングに関する一般的な誤解の数々。

アジャイルプロセスを実施しているなら、ペアプログラミングを行う必要がある。

これは全くの誤りです。「アジャイル」は、特にアジャイルソフトウェア開発宣言で定義されている価値観と原則の観点でのみ定義される、非常に広範な用語です。この宣言ではペアプログラミングについて言及されておらず、ほとんどのアジャイル手法では、そのアプローチの一部としてペアプログラミングを取り入れていません。

ペアプログラミングはXPの実践であるため、アジャイルコミュニティで大きな影響力を持っています。その結果、アジャイルな実践として言及されることがよくあります。つまり、アジャイルプロジェクトの人々によって一般的に使用される実践という意味です。しかし、それは観察であり、処方箋ではありません。

エクストリームプログラミングではペアプログラミングが強制される

これはもっとニュアンスのある問題です。ペアプログラミングはXPの実践の一つであり、その発足当初からそうでした。ここでのニュアンスは、XPを実践していると主張するチームにとって、XPの実践が必須かどうかということです。これは、一見するとよりもはるかに難しい問題です。XPは、他のアジャイル手法と同様に、チームが独自のプロセスを選択することを期待しています。『エクストリームプログラミング解説』の中で、ケントは実践を「XPチームが日常的に行っているようなこと」と述べています。私は、ペアプログラミングはXPチームにとって通常のことだと考えます。ペアプログラミングを行っていないチームが、それゆえにXPチームと名乗ることができないとは言えません。また、私が知っているほとんどのXP実践者にとって、チームがXPであるかどうかという問題は興味がないことを指摘しておく必要があります。本当の問題は、チームが効果的かどうかということです。

ペアプログラミングを強制するとすれば、XPをどのように実践するかを学びたいのであれば、ペアプログラミングを試してみて、それが自分に合うかどうかを確認すべきだと言うでしょう。

ペアリングを試す必要はない。なぜなら、それが好きにならないとわかっているから。

この発言の問題点は、多くの人がペアプログラミングに驚いているということです。彼らはそれを嫌うだろうと予想して試してみましたが、実際にはとても気に入ったのです。

さらに、多くの人がペアリングをうまく試せていないため、誤った印象を与えてしまっていることが問題を複雑にしています。隅のキューブで誰かの肩越しに受動的に何時間も眺めているのはペアプログラミングではありません。あなたが本物を評価していることを確認できるように、実際に指導方法を知っている人にコーチしてもらうようにしてください。

ペアプログラミングは開発者の生産性を半分にする。

この問いに対する私の軽薄な答えは、「プログラミングで最も難しい部分がタイピングであるならば、それは事実でしょう」です。

ペアプログラミングの支持者は、ペアが実際には2人の別々の開発者よりも生産性が高いと信じているからこそ、その支持者なのです。これは、ペアリングによって導入される継続的な議論とレビューによるものです。より良い設計を思いつき、ミスを減らし、より多くの人がコードに精通するようになります。これらすべてが、タイピングする人が減ることを相殺します。

もちろん、私たちは生産性を測定できないので、確かなことはわかりません。私の見解では、それを試してみて、チームがペアリングありの方がなしよりも効果的だと感じているかどうかを検討する必要があります。新しい実践と同様に、改善の落とし穴を超えるチャンスを十分に確保できるように、十分な時間をかけるようにしてください。

複雑なコードでのみペアリングする価値がある。単純なコードは利点がない。

これには意味があると思います。ペアリングは設計を改善し、ミスを最小限に抑えるためのものです。書くのが簡単な単純なコードでは、ペアリングが違いを生み出す機会はほとんどありません。

ただし、次のような場合を除きます。退屈な反復コードを書くのは、何かおかしいというサインです。退屈な反復コードを書いている場合は、通常、重要な抽象化を見逃しているサインであり、それによって書くべき反復コードの量を大幅に減らすことができます。ペアリングは、その抽象化を見つけるのに役立ちます。