ペアプログラミング、若手エンジニアと中堅エンジニアの場合

こんにちは。 入社2ヶ月目、エンジニアの木村です。

「ノウハウ共有の手段としてペアプログラミングを取り入れたい」というリーダー小澤さんの言葉から、ペアプログラミングをすることになりました。

学生のころからペアプロには興味があって、ペアプロの本も読んだことがあり、実はペアプロは以前からやってみたかったんです。

入社早々にこんなチャンスに恵まれるなんて!小澤さんの口からペアプロというワードが出た時は胸の高鳴りを抑えるのに必死でした。

そいうわけで、僕と小澤さんが最初のペアとして実践してみることになりました。

env

環境はこんなかんじです。シンプルですね。お互いの画面が見やすいように自席からオフィス内のカフェテリア席(夕方で外が暗くなっちゃってますが、昼間はいい景色です)へ移動してペアプロ開始です。

基本的にドライバ(キーボードで打ち込む人)は自分のパソコンで作業し、ナビゲータ(もう一人の人)は横から覗き込むスタイルです。ナビゲータが我慢できなくなった時は「ちょっと貸してみ!」ってドライバのPCを取り上げて役割を交代します。

若手ドライバ、中堅ナビゲータ

当初は僕がドライバで小澤さんがナビゲータになって2時間でやってみようと始まりました。

ペアプロの教科書に書いてあるんですが、ドライバは常にやってることや考えていることを耐えず話し続けることを推奨されています。実際やってみるとその重要性が実感出来ました。まず、フィードバックがリアルタイムで返ってきます。プログラムの最初の1文字を書き出す前の思考の段階から相手に伝わるので、ナビゲータがそれに反応して思考の方向性から補正してくれ、ゴールへの最短距離へ突っ走れる感覚がありました。また、ナビゲータを退屈させないということにも役立ちました。沈黙の中、横でカタカタやってるのを眺め続けるのはつらいものがありますよね(実際、少しでも黙ると、小澤さんは退屈して自分の作業を始めてしまうこともありました)。

また、安心感とか自信のようなものを感じながらのプログラミングができました。新しいプロジェクト、まして新しい会社で、新しいレビュアと、新しい言語、新しいフレームワークでの開発となると、一人でプログラミングしているときは、これでいいのかな〜と確信が持てない中書き進めることになりますよね。ペアプロでは、ナビゲータが横で頷いてくれるだけで、そういった不安感のようなものがかなり軽減されます。

さらに、わからない時に直ぐに教えられた・教えてもらえたのはよかったです。そんなのペアプロじゃなくても直ぐに聞けばいいじゃんという人もいるかもしれません。しかし、わからないことがあればいつでも教えますと言われていても、別の作業中の人に質問するコストって大きいですよね。質問の背景の説明からしないといけないし、その人が忙しいのかそうでもないのかとか。席にいなかったりとか。ペアプロでは常に背景を共有しながら作業することになるので、そういった問題はなくなります。

気をつけるべき点だったのは、いつもどおりのプログラミングを心がけるということでしょうか。横で人が見てると、なんかカッコつけたくなるのは私だけでしょうか。エディタで、いつも使わないようなうろ覚えのショートカットをつかって、あらぬ結果を招いてしまったり、焦るあまりに開いていたウィンドウを見失ったりと、いろいろありました。人が見てるからって気にせずに、自分のスタイルを貫いたほうがいいです。そのほうが、ナビゲータからより便利なツールを教えてもらったりとか、得るものが増えそうだと感じました。

中堅ドライバ、若手ナビゲータ

2時間をやり終えて、次は小澤さんがプログラミングをしてるところを見てみたいと僕が言ったところ、休憩を挟んで更に2時間、役割を交代し、小澤さんがドライバ役となって僕が前日に書いていた別のコードのリファクタリングをすることになりました。横で人のプログラミングを見ていると当然のことながら、色んな発見がありました。

まず、いろいろと捗りそうな、自分でも真似したいツールやその使い方の発見がたくさんんありました。ツータッチぐらいで一瞬で画面が変わってしまい、「い、いまなにやったんすか!?」ってやつです。例えば、画面に一瞬でCotEditorが出てきた時は、いまどうやってそれを開いたんですか!ということがありました。

また、いろんな場面での気持ちの持ち方が自分には無いなと思いました。気持ちの持ち方なんて、ペアプロ以外じゃあんまり伝わってこないです。プログラミングを進めていると、急にテストが通らなくなったとか、急にエラーを吐くようになってしまったりすることがありますよね。調子に乗ってあれこれ書き進めた後だったり、元に戻しても戻んない!なんて場合は慌ててしまいませんか。泣きたくなりますよね、あるいは。先輩のプログラミングを見ていて、「こんな時はまずココを見て、そんで…」と淡々とした落ち着きが伝わってきました。たしかに、慌てても何も解決しないわけで。

あとは、落とし所の判断の仕方が参考になりました。プログラミングっていろんな方向から評価されますよね。見た目、品質、性能、書き上げる早さとか。しかもそれぞれトレードオフがある。どこかでスライダのつまみの場所を決めないといけないわけです。「あんまり無理せず、ここらへんにしときますか。」っていう判断って、価値観によるので組織とか個人によって違ってくると思います。その判断のプロセスがリアルタイムで横から見れたのはよかたです。

ナビゲータとして心がけたのは、ドライバにおいていかれそうになったら常に質問することです。小澤さんの端末の画面がめまぐるしく変わるので、何回か置いて行かれそうになりかけたのですが、そんなときは「いまは〜〜をしようとしてるんですよね?」と絶えず質問していきました。これも教科書に書いてあって、実践してその重要性に気づいたことの1つです。

最後に

今回はさしあたって1回やってみての感想をお送りしました。これで一人でやった場合とトータルでどっちが効率的かとかはまだわかりません。

ただ、一人のプログラミングに戻ってもペアプロで得たものは役に立っている気がします。困った時、あの人ならあーするだろう、こうするだろう、こう考えるだろうというのがイメージしやすくなりました。

ペアプロがもっと広がっていくといろんなメリット・デメリットが出てくると思います。得られたノウハウはまた今度お伝えします。