昨年冬からチーム内でペアプロ/モブプロを取り入れています。
半年経ってどんな感じかざっと書いてみました。
きっかけ
- 所属するチームで業務の属人化が問題となっていた
- このシステムこの機能はhogeさんしか改修できない、など
- メンバーの退職や異動により、開発を担当できる/障害対応ができる人が一人だけの機能、システムが複数...つらい
どうなりたかったか
ペアプログラミング、モブプログラミングの効果には様々がありますが、私達のチームでは、ペアプロ/モブプロの高い教育効果で少しでも属人化問題を改善したい、ということで始めた
まずは1人から2人へ...
参考にしたもの
※ペアプロ、モブプロの詳細はこの投稿では割愛
- WEB+DB PRESS Vol.102の記事「はじめてのペアプロ/モブプロ メキメキと人が育ち,プロダクトの質を高める」を主に参考にしてやってみた
- TAKAKING22氏のプレゼンテーション
企画部門から突っ込まれたりした
「予定とか遅延したりしないの、工数が余計にかかっちゃうじゃん」とか言われたが、このままだとまずい現状やペアプロの効果を伝えて了承を得た
どんな感じでやっているか
まずはWEB+DB PRESS Vol.102の記事「はじめてのペアプロ/モブプロ メキメキと人が育ち,プロダクトの質を高める」を使用してペアプロ/モブプロについてチーム内で情報を共有した
できるだけペアプロで
- 「チーム全体への知の共有より」も、「まずは目下起きている属人化問題を改善したい」ということで、モブプロではなくペアプロから始めた
- 毎日必ず、ではなく、ゆるく
- 午後のxx時~xx時で場所はどこどこで、とか固定はしない
- デイリースタンドアップで皆でタスクを共有するとき、やれそうなものを見つけては開催
- 特に属人化を解消したい機能、システムを優先して
- やらない日もある
週一モブプロ枠
- 毎週金曜に90分ほど場所と時間を確保
- ネタをメンバーから持ち寄り
- 実装や設計などのネタがない場合
- GCPでstackdriverの設定をいじる作業だったり
- ペアプロ/モブプロのふりかえりをやったり
半年やってみた感想
- 早期に高い教育効果を出た
- 属人化問題がだいぶ解消された
- コミュニケーションにクセのある人にはペアプロをアサインしづらいかも
- 今やっているメンバーは皆人当たりがいいので、彼らの人柄に恵まれている、救われている部分もあり
- 辛辣な物の言い方をする人間にムカついちゃうので
- 暗黙的な知識の共有がいい
- 参考にした記事にもあったが、他人のPCの操作を見るのはとてもおもしろい。「あ!こういうコマンド使っているんだ!」とか学び、気付きがたくさんある
- 個人的にはこれがけっこう良いと思っている
- チームメンバー同士の交流につながった
- いつもは別々の機能、システムを担当しているメンバー同士がコミュニケーション取るようになったり
- コードレビューが開発のボトルネックにならなくなった
- WEB+DB PRESSの和田卓人氏の記事の通りだが「github(gitlab)のおかげで複数の機能の並行開発を行なえるようになった結果、プルリクエストのレビューがシステム開発の在庫問題となった」ということで...
- 今後はそこを意識して継続して取り組んでいきたい
- 上長や企画部門の理解、了承が得られるなら、ぜひやったほうがいいと思う
- やってよかったペアプロ/モブプロ
メンバーから挙げてもらった感想(ちゃんとまとまってないですがざっと以下に)
- 仕様説明する際、コードレベルで説明できるのがいい
- 実装する際、レビューの効率もいい
- 定数の定義をどこにしたらいいとかすぐ気づける
- タイポ減った
- マージリクエストをみてレビューするより、集中してレビューできる
- もっとコード量が多い開発でやれば、プルリクエストという在庫低減には役立つだろう
- コードレビューの時間が一切かからない
- 知識量に差がある機能でドライバーをやって、かなり勉強になった
- もっと経験を積んで知識をつけたうえでペアプロをやったらもっと効率良く進められそう
- 教えることで自分の持っている内容が整理される
- 設計書を見ながらコードを見るのがちょっと大変だった
- 進め方決めるのが最初困った
- プログラムのイメージが湧いてなかった
- 普段使ってないPCでやったときはちょっとつらかった...
- ナビゲータが指示しすぎると、ドライバーがただただ消化してしまうことに
書いたはずのことを忘れる! - ナビゲータを信頼して安心しすぎていると...? → コメントで意図が伝わるように
- リファクタリングするときは事前にソースを共有しておいて、別のタイミングでモブプログラミングする、など一度書いて直したいなと思う時、みんなで直せたらうれしい
- 眠くなる
- 自分がぜんぜん知らないものだと
- 疲れる!
- 終わったあとの倦怠感
- 二時間くらいが最長
- やっているときは気にならないが、終わったあとにどっと疲れる
- 半強制的に、時間を通知して休んだほうがいい
- ドライバーは集中するので、タイムキーパーはナビゲーターの役割か?
- vscode live shareとか使ってリモートでもやりたい
- 正対したほうがいい
- 大きいテーブルで大きなディスプレイを斜めで見てやるのもちょっとつらい
- 目的を事前に参加者で共有しておくと、より有意義になりそう
- 仕様共有なのか、品質上げるためなのか
他のチームもやり始めた
- 自分たちのチームのシマに大きなディスプレイを確保できなかった、ということもあるが「うちはペアプロ/モブプロやっているぜ!」アピールもしたく、フリースペースの大型ディスプレイ使ってやったり、敢えて目立つ場所でやっていた
- ちょいちょい別のチームのメンバーが参加してくれるたりした(そのときだけペアプロがモブプロになる)
- 3ヶ月以上経った頃、他のチームもモブプロやっているところが出てきた!
これから
- ベトナム オフショア開発メンバー/北海道 ニアショア開発メンバーがチームに所属しているので、リモートでもペアプロ/モブプロやりたい
- ペアローテーションしていきたい
その他
楽天のモブプログラミング見学してみたい