初めてのオンライン開発合宿

こんにちは、BIGLOBEモバイルの開発をしている大橋です。普段の業務では、Javaを使って契約管理システムなどの開発をしています。

コロナ禍で大変な時期ですが、一緒に働いてる人たちとオンラインで開発合宿をしました。合宿というと、宿泊施設などに集まって実施することが一般的かと思います。しかし、コロナ禍の現在の状況では、そのような形式で合宿を実施するのは難しいです。そのため、今回はオンラインで集まって丸一日、黙々と開発するような形で実施しました。
オンラインでの合宿は初めての試みでした。まずはやってみることが大事だと思い、こんな風にやってみようと決め実践したところ、上手くいったので紹介したいと思います。コロナ禍で合宿をやってみたいけど、どうやったらいいか困っている人たちのお役に立てたらと思います!

システムを改善したい

私が担当しているBIGLOBEモバイルのシステムでは技術的負債が溜まっており、必要ないアラームを上げてしまっていたり、自動復旧できない部分があったりとシステムに課題がたくさんありました。その結果、運用作業に工数がとられて、開発に集中できなくなっていました。
このような状況を変えたいと思っているものの、通常業務の片手間では、時間が取れません。そこで、一気に負債を返すための改善活動を集中してやろう!ということになりました。

コロナ禍での開発合宿

本来であればみんなで同じ場所に集まって開発をしたかったのですが、新型コロナウィルスの感染を避けるため、オンラインで合宿を行いました。

合宿の参加人数などは以下の通りです。

  • 参加人数:7人
  • 全体で使った時間:8時間程度
  • 作業場所:各自の自宅
  • 使用した通話ツール:Google Meet

当日の朝みんなで集まってから流れを考え、合宿を進めました。集中できる個人作業の時間はとりつつ、作業に遅れや困っていることがあったら早めにフォローできるような体制を作ることとし、以下のような流れでやってみました。

朝一集合
  • 各自どんなことをやるか予め決めてから集合し、合宿中に何を終わらせるか宣言する
  • 参加者の経験値にばらつきがあったので、不安な人はペアで進めるか、個人で集中して作業したい場合はソロで進めるなど体制を決める
  • 次回の進捗確認のために集まる時間を決める
  • 困ったときに質問できるGoogle Meetを作る
    • いつでも質問できる状態にしておくために、個人で作業を進めている人は入室しっぱなしにする
各自作業
  • ペアプロでやる場合は以下のように実施(私はペアプロで進めました)

    • Google Meetを使って画面を共有し、ドライバーがコードを映すことで2人で同じ画面を見る
    • ドライバーとナビゲーターを決め、音声通話で話しながらコーディングを進める
  • 詰まったら適宜、質問用のGoogle Meetで相談する

f:id:biglobe-style:20200908153650j:plain:w500

定期的に全体で集合する
  • 進捗報告、あれば困っていること、次の集まりまでにどこまで進めるかを話す
  • 進捗が遅れてる人は、ヘルプを求める
  • やることや進捗に合わせて、集まりの最後に次回の集合時間を決める
  • 朝決めた開発や評価がある程度終わった時点で、最終集合の時間と合宿終了時間を決める
最終集合
  • 残作業の確認
  • 今日中にどこまでやるか確認

合宿の最初に集まったときに、「対応不要なアラームを上げないように改修する」、「リトライ機能を入れて自動復旧する」等各自でどういった改善を行うかを6つ決めました。

その後は個人またはペアで作業を進め、進捗に遅れがないかを定期的に集まって確認していました。時間を決めて定期的に集まることで、全体として進捗が遅れることなく開発を進めることができました。
また、合宿形式で改善活動だけをやると決めていたので、他の業務の横やりもなく、開発に集中することができました。

その結果、決めていた6つの改善を実現できました。対応不要のアラームが減り、不要な調査の手間も削減されたことで、今よりも少しだけ開発に集中できる時間を増やすことができました。

オンライン合宿をやってみて

オンラインでの合宿で成果が出るか不安でしたが、手探りでやってみて、成果を出すこともでき、とても満足のいく結果となりました。

オンライン合宿ならではの工夫は、定期的に集まって進捗報告をする、常に誰かが答えてくれる質問専用のGoogle Meetを設けるといった、コミュニケーションにまつわるものです。

対面であれば、他の人の作業の様子が見えるので、気軽に話しかけられると思います。しかし、リモートだと様子が見えないので、他の人の作業の進み具合が読み取りにくく話しかけていいタイミングが分かりません。
また、直接話しかけることができなく、作業に集中しているとメッセージなどを送っても反応が遅れることがあり、リアルタイムでの返答が難しい状況です。加えて参加者はそれぞれ別の作業をしており、最終的な成果物も違います。そのような状況で、自分の作業で詰まっているところを他の人に質問するのは気が引けてしまうものです。

上記の課題を解決するために、時間を決めて定期的に集まることで他の人の進捗を見える化したり、いつでも質問できる・答えてもらえる環境を整えることで、安心して開発することができました。普段行っているオンライン開発も同様ですが、合宿という特殊な状況であっても、安心して質問できる場は重要であると実感しました。

初めてやったオンライン合宿ですが、効果は十分にあったと思っています。この状況に負けず、これからも楽しく開発をしていきたいと思います!

※ Googleは、Google LLCの商標です。