By

第一回モブプログラミング

MobProgramming

こんにちは。 エンジニアの平形( @bigplants )です。
2018年1月よりビジネスバンクグループにJoinしました。
よろしくお願いします。

今日は、弊社で実施したモブプログラミングについて話したいと思います。
写真は実際のモブプロを実施した開発現場です。


モブプログラミングって何?

モブプログラミング(以降モブプロ)とは、
複数の開発者が一つのプログラムを実装するやり方の事です。ペアプロの複数人バージョンといったところでしょうか。
1台のPCの画面を大きめのセカンドディスプレイに映し、そのPCで1人(ドライバ)がプログラミングを行います。その画面を他の人(ナビゲータ)は見ながら考えて指示を出します。


今回のお題

今回はパフォーマンス改善の調査を、お題としました。
パフォーマンス改善が全員で挑むお題として現在の僕らのチームには適していました。
パフォーマンス改善は前提の業務知識が必要ないのでスタートし易いと考えたのです。

例えばバグフィックスの場合だと、最近入ったメンバーと以前からいるメンバーの間に前提知識の差が生まれてしまいます。
そうすると、全員が参加しづらい状況になってしまいます。
なるべく全員が取り組みやすいものにしたかったのです。

で、今回の課題は何かと言うと、
「毎朝、一括メール配信バッチを契機に届くMackerelのアラートの件を解決する」です。
毎朝メモリを逼迫する問題が起こっており、
NewRelicではパフォーマンスが異常に遅く、1JobでDBに対して大量のクエリが発行されている事が分かりました。
今回の課題は、そのクエリを少なくしていかにJobの完走までの時間を早くできるか?です。


どうやってやったのか?

意識したのは必ず全員が手を動かすようにする事です。
その為にタイムキープをしっかりやって15分毎にドライバを交代しました。
時間は2.5時間を予定していました。


実際やってみてどうだったのか?

良かった事

まず、議論が活発に行われた事です。画面で実際に手を動かしながら議論が行われるので、実行に移すのがすごく早いです。
それぞれの経験値から出てくる意見が調査のアプローチを多様なものにしました。
それによって、効率的に調査が進みました。
時間の区切りとしても15分は適度な緊張感を与え、ちょうど良かったです。

あと、実施する前に考えつかなかった良い点が、それぞれのメンバが持っている調査手法や考え方が共有できる事です。
調査のやり方は何通りもあり、その中には効率的なものもあれば非効率なものもあります。
限られた時間の中で調査をより前へ進めようとする気持ちがみんなの中に芽生えていました。
このやり方のほうがいいかも!こっちから見てみよう。といった意見が活発に挙がりました。
その中には、「いままで苦労してたけどそんなやり方あったんだ!」といったものも幾つかありました。
非常に得るものが大きかったと思います。

そして何より、成果が出た事が良かったです!
問題のコードまで特定し、改善方針までその場で決定する事ができました。
もちろん既にメンバー内で一部始終は共有できているので、改めて調査の報告や合意を取る必要はありません。

この手の調査は一人で行うと色んな壁にぶち当たり、心が折れそうになります。そして孤独。
一人で挑んだ場合は、丸一日かけてグッタリしながらやっと成果が出るかどうか?というところだったと思います。

みんなでやれば怖くない!

あとは、純粋に「楽しい!」というのが大きいです。

次回に改善したい事

そこまで問題では無かったですが、一つのPCを交代で触っていたので、キーバインドが違ったりで若干手間取る場面がありました。
ドライバが交代する時にPCも一緒に切り替えても良かったかもしれません。


まとめ

モブプロは一見、リソースを過剰に割いているように見えますが、非常に見返りがあってやって良かったなー。と感じています。
費やした時間は十分に元が取れる程、成果があったと思っています。

とても楽しかったので、モブプロを開催したくて次のネタをどれにしようか考えていますw
また新たな発見があったら本ブログにて報告します。

一度あなたの現場でも、モブプロを試してみるのはいかがでしょうか?


エンジニア募集中!

ビジネスバンクグループではエンジニアを募集中しています。

弊社が採用しているテクノロジや開発環境に興味を持った方は、 ここから是非エントリー を!