ペアワーク
同格のn人が一緒に仕事にあたること。
背景
仕事は通常ひとりで行い、要所要所でコミュニケーションやレビューをはさむものである
一方、最初から複数人で一緒に仕事にあたるスタイルがプログラミングにおいて見られ始めた
メリット:
OJTよりも高密度な実践的教育になる
サボらずにお互いに監視しあって、高めあって仕事にあたれる
デメリット:
疲れる
(特にリモートの場合)スムーズに仕事するための環境整備と投資が必要
本質は一点集中である
いわゆるアジャイル開発は、直近何にフォーカスするかを事前に決めた上でただひたすらそれに着手するという一点集中の側面がある
上述のスタイルは、いわば複数人で一点集中を担保するための手法と言える
この概念は一般化できる
ペアワークと名付ける
例
2人でプログラミングを行う
1人がドライバー(コードを書く)、もうひとりがナビゲーター(見て助言や質問をする)
ペアプログラミングは2人だが、モブプログラミングは3人以上
ナビゲーターが複数人になることで議論が多角的になり、またドライバーの(ひとりあたりの)負担も軽減できるのがメリット
概要
同格(実力と裁量とワークスタイルが同等)である者n人が、同じ場所と同じ時間を使って、同じ仕事にあたることをペアワークという
別の言い方をすると、
打ち合わせではn人全員が参加し、ある議題について全員で議論する
これの「仕事」バージョンを考える
n人全員が参加し、ある仕事について全員で取り組む
これがペアワークである
アジェンダ、ファシリテーション、時間配分といった会議テクニックは有用である
各々のワークスタイルを尊重していてばペアワークにならないので、このような進行や配分でやると決めた上で全員がそれに従うのが良い
必要なもの
中央ワークスペース
n人全員がアクセスでき、同時に編集できるもの
例: 同時編集可能なエディタ、IDE、あるいは無限キャンバスなど
役割の分担
実作業を行うドライバーと、ドライバーの様子を見て助言や質問に徹するナビゲーターの配分をどうするか
ペアプロやモブプロではドライバーはひとりだが、仕事によってはn人でも良い
たとえば発散と収束を伴うアイデア出しや検討の活動
逆に正式なコードや文章を書くような仕事では、整合性のためにも1人が良い
分担交代や休憩のプロセス
ペアワークは高い集中力を要するため、ダラダラすると息切れする → 切り替えのタイミングは事前に定めた上で全員を従わせるのが良い
1 いつ、どのように切り替えるかを決めておく
最もわかりやすいのは時間配分
他にも「2人以上が休憩を提案したら休憩に入る」といった反応制もある
2 決めた1を実際になぞる(ファシリテートする)
Q&A
Q: ペアプログラミングやモブプログラミング以外によく知られたペアワークはありますか?
Ans: ありません
というより、個別に取り組んでいる組織やチームはいるでしょうが、それを外から観測することができません
ただ、どちらかといえば、あなたの組織やチームにあったペアワークをあなた達自身でつくっていくことが必要です
Q: ブレインストーミングはペアワークに入りますか?
Ans: 上述した「必要なもの」をきちんと揃えて取り組むのであれば、yesです
しかし一般的にブレインストーミングでは特定の役割は設定しないため、ペアワークとは言えないと思います
Q: ペアワークはペアという言葉から2人をイメージしますが、3人以上も対象ですか?
Ans: 対象です
ここでいうペア(Peer)とは「同格」という意味合いがあります
Q: 同格である必要があるのですか?
Ans: 絶対ではありませんが、同格であるのが望ましいです
同格とは「実力と裁量とワークスタイルが同等」と定義しましたが、これらが揃ってないとペアワークが成立しないからです
実力が不揃いだと、強い人が弱い人をフォローするか、弱い人の存在意義がなくなります(教育目的も兼ねているのなら前者は問題ない)
裁量が不揃いだと、裁量のない者がある者におうかがいをたてるため、ある者がボトルネックになります
ワークスタイルが不揃いだと、多数派のワークスタイルにそぐわない少数派がお互いにストレスを溜めることになります
たとえば1h以上席に立たずに集中できる3人と、30分ごとに1度は立ちたい1人の4人でペアワークをする場合、前者は後者がすぐ席立つからうざいと考えますし、後者も前者に合わせて我慢するからパフォーマンスを発揮しづらい、といったことがありえます