ペアプログラミング

ペアプログラミング（）はソフトウェア開発の手法の一つで、2人のプログラマが１台のマシンを操作してプログラミングを行う手法。
当初は、２人が１台のワークステーションに向かって作業するものだったが、現在では一人で複数台を同時に使ったり、一台に複数台のディスプレイを使うことも多くなり、具体的なやり方は変わっている。
実際にキーボードを操作してコードを書く人を「ドライバ」、もう1人を「ナビゲータ」と呼ぶ。30分ごとか、単体テストを1つ完成させる度に役割を交替するのがよいとされる。また、1日に一度の頻度でパートナーを変えるのがよいともされている。
利点.
ペアプログラミングには、以下のような利点があるとされている。上に挙げた項目ほど重要である根拠を示していない。
ペアプログラミングの生産性は、1人で作業した場合の2倍以上であることが研究によって示されている。エコノミスト誌によると、
Williams 他 (2000) の調査によると、プログラムの正確性は15%向上し、時間的には20%から40%程度の削減となり、最終的な成果としては、15%から60%の効率向上があるとされているが、他の条件が同じである保証はなく、他の要因を排除していない。
最近の大規模な研究（Arisholm 他 2007）によると、複雑なシステムではプログラムの正確性が48%向上し、大きな時間の削減は見られなかったとされている。一方、単純なシステムでは時間が20%削減され、正確性には大きな変化が見られなかったとされている。全体としては、時間の削減や正確性の向上の傾向はさまざまだが、最終的な効率は84%向上しているとされているが、他の条件が同じである保証はなく、他の要因を排除していない。。
別の最近の研究によると、上級者1人の場合と上級者同士のペアとの間での生産性向上よりも、初心者1人と初心者同士のペアを比較した時の生産性向上のほうが大きいとされている（"Int J. of Human Computer Studies Vol (64) 2006"）。
弱点.
利点の裏返しで弱点も存在している。また、利点に安住するリスクもある。
派生.
リモートペアプログラミング.
テレワークなど、何らかの理由で遠隔地で作業する場合は、文字を入力する度に相手側のコンピュータに変更がリアルタイムで反映されるエディタや統合開発環境のプラグインを使用したり、画面転送のためのソフトウェアを使用したりして行われる。
git, dockerなどを利用し、同じソースの設計と試験を同時に分担して書いたり、お互いにissueを発行しながら、お互いにcloseし合うなどの方法を使うこともある。