この記事の対象
- ペアプロをやったことないのでやり方を知りたい
- ペアプロをやっているがうまくいかない
- ペアプロをやっているがイマイチ目的がわからない
上記に当てはまる人に対して何らかの参考になればと思い、書かせてもらいます。
かくいう私も、ペアプロ歴半年くらいで、まだまだ未熟なのですが、ようやくペアプロの面白みがわかってきたところです。
ペアプロとは
はじめにペアプロについて簡単に説明させていただきます。私が実際にやっていることベースで書いていくので、書籍に書いてあることとは多少乖離があるかもしれませんが、ご容赦ください。
1つのプログラムを2人で開発する
ペアプロ中は常に2人1組で、ドライバー(実装する人)とオブザーバー(見守る人※厳密には見守るだけではない)に分かれます。ドライバーはコーディングするだけでなく、これから何をしようとしているかなどを事細かにオブザーバーに伝えます。オブザーバーはドライバーが何をしようとしているかを聞き出します。また、ドライバーがハマった時などにオブザーバーは答えを教えるのではなく、ドライバーが気づきを得られるようなヒントを出すと良いです。
適当な時間で入れ替わる
基本的には20分〜30分で入れ替わるようにしています。ただし、後述するペアの組み方によってはここのバランスを変えるのはありだと思っています。
コミュニケーションをよくとる
ペアプロ中、沈黙が30秒続くのはよろしくないです。というか、気まずくなります。なので、ドライバーが喋っていないときは、オブザーバーがしっかりコントロールをし、何をしているのか?何に詰まっているのか?などを聞いてあげるようにします
小さな目標を設定する
ペアプロを開始する前に、ゴールの設定を必ずしましょう。慣れないうちは2~3時間(ペアを2セット〜3セット)で達成するような小さな目標が好ましいです。
こまめに休憩をとる
良いペアプロができているときは、とにかく疲れます。なので、集中が切れそうなときは遠慮なく休憩を要求しましょう!
相手と自分へのリスペクトを忘れない
最後に精神論的なことではありますが、お互いを尊敬しあいましょう。ペアプロは自分の技術をひけらかすための場所ではありません。また、できないからといって萎縮する必要もありません。お互いを良きバディだと思い、お互いを信じあい、目の前のタスクに集中するように心がけましょう。
ペアプロの目的
続いてペアプロの目的・メリットを私が享受している範囲で列挙していきます。
技術の共有ができる
まず一番最初に浮かぶのが教育的観点です。経験の浅いプログラマにとっては、1人でAPIを1本実装することはなかなかハードルの高いことです。ですが、ペアプロでペアがいることでそのような実装も可能になり、自信を醸成することができます。
レビューコストが減る
ペアプロをすることで、最低限の品質は担保されます。なので自然とレビューコストは下がります。実際にソロコーディングとペアプロで実装されたもので比較すると、ペアプロで実装されたものの方がバグやtypoは少ない傾向にありました。また、レビューできる人間が増えるという側面もあります。
新規参入者の受け入れコストが減る
プロジェクトに新規参入者が増える度に、命名規則やコーディングルールを教えることで毎回コストが発生します。しかし、ペアプロを実施することで常に、片方がレビューしている状態になれるので、この問題を解決することができます。
チームビルディングにつながる
実際、ペアプロをするまではプロジェクト内の人のことをあまり知らなかったのですが、ペアプロをしてからはコミュニケーションが活発になり、お互いのことをよく知るようになりました。
ハマる時間が短くなる
これは、プログラマなら誰もが通ったことがあることだと思いますが、新しい技術を使うタイミングや何か新しい処理を加えるときに、どハマりします。その時にペアプロだと、お互いに話をしているときにどこでハマっているのか閃いたり、オブザーバーが先回りして調べておくことができます。
ペアプロ≠コスト増
よくペアプロをやることで、単純にコストが倍になるのでは?という指摘を受けるのですが、上述のメリットのとおり、ペアプロとソロコーディングでコストの差は、ほとんどないと感じてます。なんなら、ペアプロの方が早いケースもあります。もちろん、ベテランだけのチームとかでしたらソロコーディングの方が早いでしょうが、一般的なチームであれば、おおむね当てはまると思います。
ペアの組み方
最後にペアの組み方について触れておきます。
まず、前提としてプログラマを3種類(ベテラン・中堅・新人)に分類するとします。基本的にはどの組み合わせで組んでも問題はないのですし、様々なペアを試してるべきではあるのですが、ペアの組み方で求められることや気をつけなければならないことがあります。その点について、特に気をつけるべき組み合わせを見ていきたいと思います。
ベテラン&ベテラン
この組み合わせには、この2人にしかできないようなハイレベルなタスクをやることが求められます。ただ、このペアは経験や実力があるが故に、こだわりすぎてしまうというリスクもあるので、どこかでそのような欲求を抑えることも求められます。
ベテラン&新人
この組み合わせには、新人がベテランに依存しすぎるリスクが潜んでいます。なので、新人がドライバーをやる時間を多めに儲け、アウトプットの場にするなど調整が必要です。
新人&新人
この組み合わせは自信を喪失させないように気をつける必要があります。あまり高度な目標を課してしまうと、達成できずに自信を喪失させてしまいます。なので、極力難易度を抑え、達成が見込めるようなタスクを課して、自信をつけさせることを目的とします。
まとめ
簡単ではありますが、私の経験ベースでペアプロについてまとめさせてもらいました。私自身、ペアプロを開始したばかりの頃はあまり乗り気ではなかったのですし、先輩と組むことが憂鬱な時もありました。ですが、今ではペアプロを本当に面白いと思っています。また新たな気づきを得たらここに追記したいと思っています。