ITエンジニアに必要な今を知れる情報メディア
【ペアプログラミングとは】5つのメリットと3つの失敗するパターン
skill

【ペアプログラミングとは】5つのメリットと3つの失敗するパターン

ペアプログラミングと呼ばれる開発手法があります。今回は、そのメリットと、うまくいかないケース、導入方法について解説します。

【関連記事】「プログラミングとは?学習方法やできること、学ぶメリットを徹底解説」

目次

1.ペアプログラミングとは

ペアプログラミングとは1つのコードを2人がかりで書く開発手法のことです。もちろん、2人が同時に同じコードを書くことはできないので、一人が「ドライバー」となってコードを書き、もう一人が「ナビゲーター」となって、アドバイスをします。リアルタイムでコードレビューをしてもらいながら、コードを書き進める感覚です。

教育的な効果やチームの結束力を高める効果がありそうなのは誰にでも直感的に理解できます。しかし、ペアプログラミングを行う最大の理由は、作業効率の向上です。2人で別々にコーディングをするより、2人で一緒にコーディングをした方が、生産効率がよりよくなるのです。

つまり、ペアプログラミングは教育的効果を狙って研修などで行うものではなく、生産性の向上を狙って、(それが適した業務であるなら)開発手法として取り入れるべきものです。

post397_img1.jpg

2.ペアプログラミングの5つのメリット

(1)バグの原因探しの時間が短くなる

ペアプログラミングの最大の利点は、バグの原因探しの時間が圧倒的に短くなることです。コードは人間が書くものなので、ミスをしてエラーを出してしまうのは仕方のないことです。しかし、その原因がどこにあるのかを特定するのに、意外に時間がかかってしまいます。自分で書いたものは、自分では正しいと思って書いているので、脳が正しいと認識してしまい、単純なミスに気がつけなくなっているのです。文章を書くときの誤字脱字と同じです。自分では間違っている誤字脱字を正しいと認識してしまうので、誤字脱字に気がつけない状態になっています。ペアプログラミングでは、もう一人が客観的な目で指摘をしてくれるので、バグの原因探しが短時間で終わります。

(2)正確なコードが書けるようになる

ペアプログラミングでは、ドライバーがコードを書き、それをナビゲーターが見て、意見を出し合いながら作業を進めていきます。これはリアルタイムでコードレビューを行っている状態です。自然と正確なコードが書けるようになり、バグそのもの数が減り、バグに対応している時間が減ります。また、正式なコードレビューも、コードの完成度が高いために短時間で済むようになります。

このように、無駄な時間が大幅に削減できるため、2人で1台のPCに向かうという、一見無駄に見える手法でありながら、トータルでの作業時間は短くなり、生産性が向上するという研究の結果、実践された人の実感がいくつも知られています。

(3)コード知識が共有できるようになる

ペアプログラミングは、先輩がナビゲーターをし、後輩がドライバーを務めるという教育的な目的ではなく、生産性の向上が主目的なので、作業の区切りがいいところで、ナビゲーターとドライバーの役目を交代するのが一般的です。ドライバーは人に見られながらコードを書くわけで、自然に集中をし、疲労も溜まるので一定時間で役割を交代する方が効率がよくなります。

また、翌日は異なる組み合わせでペアを組むようにします。このようにすると、コードのどんな細部であっても、最低2人の人が携わることになります。これにより、チームの中でのコードに対する知識が深くなります。

post397_img2.jpg

(4)チームワークが自然に強化される

いろいろなメンバーとペアを組み、実際のコーディングを目の前にしてディスカッションを行うため、コーディングの作法が、自然にチームの中で統一されていくようになります。コーディング作法が統一されるということは、他のメンバーにとっても読みやすいコードになり、チーム全体でひとつのコードを書いていく感覚が得られ、チームワークが強化されていきます。

また、半ば強制的にペアを組ませられることで、距離の遠かった人同士にも信頼関係が生まれることも期待できます。

(5)個人の成長速度が加速される

