パソナについて
記事検索

ペアプログラミングとは?メリット・デメリット、注意点について解説

ペアプログラミングの導入を検討している人にむけて、開発手法としてのメリットとデメリット、運用時の注意点を詳しく解説していきます。

ペアプログラミングとは?メリット・デメリット、注意点について解説

ペアプログラミングの導入を検討している人にむけて、開発手法としてのメリットとデメリット、運用時の注意点を詳しく解説していきます。

スキルアップ

2020/06/05 UP

ペアプログラミングという開発手法について、名称を聞いたことはあっても、具体的にどのように行うのか詳細な内容を知らないエンジニアも多いのではないでしょうか。

ペアプログラミングは一つのプログラムを二人で開発する手法で、コードの共有や作業分担による制作時間の短縮などさまざまなメリットがある一方で、スケジュール管理の難しさやペアリングの調整が必要になるなど、運用には注意しなければいけない点もあります。

この記事ではペアプログラミングの導入を検討している人にむけて、開発手法としてのメリットとデメリット、運用時の注意点を詳しく解説していきます。

ペアプログラミングとは

一つのプログラムを二人で共同開発する手法で、アジャイル開発でよく採用されます。ペアということで、二人で同時にプログラミングするわけではなく、コーディングを担当するドライバー役と、コードを評価しながら問題を解決したり全体を見通して提案したりするナビゲーター役に分担して業務を行います。

ドライバー

ドライバー

キーボードを操作して、コードを書く役割を担います。ナビゲーターの指示に従い、実際にプログラムを書く人です。

基本的にはエンジニアとして経験が浅い人が担当し、上級者の指示や支援を受けながらコーディングを進めていきます。経験が不足していると解消しにくい問題点を、ナビゲーターにサポートしてもらえるため、一人でプログラミングを行うよりも効率よく作業することができます。

ナビゲーター

ナビゲーター

ドライバーが書いているコードが適切なものかをチェックする評価作業と同時に、ドライバーに対して適切な指示を出し、発生した問題の解消のため提案を行います。

複数あるアルゴリズムから適切なコードを考え、ドライバーに指示を出すことで、経験が浅いエンジニアでも効率よくコーディングが行えるよう誘導していきます。

ペアプログラミングのやり方

ペアプログラミングのやり方

ペアプログラミングは、多くの場合「ナビゲーター」を上級者、「ドライバー」を初心者が担当します。また、プログラム開発の小さな区切りや一定時間(30分、1時間など)で担当を交代するのが望ましいとされています。

作業環境としては、1台のコンピューターに対し、二人分のディスプレイ、キーボード、マウスを接続して二人で同時に同じコンピューターを操作できる設定が理想的です。

モブプログラミング

ペアプログラミングが2人で行うのに対し、モブプログラミングは3人以上で業務にあたるスタイルです。

この場合、ドライバーは1人でコーディングしていきますが、ナビゲーターが2人になります。

モブプログラミングのメリットは、手を動かす新人のレベルを把握できること、進捗を常に共有できることなどがあるのです。

ペアプログラミングのメリット

ペアプログラミングには、作業を二人で行うことならではのさまざまなメリットが存在します。その中でも代表的な4つのポイントを紹介していきましょう。

作業ミスを軽減できる

ナビゲーターがコードのレビューも同時に行うため、作業段階でバグやミスの発見・修正が可能です。そのため、テスト段階で細かなバグの修正を行う工数を削減でき、プロジェクト全体の円滑な進行と効率化に寄与します。

また、すぐにミスがわかるため、ドライバーは自分の苦手な部分や知識が不足している部分など、プログラミング上の問題点に気づきやすく、スキルアップにも繋がります。

作業効率化

プログラミングに際して、難しい処理のアルゴリズムが思いつかなかったり、エラーの発生原因がわからなかったりする場合、解決策を思いつくことができないまま時間が経過してしまうこともあります。特に初心者の場合、プログラミングの経験が少ないということもあり、対処方法を調べるだけでも時間がかかってしまうもの。

