ペアプロやってみませんか?
こんにちは!
BABY JOB 株式会社の @rakupa_tk です!
この記事では実際の開発作業で実施したペアプロについての取り組みを紹介します。
この記事のおすすめ読者
- ペアプロってなに?
- ペアプロって何するの?
- ペアプロで何が得られるの?
- ペアプロのメリデメって?
はじめに
あなたはこんな気持ちに陥っていませんか?
- 最近エンジニアとして成長を感じられない
- リモートワークでほとんどしゃべらず一人作業で寂しい
- ワイワイと開発したい
- 新しい刺激が欲しい
- 新しい気付きが欲しい
私がペアプロをやってみようと思ったきっかけは、上記ようなことを悶々と抱えていたことです。
そんなもやもやを打破するべく、何か面白いことはできないかと考え、言葉しか聞きかじった事がなかったペアプロにチャレンジしてみた状況や感想、今後についてを書き連ねたいと思います。
ペアプロとは?
ペアプロに関しては、調べるといろいろな記事が見つかりますが、観点や目的などがバラバラなので、その中でも一番感覚の近かった以下の記事を参考にしました。
ざっくり説明
- 役割はドライバー、ナビゲーターの2役
- ドライバー:コードを書く人
- ナビゲーター:ドライバーのサポートをする人
- 基本ドライバーは1人、ナビゲーターは1人 or 複数人
- ドライバーとナビゲーターは定期的にスイッチする
- モブプロとも言われる
メリデメ
- メリット
- 規範意識(サボれない)
- コードの質向上
- 作業効率向上(レビューを同時進行できる)
- 教育的指導ができる
- など
- デメリット
- 難易度が高い適切なペアと課題のアサイン
- 開発スタイルなどで衝突の可能性
- 非生産的(ただし目的や状況による)
- など
ペアプロをやってみた
まずは目的(ゴール)と実施方法を設定しました。
目的
- スキルアップ
- 開発手法のナレッジ共有
- コミュニケーションの活性化
実施方法
- 1on1でオンライン(リモートワークなので)
- IDEのソースコード共有機能 or ドライバーの画面共有
- ドライバーがコーディングを主導、ナビゲーターはアドバイスや提案を積極的にする
- 開発用ブランチを作る所からスタート
- PRの作成までがゴール
実施方法の内容の背景
ペアプロ自体初めてだったことや、アドバイザー的な方もいなかったこともあり、少人数が前提かつ自由度を高くした独自の方法を考えました。
IDEのソースコード共有機能については、最初はIntelliJのCode With Meを使ってみましたが、ドライバー側もナビゲーター側も動作が遅くなってしまったため、2回目からはMeetの画面共有だけにしました。
ただし、環境やペアによって適切な方法があると思うので、柔軟に変えていこうと思っています。
スタートとゴールを設定した理由としては、目的に「開発手法のナレッジ共有」を挙げたように、開発(コーディング)の走り出しからどのようなことを考えながら開発を進めていくのかをお互いに共有したかったためです。
実施結果(目的達成状況)
- スキルアップ
- 技術的な話をしていないので対象外
- 開発手法のナレッジ共有
- 開発の進め方、IDEのツールの使い方などを共有できた
- コミュニケーションの活性化
- 雑談を交えながら楽しくできた(私だけかも?)
ペアプロの感想
シンプルに楽しかった
誰かとしゃべりながらコーディングすることが久しぶりだったこともあり、仕事中にも関わらず変なテンションになりそうでしたが、意外と手は動かせてました。
本来の開発をしつつ、IDEの使い方など開発とは異なる話に発展させたり、お互いの手法を共有することも楽しかったです。
多くの気付きがあった
例えば、普段はしゃべらずにもくもくとコーディングしていますが、考える際は手が止まることが多いです。
しかし、ドライバーとしてどのように実装しようとしているかをあえてナビゲーターに伝えながら(しゃべりながら)実装することで、逆にあまり手が止まることなく実装できました。
また、ナビゲーターとの認識のずれがすぐに分かるので、軌道修正も早かったです。
逆にナビゲーターとしては、相手が普段どのように考えてコーディングしているのかを知れてとても新鮮でした。
課題
今回の実施で感じた課題は下記の通りです。
- 取り組む課題の選定
- お互いのレベル感を考慮しないといけない(難しすぎても優しすぎてもダメ)
- コーディングだけするのであれば、ある程度見積もりや設計が必要
- お互いの時間の調整
- 別のタスクやミーティングなどの時間の合間を縫いつつ、長時間を確保することが困難
おわりに
ペアプロについて紹介させて頂きましたが、改めて今の開発にマンネリを感じている方には特にオススメかと思いました。
ただし、ペアプロは人によっては合う合わないがあるので、無理に誘うのは良くないですし、誘われてもやりたくなければ断ってもいいかと思います。(どうしてもという場合は相手に合理的な目的を丁寧に伝えて説得するべきかと思います)
また、普通なら一人でもできる作業を複数人で実施することでどうしても生産性は落ちるので、実施タイミングや取り組む課題には気を付けないといけないと思います。
ただ、投資のようなもので、続けていけば長期的には開発メンバーの成長や連携強化につながる可能性が高いと感じました。
今回は同じ方と1on1で実施しましたが、今後は別の方ともやってみたいですし、コーディングだけでなく、設計についても同じようなことができないか模索したいと思います。(その場合はペアデザインと呼ぶ?)
Discussion