研修でペアプロやってきました
皆さんこんにちは!
アジャイル開発してるけどペアプロあまりやったことないエンジニアの方って多いのではないでしょうか?
筆者もその一人でしたが、先日会社の研修プログラムで 2 週間の自由なチーム開発の機会があったので、この際だから思いっきりペアプロも導入して教科書通りのアジャイル開発してみようということでがっつりペアプロをやってきたので、感じたことなどを書いていきます。
対象読者
- ペアプロって実際どうなの?と思っているエンジニア、マネージャーの方々
運用方法
ペアプロは読んで字のごとく 2 人のプログラマーがペアで 1 つのプログラムを共同作成するプログラミングの手法です。
今回チームで運用するうえで意識したポイントについては以下のようになります。
- ペアのローテーション
今回は 4 人のチームだったので 2 人のペア 2 組に分ける 3 通りをローテーションして行いました。2 週間の開発期間だったので、約 3 周したことになりますね。
- ドライバーとナビゲーターを不定期に交代
主にパソコンに向かってコードをかくドライバーと、隣で一緒に画面を見ながらあれこれ発言するナビゲーターが存在することになりますが、特に時間は決めずに疲れたら交代、くらいのゆるいルールで行いました。
- 中途半端でもあえて次の日に持ち越す
どれだけ中途半端でも定時で作業を止めて帰ることにしていました。次の日ペアは変わりますがペアのうち 1 人は昨日やっていたタスクを継続することになるので、新たなペアに進捗を共有しキャッチアップしながら作業を開始するようにしていました。
ペアプロで感じたこと
ポジティブな感想
- チーム全員がコード・アーキテクチャを理解できている感覚がある
ペアプロでは作業している自分だけでなく必ずもう 1 人内容を熟知している人がいることになります。
また、作業をしている中で自分が関わったことのない部分の理解が必要になった時でも、その時のペアは関わったことがあり、知識をすぐ共有してもらえるケースが多くありました。このように、誰か 1 人に知識が偏るということはなく、チーム全体としての内容理解が進んでいく感覚がありました。
- ミクロな情報や HowTo の共有ができる
ペアプロをやっていく中で、作業内容だけにとどまらず、こんないいショートカットがある。こういう時はこのツールを使うとよい。最近のトレンドは、、。など、ミクロな情報の共有ができ、作業スピードや知識の標準化が促進されました。
- 作業スピードが落ちて非効率?
ペアプロのよく言われるデメリットの一つに、2 人で作業することで情報共有の時間が頻繁に発生し、作業効率が落ちるということがありますが、結論から言うとそんなに作業効率が落ちている感覚はありませんでした。
ツールの熟練度や知識の差によってナビゲーターが、「俺が一人でやった方が早い」と感じてしまうことはあるかもしれませんが、先に述べたようにミクロな情報共有まで行えることでその差はペアプロをすればするほど埋まっていきます。
今回 2 週間という短い期間でしたが、2 週目にはあまりペアの作業スピード差は気にならなくなりました。
ネガティブな感想
一応ネガティブな感想についても書いておきます。結論は、「人間性の高いエンジニア」であれば問題なし。といったところです 😅
- 思想がぶつかりそうになることがある
2 人で作業するので、当然お互いに思っていることが違う場合も多々あります。加えて、「どっちも間違いではない」みたいなこともよくありました。議論することはとてもいいことだと思いますが、喧嘩はいけません。(してませんけどね!)
- 合わない人がいるとどうなるんだろう
今回そんな人はいなかったですが、もし、「この人とはウマが合わない」みたいな人がチームにいたらどうなるんだろうとふと思いました。
合わない人と一日中ペアで仕事をするわけですから…。
まとめ
実際にペアプロをやってみて思ったことをざっくり書いてみました。
個人的にはコードをかきながら(作業しながら)説明することが難しく感じましたが、「作業しながら説明できる=素早く現状を整理できる」ことなので、個人としてもコードを書くだけにとどまらず様々な作業に応用できるスキルにつながっていくと感じました。
そのほかにも全体的にポジティブな印象を受けたので、プログラミングに限らず、ドキュメント作成や、アーキテクチャ設計など様々なシーンで有効に活用していけばよいのではないかと思います!
皆さん、チームの生産性向上・自身のスキルアップのためにも、ペアプロやりましょう!
Discussion