IT業務において開発を行う際の手法として、「ペアプログラミング」というものがあります。
その名の通り、ペアになってプログラミングをする手法ですが、どのようなペアでどのように開発を行うのが理想的なのか、ペアプログラミングをすることによって得られるメリットは何かなどをご紹介いたします。
ペアプログラミングとは
ペアプロと呼ばれることも多い「ペアプログラミング」とは、その名の通り、1つのプログラムを2人ペアで共同開発する手法のことです。
「ペア」プログラミングと名前にペアが付きますが、2人で同時に開発するわけではなく、コーディングをするドライバーと、コードを評価しながら問題の解決を提案するナビゲーターに分担して業務を行います。
経験が浅い人がドライバーを担い、経験知識が豊富な人がナビゲーターをすることが多いです。
経験が浅く問題の解決にあたって困難な点をナビゲーターに助けてもらえるため、1人で開発するよりも効率よく作業することができます。
3人以上で開発業務を行うことを「モブプログラミング」といい、3人で行う場合はドライバー1人とナビゲーターが2人になります。
ペアプログラミングのメリット
作業ミスが減る
経験豊富であるナビゲーターがコードのレビューも同時に行うため、作業段階でミスやバグを発見し、修正することができます。
ミスに気がつくタイミングがはやく、テスト段階で細かなバグ修正を行う手間がなくなります。
また、ドライバーはナビゲーターから開発中すぐにミスを指摘されるので、苦手な分野やよくミスをする場所に気づくことができスキルアップに繋がります。
作業が効率化する
1人で開発をする場合、処理の仕方やプログラムの書き方、エラーの原因などがわからず、解決策が思いつかないまま時間だけが過ぎてしまうということがあります。
ペアプログラミングでは、自分とは視点の違うナビゲーターと協力して問題を解決することができるので、なにもできないまま時間が過ぎていくという状況になりません。
1人で解決しにくい課題や問題がナビゲーターと協力することにより、解決しやすくなるため作業の効率化につながります。
チームワーク向上
2人がペアとなり一緒に同じ開発をし、お互いが持っている知識や考え、意見を共有することで、チームワークの向上に繋がります。
1人でずっと作業をしていると孤独を感じてしまうこともありますが、相手と協力して開発していく中で、信頼関係の強化にもなり、モチベーションもアップします。
ペアプログラミングのデメリット
初心者同士には不向き
ペアプログラミングは、基本的に上級者と初心者または上級者同士でペアを組まないとあまり効果がありません。
初心者同士のペアで行ってしまうと、お互い知識が浅いため、レビューやミスの指摘が十分に行えません。
また、ドライバーが開発する上で問題に行きづまった時、ナビゲーターが上手く解決方法を伝授することができないため、2人揃って時間を浪費してしまいます。
コードの書き方で対立する
同じ処理を行うコードでも、さまざまな書き方があります。
上級者同士のペアであっても、コードレビューの段階でドライバーとナビゲーターがコードの書き方について意見が対立してしまうことがあります。
あらかじめコーディング規則を決めておいたり、お互いを尊重するよう意識することで、対立を避けることができます。
ペアプログラミングの注意点
ペアプログラミングは2人で行うため、コミュニケーションがなによりも大切です。
上手くコミュニケーションを取っていくために、ドライバーは何か行き詰まってしまった際に黙って1人で考え込まないようにしましょう。
ナビゲーターはドライバーが気軽に話かけやすい空気感を作ってあげるよう心がけましょう。
ドライバーは、あらかじめナビゲーターに苦手な部分を共有しておくことも大切です。
ナビゲーターがドライバーの現在していることを把握しておかないとペアプログラミングの意味がなくなってしまうので、ドライバーはこまめに状況を報告するようにしましょう。
ペアプログラミングの進め方
実際に、ペアプログラミングを行う際の進め方についてお伝えいたします。
作業環境としては、ドライバーの作業をナビゲーターが確認できるようにします。
この時、ナビゲーター用のディスプレイとドライバー用のディスプレイを2台用意し、同じ画面を共有すると、ナビゲーターはドライバーの作業状況を把握しやすくなります。
ナビゲーターはドライバーのサポートをしてあげましょう。
例えば、ドライバーが実装中に調べたいことが出てきたら、ナビゲーターに調査依頼を投げ、ドライバーはその間他の作業をします。
そうすることで、レビューで判明した改善点を早い段階でコードに反映できるので、効率的な業務になります。
さいごに
ペアプログラミングとは、初心者と上級者または上級者同士でペアを組み行う開発のことです。
2人で一緒に開発するわけではなく、初心者がコーディングをし、上級者がレビューなど手助けをしてあげながら進めていきます。
作業効率の向上はもちろん、チームワークが良くなったり、ドライバーが自分の苦手分野を知ることができます。
ドライバーだけでなくナビゲーターのスキルアップにも繋がります。
みなさんも開発する際には「ペアプログラミング」またの名を「ペアプロ」形態を取り入れてみてはいかがでしょうか?