fotowa開発チームでアプリケーションエンジニアをしている佐藤です。
少し前に、fotowaで規模が大きい新規機能の実装を、初めてモブプログラミング(以下、モブプロ)で行いました。 モブプロの詳しいやり方は色々なサイトで紹介されているので割愛して、やってみて感じた、メリット、デメリットを中心にお話します。
何を目的にしたのか
今回モブプロをしようとした目的は以下になります。
- 新機能における業務知識の共有
- 規模が大きいかつ、技術的に難しい問題に取り組みやすくする
- コードレビュー対応の工数を減らす
- メンバー間の知見共有
やってみてわかったこと
メリット
- 新機能における業務知識の共有
- 設計から実装まで全員でやるので特定の人物しかしらないという仕様がなくなりました。
- どうしてこのような設計、コードになっているのかが共通認識として持てました。
- 難しい問題に取り組みやすくなる
- 規模が大きい新機能を1人でやるのは心理的ハードルがものすごく高いと思います。モブプロを行うことで、チームでやっている感が強まり心理的ハードルが下がりました。
- コードレビュー対応の工数を減らす
- 設計や実装について、参加者全員と合意しながら進めるので、実質コードレビューが不要になり、対応工数が大幅に削減されました。
- メンバー間の知見共有
- メンバーそれぞれで、得意な技術領域、苦手な技術領域が異なるので、色々な知見、技術的なキャッチアップができました。
デメリット
- 疲れる
- 長時間議論を行いながら設計、実装をするので疲れます。モブプロをやった日は、それ以外の業務がほとんどできないぐらいでした。
- 他チームからくる対応依頼のレスポンスが遅くなる
- 集中してやっているので、チャットに気づかず、レスポンスが遅くなるときがありました。また会議室で行っていたこともあり、直接来ての依頼もしづらいと思いました。
実際に行った事
準備
- 会議室
- チームメンバー全員が集まり、1つのディスプレイ or プロジェクタの画面が必要なので、会議室を抑えました。
- 大きいディスプレイ or プロジェクタ
- 同じ画面を見て作業するため、大きなディスプレイがあるとよいです。大きなディスプレイがない場合はプロジェクタでもよいと思います。
- ホワイトボード
- 設計や議論をするときにホワイトボードがあると何かと便利でした。
やったこと
- 1回を2時間で区切り、午前中1回 ランチ 午後1回、の1日計4時間
- 疲労、他業務、やったことの復習、次にやる実装の予習を行うと、1日4時間モブプロを行うのが限度でした。
- DB設計や、API設計などコアな部分は予め設計、議論のたたき台を作る
- 何もない状態でいきなりコア部分の設計、議論をしようとすると中々まとまらず時間だけが過ぎる恐れがあったので、軽いたたき台を作りました。これにより無駄に時間をとられることなくモブプロできました。
まとめ
今回、モブプロを初めてやりましたが大満足な成果がでました。 細かいところを作り込む場合というよりは、プロジェクト初期段階で、業務知識の共有、技術的な難易度、とかをチームで共通認識を持ってある程度なところまで取り組むのに向いていると思いました。 有効に使える場面がくれば、またモブプロをやりたいなと思っています。
ピクスタでは一緒に働く仲間を募集しています!