内藤 裕二/ 2021年 12月 24日/ 技術

今日はクリスマスイブですね。
札幌は半端に気温が高いせいか、道路がボコボコになっていて、自動車を運転するのも歩くのも大変です。

先日のブログでご紹介した通り、現在社内のチームではモブプログラミングやモブワークを取り入れてみています。
いったんチームで参加していたプロジェクトの実装が落ち着いてきたので、社内でまとめをしてみました。

チームとモブプロのやり方について

まずはチームについて。
メンバ3人と、内藤がリーダ/マネージャとして入っています。

弊社は全員フルリモートですので、いきなり全員で共同作業を行うのは難しい状況でした。
そこで、慣れてくるまでの間は毎日13:00から15:00まで、慣れてきてからは水曜日と金曜日の13:00から15:00までをモブワークの時間と設定しました。
基本的にはオンラインで接続し、込み入った課題がある場合は事務所に集まる、という方針をとっています。

ツール

モブワークで使用しているツールやサービスをご紹介します。

Google Meet

弊社は会社としてGoogle Workspaceを使用していますので、ウェブ会議サービスはそのままGoogle Meetを使用しました。
遅延等なく、快適に打ち合わせができています。

Visual Studio code + Live Share

実装の共同作業開発に際しては、Visual Studio Codeに拡張機能のVisual Studio Live Shareをインストールして行いました。
ドライバー(手を動かす人)のカーソルを自動で追跡してくれたりと、モブプログラミングを実施するにあたって必要な機能は一通りそろっていると思います。

CHRONOGRAPH

モブプログラミングを行う時は、手を動かす人を15分単位で交代します。
最初は誰かがスマホで計って声がけしていたのですが、タイマーの仕掛け忘れや、議論に白熱するあまりアラームに気づかない、等の問題が出ました。
そこで、後期では、CHRONOGRAPHというサービスを使用して、ストップウォッチを全員で共有しながら進めました。
あと何分くらいか、を含めて全員で同じ時計が参照できるので、きちんと時間で区切りができるようになりました。

fork

ソースコード管理にはGitHubを使用していますが、gitクライアントをコマンドラインから叩くのはなかなか大変です。
弊社では、GUIのgitクライアントとしてforkというソフトを使用していました。
モブプログラミングを進める中で、リポジトリの操作なども、画面を共有して全員で見ながら実施しました。

Fun Done Lern

メンバ全員と、事務所でモブワークを眺めていたヤマダさんを巻き添えにして、Fun Done Learnを実施してみました。

「楽しかった」

何より、「楽しい」という感想がメンバから上がって、非常にうれしいです。
エンジニアという職業の性質上、どうしても一人で黙々と作業に従事しがちですが、皆でわいわいとやる時間は、学校祭の準備のような一味違った楽しさがあります。

これは参加してくれたメンバによるところも大きいと思っています。
全員、人を攻撃するのではなく、解決すべき問題(目の前のコード)にきちんと向き合ってくれました。
楽しい雰囲気が作れたというのは、メンバ全員で作り上げた時間だったのだと思います。

得られたもの

大別すると、下記2つが挙がっています。

  • コードの品質向上
  • 仕様理解が早い

コードの品質向上

pythonで実装するプロジェクトでしたが、メンバごとに経験がバラバラでした。
モブを実施することで、「こういう場合は~~のような書き方をした方が良い」のような暗黙知が共有でき、総体としてコードの品質が上がったと思います。

仕様理解が早い

チームで取り組んでいたのは、数理最適化案件というちょっと難しい分野の案件でした。
仕様もなかなか複雑だったのですが、全員で考えることで、認識を合わせることができました。
また、話し合った結果、「仕様がきちんと決まっていなかったことがわかる」タイミングもあり、問題の芽を早いうちにつぶせていたように思います。

まずかったこと

いくつか、失敗談も挙がっています。

  • 単純作業には向いていない
  • 長時間はしんどい

単純作業には向いていない

一度、メンバがUTを書き直すのをただ全員で眺めているだけ、という事態になりました。
得られるものがないわけではないのですが、それぞれが一人でもできる作業については、いったんモブを中断して対処する等の工夫が必要に思いました。

長時間はしんどい

2時間の枠内で実施していましたが、とにかく疲れます。
時間内はひたすらしゃっべているからです。
設計の話、仕様の話がその場で解決できるのはすごいメリットなのですが、やはり疲れます。

今後の予定

チームでの仕事はまだ続いていますが、ちょっとフェイズが変わってきています。
現在は、モブワークの枠はとっているのですが、作業内容がないためスキップする事が続いています。

モブワークの良い点を生かしつつ、今後も必要に応じて実施できればと思います。