その点、経験の度合いが異なる二人で作業するペアプログラミングでは、自分とは異なる視点を持つ人と協力して問題解決に取り組むことでき、一人では解決が難しい問題も解決しやすくなるため、作業の効率化に繋がります。

知識の向上

一般的に初心者と上級者がペアになるため、初心者が一人で作業しているよりも効率よくスキルアップできます。上級者の知識やプログラミングのテクニック、問題解決のための考え方など、他の人がどのようにプログラミングを作成しているのか学べる機会になるため、経験が浅いエンジニアの短時間での育成に非常に有効な手法です。

また、上級者も初心者にわかりやすい解説と適切な誘導が必要になるため、理解度、習熟度の向上に繋がります。

チームワークの向上

二人で同じプログラムを一緒に開発し、持っている知識を出し合い、考えや発案を協議しながら協力して進めることで、チームワークの向上に繋がります。

密なコミュニケーションを取ることで相手を理解するチャンスにもなり、チーム内のモチベーションアップや信頼関係の強化にもなります。一人で作業をしていると孤立感、孤独を感じてしまうこともあるかもしれません。しかし、ペアプログラミングの場合は、自分のパートナーと二人三脚で進めるため一体感が得られます。

ペアプログラミングのデメリット

一方で、ペアプログラミングには二人組で行うがゆえのデメリットも存在します。密なコミュニケーションを取るペアプログラミングならではのデメリットです。

ここからは、具体的にペアプログラミングのデメリットについて4点紹介します。

スキルに差がある場合は片方が退屈

プログラミング初心者にとってペアプログラミングは得られるものが多く、短期間でのスキル向上にも繋がりメリットが多いものです。しかし一方で、上級者は教える立場になるためドライバーがプログラミングをしている間は手持ち無沙汰になることがあります。

ドライバーの作業を待っている間、待機しているナビゲーター役の上級者はリソースが無駄になってしまうこともあるため、上級者は一人で作業した方が効率的な場合も。

初心者同士には不向き

ペアプログラミングは基本的に初心者と上級者、または上級者同士でペアを組むことで効果を発揮する手法です。初心者同士でペアを組んでしまうと、お互いにレビューやミスの指摘を行うために必要とされる知識を持っていないため、正しいプログラミングができません。

ドライバーがプログラミング上で問題に行き当たった時、ナビゲーターが解決方法をナビゲートすることができないため、二人で悩んで時間を浪費してしまいます。作業が停滞してしまうため、ペアプログラミングのメリットがすべて活かされません。

コーディング手法で対立する

同じ処理を行うコードでも、さまざまな書き方があります。そのため、上級者同士のペアであっても、ソースレビューの段階でドライバーとナビゲーターがコーディング手法について意見が対立することも考えられるのです。

この点についてはコーディングの規則をあらかじめ決めておくことや、お互いを尊重する姿勢をチーム全体に浸透させることで、対立を避けられる場合があります。どうしても解決が難しい場合は、ペアを交換することも解決方法の一つでしょう。

スケジュール管理が難しい

ペアプログラミングは二人で開発を行うため、お互いのスケジュールを調整する必要があります。一つのプロジェクトに注力できる場合は問題ありませんが、上級者の場合、経験の豊富さから複数のプロジェクトやプログラム以外の作業に時間を必要とすることも少なくありません。その場合、スケジュールを合わせてペアプログラミングを行うことが難しくなってしまいます。

この点については、管理者が開発開始前はもちろん、開始後も適宜スケジュールと進行の監視を行い、こまめな調整を入れることである程度解消が可能です。

ペアプログラミングを行う際の注意点

では実際にペアプログラミングを行う場合、どのような点に注意するべきなのでしょうか。ペアプログラミングは二人で行うため、コミュニケーションがなによりも大切です。そのため、注意すべき3つの点もコミュニケーションに関わる部分になります。

沈黙を避ける

ペアプログラミング中は積極的に考えたことや疑問点、思考を発言することが望ましいため、沈黙は避けましょう。頭の中を整理するための独り言もできるだけ口に出し、ペア相手と共有していきます。考えていることを二人で共有することによって、一人で考え込むよりも効率的に解決していくことがペアプログラミングです。