ペアプログラミングは自分とは異なる視点を持った相手といっしょにコードを書くため、学びの効果は計り知れません。研修、指導プログラム、コードレビューなどよりも実践的で、成長速度は速くなります。従来の教育プログラムとペアプログラミングを組み合わせることで、エンジニアチーム全体のスキルを短期間で成長させていくことができます。

【関連記事】「シンスペクティブ・エンジニアインタビュー(2)--ソリューションサービス ソフトウェアエンジニア・マルフ アブダラ アル(Abdullah Al Maruf)氏」

post397_img3.jpg

3.ペアプログラミングが失敗する3つのパターン

(1)能力、経験の差が大きすぎる場合

能力や経験の差が大きすぎるペアプログラミングはあまりうまくいかないことが多いようです。経験豊富なエンジニアにとって、ペアプログラミングが退屈になってしまい、経験の浅いエンジニアにとっては指導研修のような感覚になってしまい、「互いが対等な立場で議論する」ペアプログラミングのよさが生まれづらくなります。

(2)初級者同士のペアプログラミングの場合

ペアプログラミングには高い教育的効果もありますが、だからと言って、新人同士をペアにするのはあまり効果が期待できません。なぜなら、新人は獲得しているスキルがまだ少ないため、多様な視点を持つに至っていません。同じような視点を持つ二人が、一緒に作業をしても、新たな学びが得られることは少なく、また、同じ場所で二人ともつまずくため、生産性の向上も期待できません。

(3)個人的に仲がよすぎる場合

個人的に仲がよすぎるペアの場合、コードの内容に関する議論をきっかけに雑談が始まってしまうことがあります。これは経験豊富なエンジニア同士のペアでも似たようなことが起こり得ます。どちらの考え方が優れているかの議論をすることはいいのですが、議論が白熱しすぎてしまい、生産性が低下してしまうことがあります。

このようなことから、順列組み合わせで全員とペアを組む仕組みにするのではなく、スキルレベル、得意分野などを考慮して、あらかじめペアにする範囲を設定しておく必要があります。

また、ペアプログラミングを行うときに、生産性向上の妨げになる無駄なディスカッションを防ぐために、ペアプログラミングの目的、進め方などをあらかじめチーム全体で共有しておく必要があります。

4.ペアプログラミングの導入の仕方

ペアプログラミングは、さまざまな研究、実例から、2人で2人以上の生産性が達成できることが知られていますが、それはもちろん成功例で、やり方がまずければ生産性は下がってしまいます。

最も難しいのは、スケジュールの確保です。2人のエンジニアが長時間一緒に作業をしなければならないため、1つの業務に専念できる理想的な環境であれば問題ないものの、互いに複数の作業に携わらなければならない、緊急対応が必要になることがたびたびあるという状態だと、ペアプログラミングそのものが成り立ちません。ペアの組み合わせを変えることを考えると、チーム全員が同じ時間にペアプログラミングの時間を取る必要があります。このこと自体が、現実の企業の中では簡単ではありません。

そのため、最初は、規模の小さな社内開発プロジェクトを、例えば「月水金の午後」などと時間を限定して、ペアプログラミング手法で開発をし、その効果を実感するというテストプロジェクトから始めるのが成功への道です。

また、ペアプログラミングは画面共有とIP通話機能を使えば、リモートワークでも問題なく行えます。リモートワークでは外部からの割り込みが少ないこともあり、リモートワーク日にペアプログラミングを行うというのがスムースです。

5.まとめ

ペアプログラミングは、2人で1台のPCの前に座り、1人がナビゲーターとなり指示やアドバイスを行い、1人がドライバーとなり実際にコードを書くという開発手法です。

教育的な効果もありますが、ペアプログラミングの狙いは生産性の向上です。うまく行うと、2人で2人以上の成果が得られます。

原稿:牧野武文(まきの・たけふみ)
テクノロジーと生活の関係を考えるITジャーナリスト。著書に「Macの知恵の実」「ゼロからわかるインドの数学」「Googleの正体」「論語なう」「街角スローガンから見た中国人民の常識」「レトロハッカーズ」「横井軍平伝」など。

この記事はどうでしたか?

おすすめの記事

エンジニア向け求人特集

BACK TO TOP ∧

FOLLOW