よりよいペアローテーションを求めて

この記事は[NTTテクノクロスアドベントカレンダー2023](https://qiita.com/advent-calendar/2023/ntt-tx)、シリーズ 2 の1日目の記事です。

こんにちは、NTTテクノクロスの中島進也([なかしょ](https://twitter.com/nakasho_dev))と申します。

本記事では[XP祭り2023](https://xpjug.connpass.com/event/292794/)でLT参加したネタを紹介します。

## 毎日ペアワーク、毎日ペアローテーション

みなさん、ペアワークしていますか？
私のいるチームでは毎日ペアワーク、毎日ペアを変更しています。
チームAはTrack1はAndroidメイン、Track2はiOSメイン
チームBはTrack3はAndroidメイン、Track4はiOSメイン、Track5は色々
という感じで進めています。
前日のコンテキストが残っている人が1人残り、他のメンバは別のTrackに移動しています。
数か月に一回、チーム間のメンバ移動もし、各メンバがプロダクト全体のコンテキストを高められるように努めています。

![003.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/4545d415-0299-0a2f-932f-2a8beca1ce5d.gif)

そんなペアのローテーションですが時々、ペア決めに時間がかかるときがあります。

## ペア決めに時間がかかるとき


例えば、誰かが休んだ時などです。
前日移動した人が残って、長くいるほうが移動する、という単純なローテーションだと
前日のコンテキストを持っていない人しかTrackにいない、なんてことになりかねません。


![005.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/a0f628c7-cfad-e66a-cf28-6341fc47f0d2.gif)

## 誰かが休むのは当たり前

しかし誰かが休むのは当たり前で、それを前提にチーム運営しなければいけません。
誰かが休んでローテーションの規則性が乱れたらペア決めにいつもより時間がかかることがあります。
ペア決めに時間がかかるのはLeanではありません。
どんなときでも正しいローテーションを早く決めたいです。


<br>

<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>


ちょっと待ってください。

<br>
<br>
<br>
<br>
<br>
<br>
<br>


![スライド6.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/4ef51fa8-509e-870e-2970-6b125bca17a7.jpeg)

正しいローテーションってなんでしょう？

## そこでワークショップ

ペアワークにどんな価値を求めるかはチームによって違います。
メンバ内でペアワークをする理由とペアローテーションに求める基準についてワークをしました。

ゴールは質の良いペアを短時間で決める、再現性の高い基準と決め方を定める、です。

## ペアワークをする理由

まずはペアワークをする理由についてみんなで意見を出し合いました。

![スライド8.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/d24b9509-4681-9a97-8a6c-8702cd7987b0.jpeg)

コンテキストをフラットに残す、大事ですね。
誰かが休んでも仕事が続くように、サステナブルですね。
個人の思い込みをなくせたり、お互いで学び合えるのもとても良いことだと思います。

## 価値の再確認
ひととおり出たら、価値の再確認のためマーチンファウラーのサイトやエクストリームプログラミングの本にあるペアプログラミングの価値を列挙して関係性を確認し、価値を再認識します。

![スライド9.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/bd1bae28-c7fc-db7f-e55d-b057e298bb0c.jpeg)


## ペアローテーションに求める基準
そしてペアローテーションに求める基準をみんなで出し合いました。

![スライド10.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/cf5b7992-2f05-5530-c7ff-5b88744a8eaa.jpeg)

各チームメンバがプロダクト全体のコンテキストを高めることに重きを置いた意見が多く出ました。

## 決まったペア決めの基準

そして決まったペア決めの基準を優先度順に列挙します。

![スライド11.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/7bb853d2-3df1-6467-55d9-5c94e20999a6.jpeg)

まず、前日作業していた人がTrackに残る。
これは前日のコンテキストを持った人でないと効率よく開発できないので最も重要だと皆で認識しました。

次に4営業日以上同じトラックに残らない。
一人に特定のコンテキストを集中させないためです。

最後に機械的なローテーションを目指すようにしています。

この基準で進めるために必要と感じ、ペアの記録をとることにしました。

## 各Trackのペアを記録

誰がどのTrackに入っていたかを記録して、偏りがないかを確認します。

![スライド12.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/f2d3a424-829f-2d41-4254-cb15e248ba76.jpeg)

## 各Trackの作業を記録

各Trackの作業内容も記録することにしました。
どの機能のどのプラットフォームを担当したかを記録することで、メンバで偏りがないかの確認をしたいからです。

![スライド13.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146488/5995b202-d85f-6e22-f03c-a52a76259bc0.jpeg)

## 実施後

基準を決めたこと、記録をとったことで、ペア決めの意思決定が早くなりました。
また実績を見てメンバ同士で声掛けしあい、お互いが納得感のあるペアローテーションとなりました。

次のステップとしてはバックログシステムから自動で実績表を作れないか、とか、
スキルマップとの突き合わせでコンテキストを高めることができないか、など検討中です。

## まとめ

* サステナブルな開発のためにペアワークは必須

* 誰が休んでも開発は止めないチームにしよう

* ペアローテーションに悩まないようにチームで基準を決めよう

* 素早い意思決定には実績のデータも重要

* データを蓄積したらチーム強化のために活用したい


## 発表スライド

XP祭り2023 にて発表した資料は以下です。

https://speakerdeck.com/nakasho/yoriyoihearotesiyonwoqiu-mete

## 最後に

読んでいただいてありがとうございました。
明日は @watany さんが担当します。お楽しみに！