ペアプログラミングに効果はあるのか?

協力会社に作ってもらっているソフトウェアの品質があまりに悪いので改善を要求したところ、「ペアプログラミングを行って改善します」という返事が来た。そんな回答に「了解しました」なんて素直に返事を出しているリーダーがいたのだが、ちょっと待って欲しい。ペアプログラミングを実施すると本当にコードの品質は上がるのだろうか?その根拠は一体何なのだろう?統計的に有意な結果が出ているとか、理論的に正しいとか合理的な理由があるのだろうか?確かに一人が間違ったコードを書いても、もう一人がその場ですぐに指摘して直せるというメリットがあるのかもしれないが、それは「バグを見つけ出せるスキル」を持つ人がいる場合の話ではないだろうか?

例えば、上級者と初心者という組み合わせで考えてみる。

  • 上級者x上級者

    バグを適切に指摘できるので、最も品質の良い結果が出てくると期待できる。しかし、よく考えてみればそもそもスキルのある人なのだから、わざわざペアプログラミングを実施しなくても問題は無いはずだ。雑誌等で紹介されている成功例も、実はこの組み合わせが多いような気がする。
  • 上級者x初心者

    初心者の作るバグを上級者が指摘するという効果が期待できる。しかし、この場合、上級者がレベルの低い初心者に付き合わなければならないという問題がある。適切な指導が出来るのなら良いが、あまりに退屈な仕事のために職場放棄を考えるベテランも少なくないのではないだろうか。
  • 初心者x初心者

    最悪の組み合わせ。一方がバグを作っても、もう人がその問題を指摘することが出来ない。2人で相談してベターなコードを書ければ良いが、下手すれば共倒れの可能性も大きい。それどころか、単純なバグがさらに深刻な問題に発展する可能性も有り。

そんなわけで個人的にはペアプログラミングの効果についてはかなり懐疑的な状態。レビューについても同様のことが言えるだろう。適切なスキルを持たない人がペアになってもトリオになっても、まともな成果を出せるわけがない。もし自分も関わることになったら、初心者の酷いコードに文句を並べ続けるだろうな。上級者が生み出すソースコードは是非とも拝見したいところだけど、身近にそんな優れた人はいないのであった。残念。