ペアプログラミングをする際の注意事項
こんにちは。
最近は粛々とGolangで開発をしている関口です。
MMMでは先週からペアプログラミングを毎日1時間取り入れています。
導入にあたっては、MMMのメンバーでペアプログラミングに関しての議論をしました。
今回はその際印象に残ったペアプログラミングに関する注意事項を3点紹介します。
沈黙を避ける
ペアプログラミングに関する記事を読んでいると、この「沈黙を避ける」
べきという内容がよく出てきます。
沈黙を避けるべき理由は色々あると思いますが、とくにペアのどちらかが理解できていないまま作業が進んでしまうことを防ぐために大事な指標だと筆者は認識しています。
とある記事では、__「ペアプロ中に1~2分間沈黙してたらそれはペアプロが機能していない兆候」__と書かれていたりもしています。
MMMでは、この「沈黙を避ける」
を達成するために
- ドライバーが積極的に「思考していることを独り言」として呟く。
- 業務外の雑談も積極的に行う。
を「ペアプロ実施中に意識すること・気をつけること」として心がけることを議論の末に決定しました。
ドライバー交換タイミングはあらかじめ決めておく
毎回自主的に交代するタイミングを決めるよりも、あらかじめいつ交代するかを決めたほうが良い
と書いている記事が多くありました。
- 交代時間を決めておいて、時間になったらアラートを自動的に鳴らせる。
- ポモドーロタイマーの休憩後ごとにドライバーを変える。
といった方法が紹介されている記事もありました。
MMMでは現在のところ、__日替わりでドライバーを交換する__ことであらかじめ交代のタイミングを決めています。
弱点を曝け出す
ペアプログラミングをしていると、たとえばドライバーが何をやっているのかわからない時があるかもしれません。
このような状況でそのままペアプログラミングを進めてしまうと、ペアプログラミングのメリットが減ってしまいます。
そんな時には素直にドライバーに質問をするように心がけるべきかもしれません。
MMMでは、質問ができない雰囲気を作らないために、
- わからない、理解できない、ことは素直に伝えて、ちゃんと指南する。短期的な成果は求めない。寄り添う。
- 作業の完遂を目指すのではなく、ペアプロの目的を強く意識していく。
を「ペアプロ実施中に意識すること・気をつけること」として心がけることを議論の末に決定しました。
あくまで__MMMにおけるペアプログラミングの目的__は
- プロジェクトや各業務における属人化を防ぐ
- MMMで働くメンバーの学びの機会を増加させ各々のスキルセットを拡充する
- 行動指針を前提としたペア作業によってチーム関係性の向上
- 中長期的な観点で成果物の品質向上とスピードアップ
といったように、短期的な成果を主としていない為、
別に作業が進まなくても__コミュニケーションができればOK・業務や開発がより理解できればOK__というスタンスです。
あとがき
MMMでのペアプログラミングは始まってまだ一週間です。
まだ試行錯誤の部分もありますが、MMMでは毎週金曜日に振り返りの時間を設けてペアプログラミングの改善を図っていく予定です。
実践と振り返りを通じて判明したペアプログラミングで役立つツールやルール、ペアプログラミングそもそものメリットなどについてもいつかMMMメンバーで紹介できたらなと思っています。
参考サイト
- Pair Programming: Benefits, Tips & Advice for Making it Work
- 7 Ways to Get the Most Out of Pair Programming
- Seven principles of pair programming etiquette
- On Pair Programming