イントロ
PharmaX Advent Calendar 3日目の記事です。
ペアプロを成功させるために、よくペアの話が出てきます。
ただ、ペアの改善以外にも、アプローチは色々あります。
僕がペアプロをやるときに、毎回同じことを共有しているので、ノートがてらまとめたいと思います。
対象者
本記事はある程度ペアプロを実践した人むけに書いてるので、以下のテクニックの紹介は除外してます。
どれも、非常に重要なテクニックなので、興味がある方は調べてみてください。
- 効率化最大化されるペア
- ポモドーロテクニック
- ドライバー、ナビゲーター
ペアプロとは?
ペアプログラミングの略で、二人でドライバー、ナビゲーターを交代しながらコーディングをしていきます。
ペアプロの最大のメリットは、コーディングの実力差やドメインなど業務上の知識さを埋めて、フローを最大化させることです。
例えば、重い実装のタスクがあるとしましょう。
これを一人で実装した場合、タスク故に変更差分が多く、コードレビューの時間や手戻りが発生します。
しかも、実装の内部を完全に把握しているのは一人のため、他の人が改修やバグの対応をする難易度が上がります。
ペアプロを行った場合、二人で協力して作業するので、内部の実装は共有されますし、コードの品質も上がるでしょう。
その上で、コードレビューなどをスキップすることができます。
よく、 分担して並列で作業したほうが効率がいいと言われますが効率の定義次第です。分担は時間効率は高いですが、上記のような知識の分断が起こります。
ペアプロは、時間効率は悪いですが、問題を一つづつ潰していくので、手戻りを減らしフロー効率を最大化させます。
どちらも一長一短あるので適切に使い分けましょう。
ペアプロの質を上げる方法
ここからが本題です。僕はよく以下の方法を取ります。
作業リストを作ろう
コーディングに入る前に、作業リストを立てましょう.
二人でコーディング前に必ず作業リストを確認してください。
メリットは
- 作業の進捗が可視化できるのでコーディング中に迷子になりにくい。
- 手戻りがない作業手順の立て方が共有される。
- 議論したいポイントを洗い出される。
特に重要なことは三番目です。
作業順番を整理していくと、実装の詳細が曖昧なものや複雑なものが明確になります。
そして以下のような曖昧なものほど、議論が必要なことが多く、ペアプロで潰すべき課題です。
- 予約枠ってどうやって取得するんだっけ?
- 仮ユーザーってどう判断するんだっけ?
やらないことを決めよう
議論ポイントが決まったら、やらないことを決めて、TODOリストから間引きましょう。
やらないこととは、単純な作業であり、議論する余地がないことです。
例えば、以下のようなものです
- HTTPリクエスト処理などのボイラープレートコード
- 繰り返しが多いテストコード
これらを二人で作業しても、一人が黙々とコード書くだけで生産的ではありません。
コードレビューでカバーするべきです。
実際にコード書いたり、計画を立てる段階で削れる部分がないかは必ず議論しましょう。
振り返りをやろう
ペアプロ終了後は10分ほど振り返りをやりましょう。
振り返り対象は以下です。
- ドライバーをやって嫌なこと、良かったことは何か?
- ナビゲーターをやって、嫌なこと、良かったことは何か?
- 他に改善できる部分はあるか?
この振り返りの意義は、情報を共有する阻害要因を洗い出すことです。
ペアプロは、コミュニケーションが占める割合が非常に多いです。
言い換えると、コミュニケーションの質がペアプロの質に直結します
相手を萎縮させる言動などは積極的に排除しなければなりません。
言い方は感じ方や表現が、個々人によって異なるので自己認識して解決することは非常に難しいです。
必ず、相手からフィードバックをもらい改善していきましょう。
最後に
ペアプロは。体力を非常に消耗します。
個人的に疲労感に見合った分の成果は出したいと思うので、毎回ここら辺注意してます。
それではよきペアプロライフを