フクロウラボのモブプロはこうやっている!現役エンジニアに話を聞きました!
フクロウラボエンジニアチームでの働き方を紹介します。今回はペアプロの取り組みについて,マネージャーの高木さんと入社4年目の川原さんの2人にお話をうかがいました。
高木さん
ソフトクリームをこよなく愛するエンジニアです。
新卒で独立系総合ソフトウェア企業に入社し大学のシステム開発に携わる。SES会社に転職しECサイトの開発・保守・運用を担当。2018年、フクロウラボに転職。
川原さん
ゲームが好きなエンジニアです。
新卒でメーカーに務めた後、退職。エンジニアを目指し、テックキャンプで基礎を学び、卒業後にフクロウラボに転職。
── まずはじめに、今回紹介するペアプロの概要について、始めた動機や背景について、教えてください。
高木 そうですね。タスクの完了までの開発期間が割と長期化したりとかプルリクで結構指摘が多くなっているという悩みを川原さんが抱えていました。これを何とか改善できないかと考えた結果、「ペアプロをやってみよう!」という話になりました。
── 今回のペアプロの全体の期間など、具体的には、どういう手順で進めていきましたか?
川原 今回のペアプロは、全体で2週間くらい取り組みました。ペアプロを行うタスク以外にもお互いタスクを持っていたというのもあり、だいたい1日平均4時間をペアプロで進めるようにしていました。
── なるほど。今回のペアプロで実装を進めた機能について、簡単に教えてください。
川原 今回のペアプロで主に実装進めたのは、登録情報編集画面の実装です。基本的にはTDDで進めようというのも話していたので、テストの追加をしてから、その画面の実装を進めるというスタイルです。高木さんにナビゲータになってもらいアドバイスをもらいながら、自分がドライバーとして実装を進めていきました。
── ありがとうございます。ペアプロを進めていくにあたって、大変だったこととか、苦労したことはどんなことでしょうか?
高木 そうですね、実は、最初は、普段出ないようなエラーが出るというのが頻発しました。これは、川原さんの開発環境が状態あまり整っていなかったのが原因でした。なので、まずは環境整えるところから始めました。
あと、細かい話ですが、リモートでペアプロを行っていたので、画面に表示されるコードの大きさとか割と重要なんです。ドライバー側のみで最適化すると、ナビゲーターとしては、見にくいというシーンが結構ありました。リモートでペアプロをする上で、表示周りで、お互いやりやすい環境を整えるということに、最初は時間を使いました。
川原 環境構築の部分では、普段、高木さんが行っているやり方をなるべくそのまま教えてもらっていたのですが、自分ではこれで良いと考えていた部分も、高木さん的にはあまりイケていないというような部分もあり、そういった感覚のすり合わせができたのは良かったと思いました。高木さんの開発環境のノウハウを教えてもらって、初めて自分の環境があまり整ってなかいことに気付ける部分があって、最初は環境構築に時間を費やしましたが、それだけの価値はあったと思いました。
── 開発環境を整えてからは、スムーズに開発をすすめることができましたか?
高木 そうですね、僕が思い描いていたやり方でだいたいできたかなと思います。あと、例えば、何か問題があってググる時なども、検索結果のどの情報に注目すべきといったところも、話しながら進めていったので、普段話すことのないノウハウも共有できたと思います。
川原 高木さんの言う通り、だいたいスムーズにすすめられたと思います。テストでモックをどうするかなど、ちょっと悩ましいテストにぶつかった時は、2人で悩むシーンはたまにありましたが、そういった事以外では、基本的にはスムーズに言ったと思います。
── なるほど。開発環境や普段話さないことって重要ですよね。ペアプロをやってみて良かったと思うことを教えてください。
川原 はい。やはり単純に知識がついたところだと思います。正直、ペアプロ前は、テストに関してあまり自信がなかったのですが、高木さんとペアプロを進めて、そこら辺の知識がついたという実感があります。あとは、課題にはまったときに、どのように解決していくのかっていう高木さんのやり方が、すごく自分にとっては財産になったかなと思ってます。
課題の乗り越え方が、それまでの自分はいきあたりばったりな感じでしたが、高木さんのやり方は、理論立てて洗練されてると感じました。今は、理論立てて考えることを意識できるよう高木さんの考え方を真似しています。
これもあるあるですが、エディターの設定とか、細かいTipsや便利機能なども教えてもらえたので、その点も勉強になったかなと思ってます。
Rubymineの画面のイメージ(コードはOSSを使わせていただいています。)
高木 そうですね、僕にとっても収穫は結構ありました。自分だったら、やらないようなクレバーな操作を川原さんがやることもあって、ナビゲータとしてやっていても、「これ取り入れよう!」と思うようなこともたくさんあったので、非常に良かったです。例えば、Git Krakenというツールでのリベースのやり方。Git Krakenだとうまくできないリベースの操作があったので、僕がいつもコマンド行っていた操作があったのですが、川原さんがGit Krakenで操作しているのをにて、「コマンドじゃなくてもこの操作できたんだ…」という発見などもありましたね。
あと、後半になってくると、僕がやってほしいと思っていることを、何も言わずに勝手に川原さんがやってくれるようになったので、そういうところで成長をすごく実感できると嬉しですよね。
GitKrakenの画面イメージ
── ナビゲーター、ドライバー共に学びがあるといういい話が聞けました!ありがとうございます!逆に、「この辺りがまだ課題だな」と感じる部分はありましたか?
高木 割とその時間をあまり気にせずにやっていたので、想定以上に時間かかってしまった部分がありました。その辺りに関しては、期限を決めてなどもっとちゃんとタイムスケジュールを管理すべきだったかなと思います。
── なるほど、ペアプロでも時間を意識するのは重要そうですね。他に、次回ペアプロやるとしたら工夫できることはありますか?
川原 今回、エディタはRubyMine、dockerでサーバーを立ち上げて、単純に画面共有で、作業を進めていました。各々がローカルでdockerを立ち上げて動作確認をするというスタイルです。このやり方だと、github経由でその時書いているコードの共有し、各々の環境で実行して試すという流れになってしまうので、もっとシームレスにできると思いました。エディタはVSCodeに統一し、ペアプロする際はLiveShare機能で行うというのが、やはり必須かなと感じました。
── エディタは個人によってこだわりがある部分かもしれませんが、ペアプロ時はVSCodeに統一した方が良さそうですね。
── 最後に、今回のペアプロ全体を通しての所感などを聞かせてください。
川原 そうですね。定期的に何かペアを変えて行うと、より学びが多そうな感じがしています。どっちかっていうと自分はビギナー寄りなので、他のメンバーとも積極的にペアプロしていきたいと思っています。
高木 ペアプロ全体を通してで言うと、僕は、休憩のタイミングは結構大事だと思いました。リモートでやっているといつの間にか長時間やってしまっていることがあったのですが、それだと、やっぱ疲労感を感じちゃうんです。適度に休憩を挟む心がけをして、心地よいテンポで進められるようにしたいですね。長くても2時間に1回は休憩は絶対必要です(笑)
あと、テストの待ち時間やDockerが調子悪くて再起動している時間などに、スキマ時間にする雑談も割と役立った気がします。
川原 たしかに。「Rubymineのこういう機能あるよね」みたいな、その時の実装とは全く関係ない雑談で教えてもらった便利機能が、今では欠かせない機能になったりしていますね(笑)
高木 うん。あと、ショートカット周りの話とか。そういった待ち時間に「このショートカットの設定はしといた方がいいよ」という共有を結構した記憶がありますね。
川原 待ち時間での雑談でいうと、他にもあります。普段のコードレビューでのGithubでのプルリクの見方の話とか。話をしていると、僕の見方と高木さんの見方が割と違ったりとかして、新しい発見がありました。
── なるほど、雑談って大事ですね!むしろ、雑談の方が学びが多かったりします?(笑)
高木 うーん、かもしれないです。お互いの操作を見ていて、気になった操作があった時の「それ、何ですか?」って聞いたところからの学びは多かったですね。わからない事を聞くのは確実にあとで自分の肥やしになるので、"少しでもわからない事があったら積極的に聞く”というをお互いに意識するようになっていきました。
── ああ、非常に良い話ですね!そういったところも含めてペアプロは、お互いに相乗効果があるのですね。些細なところに学びがあるとうのも興味深いです!
本日はリアルなお話、ありがとうございました!
今後も積極的にペアプロやモブプロを行って行きたいですね!