読み終えるまでの目安: 5分
目次
はじめに
2024.09.15-16にて、友人と一緒に 3人で開発合宿をしました!
前に記事を書いた初回から約 9か月後の 2回目です。
新メンバーも加えながら、前回の振り返りを活かして開催した結果、とても楽しく快適に開催できました 👍
2回の開催を経て、開発合宿を成功させる条件がわかってきた気がするので、シェアしたいと思います!
やったこと
事前
- みんなの期待をすり合わせる
- 「こんなことできたらいいな」
- 「こんな関係にできたらいいな」
- 作るもの (プロダクト) を考える
(プロダクトは Chrome拡張機能でした)- アイデアを持ち寄って議論、その場で決定
- 仕様を決める
- 開発スコープ・機能の優先順位を決める
- 場所を確保する
- レンタルスペースを予約する
- ご飯のお店を予約する
- 開発環境の構築
当日
- モブプログラミング
- 感想戦したり、プロダクトの今後について話したり
振り返り
Fun Done Learnの結果
今回も Funと Learnが多くてすばらしい! 👏
とはいえ、ちゃんと Doneもあります。なんと目標としていた開発スコープを達成しました! 👏 🎉 🎊 🏵️
前回は全然届かなかったので、しっかり学びを活かしていますね笑
この後、特筆したい要素を順に見ていきます。
ただ、この図には「開発合宿を有意義なものにするために重要だったこと」をたくさん書いています。
ご興味があれば全ての要素に目を通してみてください!
とにかく準備が大事
今回、特に実感したのが「しっかり準備してて良かった」です。
ここに収束するといっても過言ではありません。
参加メンバーの 1人、Seyyyy が準備を主導してくれて、なんとドキュメントも作ってくれました!
リポジトリは Privateなので紹介はできませんが、プロダクトの背景や思想に始まり、要件はもちろん、機能の優先度などもまとめてありました。
- このプロダクトがどんな課題を解決するのか
- 仕様
- 開発スコープ
また、当日にも素早く動けるよう、
- 開発環境の構築
- どこにどんな処理を書くのかの調査
も済ませてくれています。しごでき 👍
振り返ると、特に要件と機能の優先度を定めていたことが重要だったと感じています。
というのも、開発中に「この問題どうしよっか?」と迷ったとき、「最優先なのはここまでだから、後回しにしちゃおう!」とその場ですぐに判断できたんですね。
そのおかげで、純粋に調査・実装する時間をなるべく長くとることができました!
モブプロ、あんまり疲れなかった
前回、長時間ペアプログラミングをしていたところ、本当にめちゃめちゃ疲れました 😂
一方で、今回はほぼずっとモブプログラミングをしていたのに、全然疲れませんでした。
その理由は、「設計が明快だったからではないか」と感じています。
前回は大規模なプロダクトで、設計を 2人で議論・探索しながらの開発でした。
いわば設計と実装、2つの不確実性に向き合う必要がありました。
しかし、今回はごく小規模なプロダクト。設計は非常にシンプルです 💡
実装の不確実性のみに集中できたんですね。
それゆえ大きな負荷を感じることなく進められたのではないかと考えています!
また、物理的な環境の要因もあったかもしれません。
前回は各自に外付けのモニタこそあったものの、狭く、窓もなく、閉鎖的でした…
それゆえ、私はたまに外を散歩してようやくリフレッシュできるといった始末。
ただ、今回は部屋が広く、かつ緑がありました (本物の植物ではありませんでしたが) 。
ずっと部屋の中にいても苦しくなることはありませんでした!
まとめると、設計が軽かったことと、部屋の性質のおかげで疲れにくかったのではないかという学びでした! ✍️
テストのポリシーを決めていればさらに良かった
上記の通り、開発合宿 #2は大成功でした!
ただし、反省点が全くなかったわけではありません。
強いていえば、テストのポリシーを早く定めていれば良かったと感じています。
2日間のうちの 1日目、いちばん最初の実装において、Google Chrome依存の動作をテストするために数時間格闘しました。
方法を調べて、なるべく手間のかからないものを探して試して…
なかなかうまくいかないまま時間が過ぎていきました。
そして、最終的に「このテストは諦めよう!」と決断しました。
今考えても妥当な判断だったと思います。
これをもっと早くに決めていれば、もっと有意義に開発を進められたはずです 🤔
この記事を読まれている方なら、テンポ良く開発することのメリットはいわずとも伝わると思います!
そのため、事前に「これはテストしよう。でもこっちは〜だからテストしないことにしよう」と決めておくのが理想だな〜と感じています。
おわりに
この記事で取り上げた要素をまとめます!
- 当日にテンポ良く開発するために、準備がとても大事。プロダクトについて事前にある程度定めておこう
- 要件
- 機能の優先度
- 開発環境と、その構築手順
- 「何をテストし、何をテストしないのか」を決めておくと良さそう!
- ⚠️ どこでどんな処理を書くかまで決めきっちゃうと、それはそれで当日の楽しさが削がれちゃうかもなので注意!
- 設計の手間がかからない課題のほうが向いてそう
- 実は部屋の広さ・雰囲気も大事かも!
最後に、少し感想を添えておきます!
今回は特に強く実感したんですが、責任の発生しないチーム開発は、びっくりするほど楽しいです 😂
ちょっとでも興味のある方や、「作りたいものはあるんだけど、気持ちだけで終わっちゃう…」といった方など、仲間を募ってみることをおすすめします!
もしこんな風に合宿の予定まで立てられたら、楽しみながら多くの学びを得られる特別な体験になると思います 👍