エンジニア・ディレクター陣含めて合宿に行ってきました!(エンジニア編)

こんにちは。エンジニアの志村です。 小川くんがブログ書いてくれたように、先月、弊社設立初となる開発合宿に行ってきました。 エンジニア:3名, ディレクター:3名で日光に行ってきました! 今回は開発編ということで、その模様と、具体的な内容、反省等を書いていきたいなと思います。

開発合宿開催への経緯

多くの企業が開発合宿に関するブログを書いているのを拝見し、度々合宿行きましょう!という話は出ていたのですが、皆の日程や移行タスク等の理由から中々開催出来ていませんでした。 そのような中で色々な企業のブログを読んでいく内に一回やっておくのもいいだろうという社長の鶴の一声で合宿開催が決定しました。

志村: そういえば合宿ってやるんですか? 高橋: え、合宿行きたい!

大濱: 1回やっとくのもいいかもね。行きましょう!

こんな感じです。軽い。

合宿までの事前準備

今回の手配は清水ディレクターがほとんどやってくれました。 本当何から何まですみません…

宿

開発合宿で必要なものを考えると

  • 延長コード
  • Wi-Fi(安定していてなるべく高速)
  • 6人が利用しても十分な広さがある会議室
  • 何時でも使用出来る会議室

上記のような感じでしょうか。 上記の条件が揃っている宿は中々探すのが難しいので、色々な企業さんが使用している宿をピックアップして今回の宿に決めました。

スケジュール

合宿とは言え、遊んでいたのでは意味がありません。酒を飲みまくっても意味がありません。と何故か僕だけ大濱に念押しされたのできちんとタイムスケジュールを組みました。

概ね、下記のようなスケジュールを事前に立てました。 今回の合宿ですが、開発メインというよりも、ビジョンの再共有、また将来のキャリアパス等を考えたりと、コミュニケーション周りがメインになる合宿でした。

1日目

10:00 集合&出発(3時間程度で到着)
13:00 チェックイン
14:00 自由時間(5時間)
19:00 夕食
20:00 自由時間(4時間)

2日目

08:00 起床&飯
09:00 自由時間(3時間)
12:00 昼食
13:00 理念会議(6時間) 
19:00 夕食
20:00 UTAGE

3日目

08:00 起床&飯
11:00 チェックアウト&出発
15:00 東京着
16:00 オフィス業務

上記のスケジュールから開発に充てられる時間は下記のようになりました。

開発に充てられる時間

  • 1日目: 9時間
  • 2日目: 3時間
  • 合計: 12時間

と、開発合宿の中ではかなり時間が少ないですね。 というのも2日目の理念会議が今回のメインテーマになるからです。 会社として初の合宿なので、エンジニア・ディレクター双方にとって有用な合宿にしたいという理由でこのようなタイムスケジュールとなりました。

実際にやる内容

さて上記のように開発に充てられる時間は 12時間となりました。 この時間でやれることは結構限られてくるので、何をやるかは結構慎重に議論を重ねました。 今回の合宿において重要にしていたのは下記の3点です。

  1. 合宿中にやりきれる
  2. チーム一丸となって取り組める
  3. 改善した内容が見える化出来るもの

特に大切なのは1.かなと考えています。 というのも初の合宿なので、合宿中に何かを達成した!という感覚を皆に持ってもらいたかった為です。

テーマ決めですが、上記の条件を考慮したテーマをアドバイザーの露木さんから幾つか提示して頂きました。

テーマ案

  • Sentryのエラーをxxx%減らす
  • NewRelicのレスポンスタイムをxxx%早める
  • CoffeeScriptをES6化する
  • 開発環境をdockerにする
  • テストカバレッジをxxx%高める

上記のような案を出して頂きました。

この時点でのチームの課題はテストカバレッジでした。 今まで、旧サイトからの移行、またそれに伴う機能の拡充を急いだ結果、チーム全体としてテストに対する意識が低いのが前々から問題でした。 ちょこちょこは書いていたのですが、最低限のユニットテストのみでE2Eテストをほとんど書いていない状況…。 最近mamanokoも規模が大きくなってきており、目視だけで完全に動作を把握することが難しくなってきております。 その為、テストカバレッジのUPが急務でした。

ということで、 今回はテストカバレッジを95%に上げる! というテーマに決定しました!

1日目

  • simplecovを使用し、現状どれくらいのテストカバレッジとなっているか調査。 → この時点で80%前後
  • 開発開始前に30分程度話し合い、どの部分を担当するか決める。その際に、自分が実装していない機能部分を割り当てることにしました。
  • テストごりごり書く。1日目は朝方5時まで3人で書き、どうにか92〜3%まで到達

f:id:cluex-developers:20160330215523j:plain

2日目

  • 95%もう少しだねと楽勝ムードが出てくる。
  • しかし、朝の時点で93%近くをウロウロ。
  • ここから上げるのがかなりキツかったです。テストの経験値が少なく皆悪戦苦闘…。
  • どうにか理念会議終了後に95%達成!!

f:id:cluex-developers:20160330220431p:plain

まとめ

上記のように紆余曲折ありながらも何とか、目標となる95%超を達成することが出来ました! 現在でも97%前後をキープ出来ている状態です。

良かった点

  • 数値で目標設定出来るのが良かった
  • 合宿ならでは(?)のやってやるぞ感が楽しかった
  • たまには違うところでやると捗る
  • エンジニア同士は勿論だが、ディレクター陣とコミュニケーションを深くとれたのが非常に良かった
  • 割り込み等が無かったので集中して作業に取り組めた

問題点

  • 1日目飛ばしすぎて、2日目本当眠かった
  • 2泊3日は短かった。3泊出来るともっと出来ることが広がりそう
  • テストも良かったが、次回は新しい物をチームで作るというような取り組みも行いたい
  • 夕食時に酒飲むと眠気が半端なかったので次回は禁止でも良いかも…
  • 腰が…
  • 事前準備をもっとしておけばすぐに開発に取り掛かれた