ペアプロを有意義にするためのTips
Introduction
ITエンジニアのみなさま、ペアプロやっていますか?
本記事では、ペアプログラミング方法を試行錯誤した体験をもとに、より有意義なペアプログラミングを行うためのTipsを書いていきます。
ペアプログラミングの進め方に悩んでいる方のお役に立てると光栄です。
本記事の対象者
ペアプログラミングを予定している人
ペアプログラミングをしているが、時間を有効に使えていない気がする人
ペアプログラミングとは
まず一般的な定義はこちら。
1台のPCを使い、2人でプログラミングを行う開発手法
同時にプログラミングを行うのではなく、「ドライバー」と「ナビゲーター」という役割に分かれる
ドライバー:作業を行う(プログラミングetc)
ナビゲーター:ドライバーの操作を見ながら、指示やサポートを行う
ペアプログラミングへのネガティブイメージ
私が本格的なペアプログラミングを実施する前に抱いていた印象を挙げてみます。
正直ポジティブな印象は無く、メリットが不明な状態でした。
生産性
2人分の時間を使うなんてタスクの進捗率が落ちるのでは?各々が役割分担したほうが進捗が良いのでは?
スキルアップ
力量差がありすぎると一方が退屈になり学びが無い。
初級視点)上級エンジニアの作業スピードについていけず、技術を吸収できない。
上級視点)初級エンジニアの作業スピード・技術難易度に合わせると技術的発見が無い。
口頭ベースで話が進むため、後から振り返りできない
マインド
技術に自信がないので、作業している画面をみられたくない...(作業遅いと思われたくない)
2週間がっつりペアプロやってみて気付いたメリット
しかし初めて本格的にペアプログラミングしてみて、
ネガティブイメージを払拭し、多くのメリットを気付くことができました。
(一緒にペアプロしてくださった同僚に感謝)
前提条件
スケジュール:あらかじめ2人で1人日のタスクが組まれている
開催目的:プロジェクト新規参画者(私)のためのキャッチアップ
時間:1日3~6時間 × 2週間
力量差:小さめ(作業スピードについていけるレベル)
ドライバーとナビゲーターに分かれる
オンラインなのでドライバーは画面共有をする
メリット1. スキルアップ
業務・技術知識の共有により作業効率化できる
学ぶ立場)
他者の仕事の進め方・操作を学べる
自分と他者との差分をとれて学習モチベーションが上がる
教える立場)
その場で知識・作業効率化方法を共有できる
初級者が詰まりがちなポイントがわかる
メリット2. チームワーク向上
コミュニケーション時間が長くなるので、信頼関係が築きやすい
メリット3. 生産性向上
時間内で作業を終わらせようとするので、生産性が上がる
確認者が増えるので作業ミスを軽減できる
レビュー時間を削減できる
(おまけ)楽しい!
課題解決できると直接感謝されるので嬉しい
常に会話できるので、オンラインでもオフライン感が味わえて楽しい
NG例から学ぶTips
生産性
2人で1人分の作業しかできないため生産性が低い
両者が業務・技術を熟知している場合は各々が役割分担したほうが良い。
ただし学習目的の場合は教育期間を短縮できる。実務レベルのスキル習得が早くなるため、長い目で見た時のタスク消化数・消化率は上がる。
ケース例)プロジェクト新規参画者のオンボーディング業務、初級エンジニアのスキルアップ
基礎知識が足りずペアプロ時間の進捗が悪い
ペアプロ時間前に、使用技術について最低限のキャッチアップをする
例)基本文法、公式ドキュメントなど
ドライバーが何をやっているのかわからない
ドライバーは作業について実況中継をする
今何をしているのか
これから何をするのか
疑問をつぶやく
ナビゲーターはドライバーに上記を確認する
1人でもできる調査に時間がかかる
詰まりそうな箇所を前もって調査する
例)使えそうなサイトを事前にピックアップする
スキルアップ
力量差がありすぎると一方が退屈する
力量差が大きい場合、基本的に学習者がドライバーをやる。
理由)自分で操作すると作業スピードに余裕が生まれる。→見ているだけでは理解できない操作について質問ができる。→知識・操作を覚えることができる。
ナビゲーターは「ペアプロ時間=教える技術を磨く時間」として捉える。
口頭ベースで話が進むため、後から振り返りできない
メモレベルで良いので記録を共有する
スケジュール・タスク管理
ペアプロ時間が確保できない
ペアプロ相手のスケジュールを事前にブロックする
「次は何をやる?」タスク迷子になる
スケジュールについて認識を合わせる
フェーズ・月・週・日単位でスケジュールを共有する
今日の完了目標がわかれば生産性も上がる!
作業の流れについて認識を合わせる
タスクの進め方について洗い出し、認識を合わせる
マインド
作業が遅いと思われたくない
自分の技術力を可視化するチャンスと捉える
[メリット1] 期待値をコントロールできる →マネージャーがタスク見積するときの参考になるため、力量に応じたタスクを割り当てしてくれる(はず)
[メリット2] 他者からみた自分の強み・弱みがわかる →今後のキャリアに活きる
まとめ
ペアプログラミングは有意義で楽しい!
ペアプログラミングが役に立つ状況
工数に余裕がある(余裕をもって工数を確保している)
プロジェクト新規参画者のためにオンボーディングが必要
初級エンジニアのスキルアップが必要
他者の仕事術を学びたい
作業が詰まったため他者に助けを求めたい