モブプログラミングのモブのときに意識していること
前提
- モブプログラミング歴 9 ヶ月程度
- 参加者は全員リモートワークで、最小2人、最大でも4人
- 自分がモブになるかドライバーになるかは事前に分からない(抽選)
- 何をモブプログラミングするかは事前にある程度分かっている
モブプログラミングをする前にやっていること
正直毎回予習しているわけではなく、ちょっと今日の開発は難しそうだなと思ったら準備する(場合もある)
- ドキュメントを軽く読んでおく
- 使用する言語やライブラリに慣れていない、使う予定の外部サービス(AWS, Google Analytics, Repro etc)に詳しくない場合
- 開発対象の既存コードを軽く読んでおく
- 該当箇所の既存コードを触ったことも見たこともない場合
- 大体の開発の進め方や議論して決めないといけないことをイメージしてみる
- 想定通りにならないことも多いが、なんとなく考えてみる
モブのときにやっていること
助ける
実装で悩んでいたら助ける
- 自分もすぐには分からないときは、ググって URL を共有する
- 例えば、言語、ライブラリのドキュメントや、既存コードで似たような修正を行ったプルリクとか。
先読みして助ける
- 何となくコードを書いていく流れが見えてきたら事前に障害になりそうな箇所についてググる、既存実装がないか調査するなど
- 例えば、文字列を数値に変換しないといけないことが明らかだったら、事前にググって型変換の良さげな方法を把握しておくとか。
進行する
悩みすぎて作業が止まってしまっていたら前に進める
- 命名、現段階では正解が分からない実装方針、個人の趣味の問題でしかないこと、誰かに質問した方が早いこと、議論の堂々巡りなど
- 大体は「とりあえず今はこれにして、後でまた考えましょう」とか「この人に後で聞きましょう」とか発言すると解消されることが多い
休憩をするように促す
- ドライバーをしていると、夢中になりすぎていたりするのでモブの人から休憩を提案する
- 疲労がコミュニケーションの軋轢になったりする
全員でやらなくてもいいことを切り分ける
- 何となく流れで単純な置換作業とかドキュメントの編集をしてしまうこともあるが、後で1人でできることなら後回しにしてモブプログラミングの効率を高める
質問する
ドライバーや他のモブの人と認識がズレている、何をしようとしているのか分からなくなったら質問する
- 分かったふりで進行してしまうとモブプログラミングをしている価値が下がってしまう
- 実は全員の考慮漏れで重要なことだったりもする(会話しながら考えていると、パターンの考慮漏れとかはけっこうある印象)
本筋と関係ないが、ショートカットキーや知らないコマンド、機能などがあったら質問する
- 流れ的に質問しにくい場合もあるが、けっこう学びになることがあるので質問してみると良い
- 逆にドライバーが自発的に説明するのは「いや、知ってるが...」みたいな空気になると嫌なので勇気がいると思う(相当マニアックなことなら良いが)
丁寧に会話する
口頭で説明できないことを無理に説明しない
- 図やコードで示したほうが早いことは、自分がドライバーでなくても一旦画面共有させてもらう等してコミュニケーションを効率化する
高圧的にならない
- 自分の方がよく理解している実装や分野の場合やコミュニケーションが上手くできないときに、もどかしい気持ちを感じたりするかもしれないが HRT を意識してコミュニケーションする。
記録する
- 考えたこと・学んだこと・やったことを書記として記録する
- モブプログラミングのログを残し、後から参照可能にする
- 決定事項だけでなく、思考や議論の過程とか、途中で悩んだこととかも書いておくと良い
- Scrapbox を使って全員が同時に読み書きできるようにしている
モブのときにやらない方がいいこと
- 画面を見てはいるが、一緒には考えていない、ついていけてない、同時に別の作業をしている
- モブプログラミングに参加している意義が薄くなる
- 音声を聞き取りにくい、画面の文字が見えにくい等環境面の我慢
- 遠慮せずに伝えたほうが全員のためになる。逆に指摘されたら素直に対応する。(音声の問題は自分でどうにもならないこともあるが)