リンクアンドモチベーションで、エンジニアをしています、白倉と申します。Ruby on Railsによるバックエンド開発を担当しております。
弊社では、複数チームでプロダクト開発をしており、ペアプロを実施しているチームが存在します。 頻度や方法は、チームによってまちまちであり、私自身、しっかりペアプロ!という時間の使い方はしてきませんでした。 今回は、たまたま集中的にペアプロをやる時期(1週間の作業時間の9割以上)があり、そこで初めて気づいたことを記事にしようと思います。
前提
ペアプロとは、2人で1つの画面に向かいコーディングしていくことを言います。 ドライバとナビゲータという役割に分かれ、定期的に交代しながら進捗していきます。
今回、集中的にペアプロを実施した理由としては、性能に関わる実装タスクがあり、お互いの知識と経験をいい感じに補完しながら作業できるのではないかという期待があったからでした。
※具体的には、以下の二人でペアプロを実施しました:
- SREにてインフラの知見があり、イネーブリングチーム異動に伴い現状の開発プロセスを経験したいメンバー
- 対象領域の実装経験は数ヶ月あるが、性能観点での調査の経験があまりないメンバー(is 私)
方法
ペアプロ中は、Gatherを用いて常に話しつつ、RubyMineのCode With Meを使いながらコードを共有していました。相手のカーソルを追跡してくれるので、お互いやろうとしていること/伝えたいことは分かりやすかったです。RubyMine上には、画面共有/通話/カメラの機能もありますが、こちらは使用しませんでした。
※弊社ではこの記事のようにGatherを中心に、リモートワークにおけるコミュニケーションをしています。 ハッカソンを実施した模様はこちら。
気づいたこと
リアルタイムな相談/知識の継承という文脈で語られることが多いペアプロですが、今回はそれ以外の学びについて書きます。
共同制作という視点になる
日々の作業中、以下のような問題が出てくることがあると思います:
- 既存のやり方を踏襲すれば一瞬で解決するけど、あるべき姿はこれだろうかと迷う
- 解決策が複数あり、またメリット/デメリットあり、どちらにすべきか迷う
2人でこういう問題に向かう場合、安易な解決策に飛び付かない力学が働く気がします。コードに対する責任感が1人の時以上に芽生える気がしました。
寄り道の話をする
必ずしも目の前の作業に関係のない話を結構した気がします。 プログラミング母語が静的型付け言語(Java)という共通点があったこともあり、Rubyのここがわからない、Spring Bootならこう書く云々。 使用ツールやら場面ごとのアプローチ方法やら、勉強になりました。
ここ難しいなー自分の頭の問題なのかなーと思っていたところが、他の人も実は同じように感じてたりして、自分を責めすぎないようになった気もします。
沼にハマりにくくなる(ハマったけど)
以下のパターンに、ハマりにくくなる気がしました:
- うまくいかず、後になってなんで気づかなかったんだよ...というミス
- →2人いるとどちらかが気づいたりする
- わからないから調べようと思って、webや既存コードの海にいき、そのまま遭難する
- →2人で言葉にして確認しながら進めるので、変な方向に行きすぎない。頭だけどんどん回ってしまうのを防いでくれる
アンラーニングの機会になる
目下の作業は少し慣れてきて、思考停止でできるようになっていたことも、そもそもの本質的な問いをもらい、あれ、自分全然分かってなかった、分かっていたと思っていたけど、もう一度ちゃんと調べ直さないと、という機会や問いをもらうことができました。
最後に
総じて楽しく仕事ができていた気がします。朝〜夕方までやっていた日は、流石に疲れました笑 上記のタスク終了後も、時間を見つけて、ペアプロするようにしています(と言いつつ最近できていない)。 適当に話しかけて実施するのではなく、どの時間帯にペアプロをできそうか、朝に相談することを意識しています。
また弊社には、バックエンド会という、プロダクト及び開発グループの横断組織がありますが、そこでもモブプロ的に課題解決を行なっています。
(バックエンド会に関するブログ記事はなさそうですね... フロント会 のバックエンド版というところでしょうか。誰か記事書いたりするかな😃)
以上です。読んでいただき、ありがとうございました。