モブプロをちょっぴりうまくやるコツ
こんにちは。フロントエンドエンジニア兼社内広報のとよしーです。
突然ですが、みなさん最近モブプロしていますか?
いきなりなんのこっちゃと思うかもしれませんが、今回はポッケの開発チームがモブプロ/ペアプロのときに感じた
・良い点
・難しい点
・ちょっぴりうまくやるコツ
をご紹介したいと思います。
● モブプロとは?
モブプロ(正式名称:モブプログラミング)とは、みんなで1台のPCを使い、相談しながら1つのソースコードを仕上げていくプログラミングの手法のひとつです。
2人で行う場合はペアプログラミング(通称:ペアプロ)
2人以上で行われる場合はモブプログラミングと言われております。
ポッケの開発チームの場合でのモブプロの基本的なやり方は、
ドライバーと呼ばれる役割の人が実際にソースコードを書きます。
ドライバー以外の人があーだこーだ言いながらソースコードの設計を進めていきます。
ドライバーは10分の交代制でやっております。
その際、モブプロの役割を順番に回していったり、時間を管理するツールとして、Mobsterを利用しております。
Mobsterは、
「だれがドライバーをしようか....(チラチラ)」
「(この人、熱中しすぎてもう30分もドライバーしてるな...)」
といったことを回避できるのです。
スムーズにモブプロを始めることができるので、モブプロをするときは必須のツールだと思います。
参考サイト:
● なぜポッケはモブプロをやっているのか?
元々、ぼくらの開発チームもスプリント内で各メンバーが別々のタスクをやる方式で進めていた時期がありました。
しかし、そのやり方で走り続けた結果、下記のようなことが発生しました。
・ある機能に対しての知識が属人化してしまった
・ヘビーなタスクの場合、抱え込んでしまう人がいた
長期的にチームの状態を見たとき、機能の知識の属人化が多くなることで担当している人に責任が重くのしかかることや、心理的に負担を感じる部分が多くなることがわかりました。
そこで、ぼくらは開発手法を、チームメンバーで一緒に1つのことをやるモブプロの手法に変えるアクションを取りました。
チームメンバーが一緒に1つのタスクをやることにより、開発スピードは落ちてしまうかもしれないが、プロダクトの品質や長期的なチームの状態を良くすることを優先するために、ぼくらはモブプロを採用しました。
● モブプロをやると良い点
設計フェーズの場合は設計思想がチームメンバー全員で共有できる
こちらの良い点としては、長期的にチームの状態を見たときに、
「この機能の詳しい仕様は〇〇さんしか知らないんだよな〜」
といったような属人化による問題を防ぐことができます。
機能を説明できる人が増えることで、1人に責任を負わせるのでなくチーム全体でプロダクトに責任を持つことができる
たとえば、スプリントレビューなどの機能を説明する機会のときに、チームで発表者の説明をフォローしたり補足できます。
1人に説明責任を集中させるのではなく、説明責任をチームメンバーに分散させることで、心理的安全性を多少なりとも高めることができると思います。
● モブプロだと難しい点
モブプロに途中参加すること
すべてのモブプロの時間に参加しているときには発生しない問題ですが、別のMTGや休暇が原因で、途中からモブプロに参加するパターンもあると思います。
その場合、途中からソースコードの内容を追うことに時間がかかったり、チームメンバーから説明を受けても、完全に理解できない場合があります。
その場合は、チームメンバーの説明やいかに途中から参加した人をフォローするかというところが重要になってきます。
問題にハマると、メンバー全員で作業を終了するタイミングを見つけにくくなる
開発をしていて、なにかしらの問題にぶち当たることってありますよね。
その問題にチームメンバー全員がフォーカスしすぎて、作業を終わらせるタイミングを見つけられず、
「いつの間にこんな時間に...」
となることもあります。
他の人がいて、集中しているときに
「もう終わりませんか?」
と言うのにもかなりの勇気がいりますよね...。
● モブプロをちょっぴりうまくやるコツ
1時間くらいたったら休憩をはさみましょう
1時間くらいたったら休憩を挟むようにしています。
ぶっ続けで開発を進めたい気持ちもわからなくないですが、モブプロをしている人全員がそう思っているわけではないと思うので、キリがいいところで休憩をとりましょう。
休憩を取ると、わからなかった点の解決策が急に思いつくこともあるので、無理しない程度に進めていきましょう。
ちなみにMobsterの機能のなかに、ある程度モブプロを回すと
「Take A Break」
と言われるので、そのタイミングで休憩を取ったりしています。
LiveShareやCodeTogetherを活用しましょう
VSCodeのIDEをお使いの方でしたら、LiveShareという拡張機能を使って、リモートワークでも一緒にソースコードをさわれる環境を作るといいと思います。
EclipseやIntelliJなどのIDEでも、CodeTogetherというサービスを使えば、ブラウザで一緒にソースコードを触れる環境になるのでオススメです。
昨今のリモートワークでの開発作業の進め方としては、ぜひ活用していきたいツールだと思います。
LiveShare
https://visualstudio.microsoft.com/ja/services/live-share/
CodeTogether
https://www.codetogether.com/
ちょっとした雑談&チェックイン・チェックアウトを取り入れましょう
リモートワークであればモブプロ中はずっと通話状態にありますので、多少なりとも緊張状態が続くと思います。
なので、所々にアイスブレイク的な意味でちょっとした雑談を差し込むのもオススメです。
また、モブプロを始めるとき、終わるときに※ チェックイン・チェックアウトを入れてもいいでしょう。
今日のゴールを確認したり、モブプロ自体の軽いふりかえりをするのもいいでしょう。
※ チェックイン・チェックアウトとは
● まとめ
以上、モブプロの良い点・難しい点・うまくやるコツを紹介いたしました。
モブプロがなんとなくうまくいっていない、雰囲気が良くないと感じている方は、ぜひトライしてみてはどうでしょうか。
読んでいただきありがとうございました。