沈黙が続くとペアプログラミングが機能していない証拠といえます。1〜2分程度の沈黙もできるだけ避け、集中のために黙り込まないよう話しながらプログラミングを進めていきましょう。

弱点をさらけ出す

さまざまな情報を、思考に至るまで共有することで効率化するのがペアプログラミングのメリットであるため、片方が何をしているのかわからない状況になると、ペアプログラミングの利点がなくなってしまいます。

ドライバーはわからないことや苦手なことも共有して、問題点や疑問点がどこにあるのか、コーディングのどの部分で考え込んでいるのかをナビゲーターに共有し、ナビゲーターは適切な処理や考え方を指南していきます。

こまめに休憩する

ペアプログラミングを行っている間は、情報を共有するために喋りながら集中しなければいけないため、想像以上に疲れます。そのため、20〜30分ごとに5分程度の休憩を挟むなど、こまめに頭を休めるように心がけましょう。

また、休憩のタイミングでペアの役割を交代すると思考のリフレッシュに繋がります。

人間の集中力の限界は30分程度といわれているため、25分ごとに5分の休憩をとるポモドーロテクニックなどと組み合わせることで、よりペアプログラミングを効率化することができます。

リモートワーク下でのペアプログラミング

リモートワークでのペアプログラミングでは、1台のPCではなくそれぞれのPCで行うことになります。また、リモートワークでは、物理的な距離があるのでオンライン会議システムなどの環境構築が必要です。

ここでは、今後増えるであろうリモートワークにおけるペアプログラミングのメリットとデメリットを解説します。

メリット

リモートワークでペアプログラミングするメリットとしては、ドライバーもナビゲーターも自分の作業に集中しやすいことが挙げられます。

一般的なペアプログラミングと違ってすぐ横にいるわけではないため、ある程度リラックスが可能です。それでいて画面を通してお互いを見ていますので、適度な緊張感もあり、リズムが作りやすいという側面があります。

また1台のPCではなく、ドライバーとナビゲーターのそれぞれが自分のPCで作業ができることもメリットになります。自分が慣れた環境で行えるため作業効率が挙がり、集中もしやすくなります。

デメリット

デメリットとしては、PCに負荷がかかりやすいことがあります。開発以外に、オンライン会議システムのリソースが必要となるためです。IDEなどを使用してメモリを圧迫した状態でオンライン会議システムをつなげた場合、スペックの低いPCでは挙動が不安定になってしまう可能性があります。

対策としては、PCのスペックを上げる、余っているPCなどを使用してオンライン会議システムにつなぐ、などが考えられます。いずれにせよPC環境にかかるコストは増えると考えられます。

これ以外に、どちらかの生活音が聞こえてしまい、集中が切れてしまうなどのデメリットも考えられます。ドライバーかナビゲーターのどちらかがリモートワークの環境を整いきれていない場合、ペアプログラミングの相手に影響を与えてしまうため、注意が必要です。

ペアプログラミングのメリットを活かして導入しよう

ペアプログラミングのメリットを活かして導入しよう

ペアプログラミングは初心者のミスを軽減し、作業を効率化して、知識の向上をはかり、短期間で大きなスキルアップが行えるだけでなく、開発チーム全体のチームワークの向上にも繋がります。

開発しながら教育を行うことができるという側面もあり、初心者は緻密なコミュニケーションを通して上級者の考え方やスキルを身につけられるため、初心者を育成して戦力としたい状況では有効な手法といえます。

一方で、二人一組という状況が長く続くため、人間関係の調整や、上級者のリソースを有効に使い切れないなど、デメリットも存在します。また、人間性に重点を置いたプログラミング手法であるため、プロジェクトの管理者はペアの関係性に対し、慎重な観察を行わなければなりません。

ペアプログラミングは、デメリットもあるもののメリットは非常に大きいものがあります。本記事を参考に、デメリットをよく理解し、解決しながら開発に導入することで、より効果的なペアプログラミングを試してみてはいかがでしょうか。