1日スプリントをやってみようと思う

レッツゴーデベロッパー 平成ジェネレーションズ FINAL
https://connpass.com/event/95619/

きょんさんの話によく出てくる基盤チームが開発する。見れる機会はそうそうないので、東京から仙台に日帰りで行ってきた。

このイベントは基調講演を行った後、開発フリースタイルバトルで各チームがそれぞれの開発手法でお題に沿って開発を行う。各チームはスクラムやDDD、TDDを行っていた。他のチームの感じは他のまとめを見てもらうとして(https://www.asakara.net/entry/study-letsgo)、一時間スプリントを行う基盤チームを見ていました。


お題に沿って開発を進める。
https://github.com/5000dai/free-style-battle/blob/master/README.md

1時間スプリントができると思えた

25m作業を行なって5mふりかえりや計画を行う。やることは6m単位で黄色の付箋にして、どんどん貼っていく。ある程度時間がかかるものは青い付箋にする。

サーバーの設定や、仕様の読み込み、設計など、長くて12m短くても一応のタスクに分割していく。25mにやったことを共有して分単位で情報共有していく。非同期で仕事をしているが同期のタイミングが短いので遅れが素早く見つかる。必要に応じて手伝って、遅れをカバーしていく。今回はイベントということで、サーバーがうまく立ち上がらなかったのでローカルまででOKにしたり、素早い判断をしていた。

1時間スプリントは、5mで1hでできることをタスクにして実行して、25m開発し一旦共有して、もう25m開発し、5mふりかえりをする。実際やっていることはこれだかのように見える。たったそれだけだった。

それでも難しいこと

標準的な開発では省いていることがかなりある。

レビューと単体テストだ。レビューをせずにどんどんrebaseしてmasterにマージしていくし、単体テストを書かずにE2Eテストだけを書いていた。これは信頼できるframeworkと設計、そして実力が相まってできる開発手法ではある。実際に体験した私も「単体テストをするだけ時間の無駄」だと思うような信頼性の高いコードが書かれていく。せいぜい不安に思う時にだけレビューしたり単体テストを行うそうだ。実際に目の当たりをすれば、高い生産性がほこっているがゆえに1時間スプリントが必要なことが納得いく。基盤チームにとっては1週間スプリントはあまりにも長すぎるのだ。

1日スプリントをやってみる

1時間スプリントをいきなり真似するのは、火傷するどころか骨すら残らない。
弊社では2週間でスプリントを行なっているが、1日スプリントをやってみようと思う。と言っても「今日1日で終わらせると決めたタスクは終わらせる」ためにより小さくタスクを分割したり、レビューを別の付箋にするなどを行なっていこうと思う。