プラクティス名(別名)
ペアプログラミング (ペアプロ、ペアワーク、ペアリング、PP)
プラクティスの目的・狙い
- コード品質向上(ミス低減)
- 作業効率化(迅速な問題解決)
- 技術継承(スキルアップ)
- コミュニケーション促進
どんな時に使うか
- 手早くバグの少ないコードをアウトプットしたい時
- 人財育成を兼ね、知識や技術を共有しながら開発を進めたい時
実施手順
- DEV同士でペアを組み、ドライバ(コードを書く人)とナビゲータ(アドバイス役)を決める
- 同じ画面を見ながら、ナビゲータの案内で、ドライバが書き進める
- 常に会話しながら作業を進め、30~60分毎に休憩を入れ、役割を交代する
- ナビゲータは客観的な視点でコードが適切かチェックし、問題があれば改善案を提案する
「2人でやるから2倍の工数がかかる」というのはありがちな誤解。実際は作業ミスが減り、問題解決も早く、ベテランと初心者の品質差も埋まるため、作業効率は逆に良くなる。知識や技術の伝承にもなり、スキルアップ&コミュニケーション促進といった副次効果も得られる。
- コツとしてドライバは今、何をやろうとしているのか、脳内の思考を実況中継しながら進めるようにすると、ナビゲータがサポートしやすい。
- またソロワークよりも疲れやすいので、集中力を維持するための休憩が大事。
- チームの心理的安全性がまだ低い段階だと精神的な疲労度が増すので要注意。
- 性格的に1on1が苦手な人もいるので、その場合はモブプロに切り替えた方が敷居が下がる。
アレンジ例
- コーディング以外の作業にも適用してみる(=ペアワーク)
アンチパターン
- 初心者×初心者のペアで、問題解決の糸口が掴めずコーディングが進まない
⇒ 対策案:30分悩んだら有識者へ相談 - 初心者×ベテランのペアで、一方的にベテランが書き進めてしまう(ナビゲータの時も指示的)
⇒ 対策案:初心者のドライバ時間を長めにする - ベテラン×ベテランのペアで、お互いにこだわりが強すぎて対立してしまう
⇒ 対策案:ナビ優先、といったルールを設ける
参考情報
こぼれ話(私的コメント)
ペアを定期的にローテーションすべきかどうかはペアプロに何を求めるかによると思います。子弟制度のようなバディ感を求めるなら、あまり変えない方がいいでしょうし、コードの共同所有(=属人化低減)を進めたいなら毎回変えていくべきでしょう。僕自身、SMの立場としてはチーム全体のコミュケーションを良くして、メンバー間の化学反応を引き出したいので、積極的に回していきたいなと思います。SM自身はペアプロしないので、ちょっと憧れがあります。