こんにちは!
私は開発歴もうすぐ1年になりますが、最近ペアプロをすることが多く、こうすればペアプロが円滑にすすむな〜というのが分かってきたので、メモしておきます。
新人でも出来るちょっとしたことばかりなので、ちょちょっと読んで、実践してみてください。
ドライバ編
ペアプロでドライバをする時に私が一番大切だと思うことは、ペアが安心感を持ってナビゲーションできるように、また、無駄なところに気を使わないで済むように作業することです。ドライバは単なるタイピストではなく、ナビゲータがナビゲートしやすいように作業をする人だと思っています。
そんなドライバで気を付けたいことは以下の4点です。
1. 実況する
自分が何を打とうとしているか、なぜそれをやろうとしているか、など、考えていることを垂れ流しましょう。「〜をしたいので、ここでは、〜する感じにしたいですね〜」といった具合です。
また、「いけるかわからないですけど、一旦書いてみますね。」と言うように、お気持ちも一緒に表明すると、なお良いと思います。お気持ちを表明することで、ナビゲータの人は、書かれているコードを注意深く見れば良いのか、次の段取りについて考えても良いのかという判断ができるようになります。ナビゲータが無駄なく動けるように、ドライバの頭の中を8割くらいオープンにしましょう。「疲れてきたな〜」と言うのも、休憩の合図になるので良いですね。
2. 作業の順番・やり方で心配させない
作業において順序はとても重要です。作業がちぐはぐなドライバだと、ナビゲータは画面から目が離せません。例えば、ブロックのendを書かずに中の処理を書き始めるとか、変数名を変える時に、リファクタ機能を使わず手で全部書き換えようとするとか。ミスが起こりそうで、ナビゲータは安心できません。ソロプログラミングだと独自のやり方で良いかもしれません(おすすめはしません)が、ペアプロのときには、特に、ナビゲータに作業を見せるという意識で、誤解と疑念を生まないように手を動かすように心がけたいです。
3. TODOコメントを使う
実装をしていると、「ここは後で書こう」という場面もあると思います。ソロでは「後でしよう」で問題ないかもしれませんが、ペアプロでは、ドライバが想定していなかったことが起こる可能性が高い(ナビゲータが「ちょっとさっきのところ見せて」といったり、休憩が入ったりする)ため、「後でしよう」と思ってたことを忘れる危険も高くなります。その場合、「後で〇〇しよう」とナビゲータに言葉で共有するのは1つの手ですが、ナビゲータのワーキングメモリを奪ってしまいます。そのため、「後で」が出てきたら、TODOコメントを書くようにすると良いのではないかと思います。「# TODO: ここに〇〇の処理を書く」という簡単なコメントでいいので、残しておくと、安心ですね。
4. beforeのコードはコメントアウトでとっておく
コードの修正を行う中で、既存のコードを消したり、上書いたりする場面があると思います。ソロで作業するときは既存コードに直接手を加えて上書きする人も多いと思いますが、ペアプロのときは、既存のコードをコメントアウトで残しておいて、その下に新しいコードを書いておくのが親切です。既存のコードはどんなことをしていて、新しいコードは何が変わったのかを常に見える形にしておくことで思考の整理ができます。特に先輩プログラマーがドライバで、ナビゲータが若手(もしくは、その辺のコードが初見の人)の場合、既存コードを残しておいてくれるととても助かることがあります。気になるところは人それぞれなので、ナビゲータが気になった時に考える材料を残しておくのはとても親切だと思います。
ナビゲータ編
ナビゲータは、ドライバのミスに気付いたり、先回りして調査や処理を考えておいて、ドライバをナビゲートする人です。新人の場合、最初は先回りしてナビゲートすることが難しくて、ドライバの発言に相槌を打ちながら、画面を見ているだけになってしまうこともあるかもしれません。しかし、新人であっても、出来ることはあります。そして、それを続けていくと、ナビゲート力も上がっていきます。
そんなナビゲータをしているときに気を付けたいことは以下の3点です。
1. テーブル名やファイル名はすぐ参照出来るようにしておく
プログラムを書いていると、データベース名、テーブル名、カラム名、ファイル名、クラス名、変数名などなど、色んな名前が出てきます。ドライバはエディタの補完機能を使ったり、事前にコピーしたものを使う場合は安心してコードをかけますが、手でベタ書きするときは常にタイポを恐れています。そのため、実装中に出てくるテーブル名やカラム名、参照のために開く可能性のあるファイル名などはいつでもナビゲートできるようにしておきましょう。
2. 休憩を取る。時間を測る
ペアプロでよくあるのが、時間を忘れて作業してしまうことです。時間を測ってドライバとナビゲータを交代したり、休憩を取ることは重要です。ナビゲータが時間を測って、ペアプロのリズムを整えるように声掛けを行うようにしましょう。
3. 検索方法をナビする
ドライバが「書き方どうだったっけな〜」という発言をしたらナビのチャンスです。キーワードで検索し、書き方をナビゲートしましょう。まずは、同プロダクト内に似たような処理をしている箇所はないかを調べ、ヒットしなければ、公式ドキュメントも見ておきましょう。検索はショートカットでパッと出来るように準備しておきましょう。
その他
ペアプロの役割に関わらず、ペアプロをしている時にマストでやっておきたいことが1つあるので、書いておきます。
1. コードを書く前に進め方を共有しておく
「テストファーストで実装しましょう」とか「リファクタは後でしましょう」のように、どういう手順で実装していくかを最初に決めておきましょう。そうしないと、ドライバの作業とナビゲータの想定していた作業がずれて、ペアプロがうまく機能しなくなります。また、事前に進め方を共有しておくことで、自分たちの作業の進捗具合も把握できますし、あとどれくらいかかるかもだいたい分かると思います。
最後に
今回は、ペアプロで心がけてきたことをメモ程度に書き留めました。うまく機能しているペアプロはとても楽しいですし、ペアプロでドライバやナビゲータがうまくなると、必然的に開発力が伸びます。
今後もペアプロに関して思う所があれば、アップデートしていきたいです。