開発合宿に行ってきました
9/4〜9/6 にプロダクトマネージャー 1 名とエンジニア 5 名で 2 泊 3 日の開発合宿に行ってきました。
プロジェクト目標設定と準備
今回の開発合宿では、新サービスの開発を缶詰で行うことを主目的としました。
様々な邪念を取り払い、高い集中力をもって開発作業に取り組めば、通常業務よりも質の高いアウトプットを出せるはずです。また、今回の新サービスではこれまで使ったことがない技術も取り入れる予定だったため、あらかじめ合宿前に要素技術を学習したり触ったりする時間を取りました。事前にフロントエンドの大枠は開発しておき、バックエンド(API とインフラ)や CI/CD 環境を開発合宿の対応スコープとしました。
技術的には、Nuxt3、TypeScript などユアマイスターの標準構成を使いました。インフラには Cloud Run を利用し、CI/CD には GitHub Actions で継続的に自動でデプロイする環境を構築しました。加えて、新しい技術要素を取り入れた部分がありますが、リリース前なので控えます。
合宿場所の選定と環境
これまで何度も開発合宿を開催してきた時の反省点・改善点からくる重要なポイントを胸に、合宿場所の選定を行い、湯河原の老舗温泉旅館『おんやど惠(めぐみ)』に決めました。
- 公共交通機関で容易にアクセスでき、都内から 1 時間程度の距離か
- チェックイン、チェックアウトの時間を考慮して、できるだけ多くの作業時間を確保できるか
- Wi-fi や電源タップなどの開発合宿に必要不可欠な基本的な設備が充実しているか
おんやど惠(めぐみ)は、東京から 1 時間ちょっとで行ける程よい距離感と、経営者の方が元エンジニアということでエンジニアの気持ちを熟知したおもてなしをいただけるということで、開発合宿業界でも有名な旅館です。
さらに、おんやど惠(めぐみ)では開発合宿プランがあります。開発合宿用に、通常よりお得な料金で利用することができます。今回はこの開発合宿プランを利用しました。
開発合宿のスケジュールとタスク管理
1 日目
9:20JR 品川駅集合し、東海道本線に乗って湯河原へ移動しました。移動中は思い思いの時間を過ごしていましたが、私は午後から始まる開発作業のタスク洗い出しや、課題整理などを行なっていきました。
湯河原に到着後、まずはお蕎麦屋さんで昼ごはんをいただきました。その後路線バスに乗って、旅館へ移動。
13:00 チェックインしていよいよ開発合宿の幕開けです。
まず最初に各自の作業分担などをおおまかに認識合わせを行い、1 人ずつ意気込みを話していきました。
そこからは黙々と作業を続け気づけば、18:00 を迎えており、進捗や困りごとなどを共有して夕ご飯を食べました。夕ご飯後はみんなで温泉に入ったり、カードゲームを楽しんだり、親睦を深めることができました。
2 日目
7:00 ごろから散歩に出たり、温泉に入ったり、作業開始しているメンバーがいました。朝活は気持ちいですね。8:00 から朝食をとり、9:00 から集合して作業開始です。
お昼ご飯に外出して近くのラーメン屋さんでお昼ご飯を食べました。(あさりラーメン美味しかった...)
帰り道で野生のサルの群れに遭遇し、湯河原の大自然を感じました。
18:30 から夕ご飯がありましたが、それ以外の時間はそれぞれの作業に没頭していました。隣接したコンビニに行ったり、気分転換に足湯に入ったり、適度に気分転換できるオプションが多かったのも開発合宿場所として良かったなと感じます。
3 日目
8:00 から朝食をとり、9:00 から作業開始しました。最初に各自の予定作業と意気込みを共有し、最終日の気合を入れました。11:30 ごろから、各自の成果報告と開発合宿全体の振り返りを行い、12:00 チェックアウトして開発合宿終了です。
翌日の全社会議で、開発合宿で作ったもの(作りかけのもの)を全社員向けにデモ発表し、合宿メンバーがいない間の業務を担ってもらっていたことを感謝しました。
コミュニケーションが生まれやすい場ができた
開発合宿中は基本的に 6 人が一ヶ所に集まり開発を行いました。いつも通り開発フローの中で Slack や GitHub を通したコミュニケーションがあったのはもちろんのこと、オンサイトならではの、何気ない雑談や、困ってることの共有、いきなり始まるブレストなど普段リモートで開発するよりも多くの接点が持てたと思います。
例えば、作業中は黙々と進めているので、音があったほうが集中できそうというメンバーからの提案があったので、うっすら BGM をかけました。オフィスではできないことですが、開発合宿で部屋を独り占めしているからこそできることです。ここでの選曲により「あーこの曲好き!」「これなんていう曲でしたっけ?」など、雑談のきっかけを作れたのも BGM の効用だったと思います。
また、寝食を共にすることや、1 日の労をねぎらう飲み会を通して、チームへの帰属意識が高まる効果を得たと思います。毎晩行われた人狼ゲームで、嘘をつく人狼が上手すぎて、少しだけメンバー同士の信用が揺らぎそうになったのは内緒です。
成果と改善点を振り返り
最終的に振り返ってみると、概ね予定していた進捗が出せました。今回の開発合宿では新サービスの開発を行いました。アプリケーションはフロントエンドとバックエンドが結合され、データが格納、取得できる状態になりました。まだリリース前ということもあり詳しく書くことはできないのですが、近々お披露目を迎えた暁には、利用した技術の解説などを発信していきたいと思います。
参加したメンバーからの声を集めてみると、良い感想を持っており、楽しんで開発合宿に挑めたのではないかと思います。
- 作るものがある程度決まっていたから、没頭できた。
- 開発のこと以外の邪魔が入らず、合宿の終了期限があることが集中につながった。
- 腰が痛い、椅子が大事。
- 1 日の最後に飲み会があることを励みに頑張れた。
課題としては、もう少し事前準備の時間を上手に使った方が良いという意見が出ました。通常業務をやりながら追加で時間を取るのは難しいので、開発合宿前に Day0 と称して、まとめて時間を取るなどの工夫が必要そうです。また、細かい設計までは終わっていなくとも、関連するリソースに目を通しておくことや概要設計をぼんやりとでも進めておき Ready な状態を作ることで、開発合宿期間中でさらに集中できることに繋がるだろうという話をしました。次回以降の合宿には活かしていこうと思います。
ユアマイスターでは開発合宿も欠かせないイベントとして捉えており、これまで毎年開催してきています。これからも毎回形を変えて進化した開発合宿を行なっていきたいと思います。