こんにちは!LayerXエンジニアの高際 @shun_tak です!
本記事ではバクラクの開発スタイルについて紹介したいと思います。
概要
バクラクでは、プロダクトごとにスクラムチームがあり、それぞれバックログを持っています。
また、複数のプロダクトを横断するプロジェクトが立ち上がることもありますが、その場合はプロジェクト専用のバックログを作成します。
横断プロジェクトは開発が一段落すると、関連性が強いプロダクトに吸収され、バックログもクローズされます。
スクラムチームの構成
各プロダクトのメンバー構成は以下のようになります。
- プロダクトマネージャー (以下PdM)
- エンジニア
- デザイナー (他プロダクトと兼務)
スクラムガイドで言うところのプロダクトオーナーをPdMが担い、スクラムマスターをエンジニアとTech Leadで分担することが多いです。
また、一般的なスクラムではスプリント期間中はスクラムチーム外からの干渉を受けないことが多いようですが、バクラクのスクラムではアジリティを優先し、別チームからコメントやフィードバックを随時受け付けるようにしています。
スクラムイベント
各チームで発生するスクラムイベントはほぼ一緒で、
- スプリント計画 (プランニング)
- 朝会 (デイリースクラム)
- レビュー会 (スプリントレビュー)
- 振り返り (スプリントレトロスペクティブ)
- バックログ棚卸し (スプリント計画と一緒にやる場合も)
- 顧客要望収集会
- 本番リリース
といったもので構成され、頻度はチームによってまちまちです。
3つ目のレビュー会はバクラクで行われるイベントの中でも特に異質で、めちゃくちゃ盛り上がります。エンジニアのTomoakiさんが別途記事にしてくれているので、よかったら読んでみてください。
また、スクラムはプロセス改善に主眼を置いた開発スタイルと認識していますが、 振り返りで出た課題が次の振り返りで消え、良かったことに変わる点 などもバクラクは良い開発チームだなと実感する瞬間の一つです。
以下、AI-OCRチームとバクラク申請・経費精算チームの1スプリントの様子を紹介します。
AI-OCRチームのスプリントの流れ
- 2週間で1スプリント
- 毎日朝会を実施
- スプリントのはじめに計画を実施
- スプリント後半の月曜日に計画の見直しを実施
- 毎週レビューを実施
- 毎週アップデートをリリース
- スプリントのおわりに振り返りを実施
バクラク申請・経費精算チームのスプリントの流れ
- 2週間で1スプリント
- 毎日朝会を実施
- スプリントのはじめに振り返りと計画を実施
- スプリント後半の月曜日に計画の見直しを実施
- 毎週レビューを実施
- 毎週顧客からの要望収集会を実施
リリーススケジュールについて補足: プロダクトの性質上月末月初にアクセスが増えるので、QA・リリースはスプリントと独立して、月末月初以外で2週間に1度程度のペースで行っています。
これまで試したカイゼン
チームごとのスプリントの流れを紹介しましたが、 ずっとこの形でやってきたわけではありません。 AI-OCRチームでの改善の紹介が主になってしまうのですが、いくつか紹介したいと思います。
立ち上げ初期は1週間1スプリントで素早く軌道修正し、安定したら2週間1スプリントに
プロダクト立ち上げの初期は朝令暮改が当たり前。1週間で1スプリントとし、週次で計画や優先度を見直し、機動的にタスクを組み替えやすくしていました。
過去のスプリントバックログを見返してみたところ、バクラク立ち上げから19週目までは1週間で1スプリント、20週目以降から2週間で1スプリントに切り替わったようです。
月2回だったアップデートのリリースが毎週に
バクラク請求書やバクラク申請・経費精算など月末月初にアクセスが増えるプロダクトでは、月末月初を避けてアップデートのリリースをするようにしていました。利用している最中に挙動が変わるとお客様の業務に影響する可能性がありますし、最悪の場合バグにより特定の機能が正常に動かなく可能性もあるためです。
一方で、文書の読み取りとデータ化を自動化するAI-OCRのような、ユーザー向けの挙動が変化しにくいプロダクトでは月末月初のリリースを避ける必要がありません。
AI-OCR機能のコアロジック部分は開発の最初期からマイクロサービスとして独立しており、リリースタイミングを分けることも容易でした。
そのため、開発が安定したタイミングから、月末月初を避けることなく週次でアップデートをリリースするようになりました。
朝会で前日にあったミーティングのサマリを共有
AI-OCRチームはエンジニア8人ということもあり、全員が参加しないミーティングがちょこちょこ発生します。
仕様や設計のディスカッションなど、あとからキャッチアップしておいた方が良いものが多いものの、それ知らなかった〜ということが何度か続いたため、朝会でミーティングのサマリと議事録を共有するようにしました。
月1回だった振り返りをスプリントごと(2週間ごと)に実施
バクラクでは開発初期の頃からレビュー会 (スプリントレビュー) を毎週行っていたのに対し、振り返りは月に1回が基本でした。
AI-OCRチームに機械学習エンジニアが増え開発プロセスが複雑になってきたタイミングで、プロセスの改善を速めることを目的とし、スプリントごとに実施するように変更しました。
実際やってみて、これまで以上にプロセスの改善が速まっているなと実感しています。
振り返り=KPTを実施することから、もうちょっと丁寧な振り返りを実施するように
開発初期からしばらくはかなり均質的な集団で開発をしていたこともあり、前提も揃っており、特に前フリもなくKPTをスタートするのがバクラクでの振り返りのスタイルでした。
当初1~3人で開発していたAI-OCRチームの人数が8人に増えたタイミングで、より良い振り返りができるよう改善することにしました。具体的には、冒頭に「場をセットする」時間を設け、アジェンダを用意し(毎回同じだけど)、KPTとは別に感謝を伝える時間を用意しました。
用意したアジェンダは以下のような感じです。これを最初にみんなで確認します (特に目的と約束事を毎回確認するのが大事)
- 目的を確認 (1min)
- 日々の開発や進め方を点検し、学びを得て、改善につなげるのが振り返りの目的
- 我々は、何事も必ず改善できると信じている
- 最初からうまくいくことはないので、素早く軌道修正し、改善していく
- 批判や追求の場ではない
- スコープ
- 1スプリント2週間分 (2022.10現在)
- 日々のタスク、できごと、お気持ち(感じたこと・感想)、開発プロセス、チームそのもの、etc
- 日々の開発や進め方を点検し、学びを得て、改善につなげるのが振り返りの目的
- 約束事を確認・見直し (1min)
- 感じたことを率直に話そう。お互いに理解し合おう。その上で同意するかどうかは分けて考えよう。
- 振り返り中のスマホいじり、SlackなどはNG。集中しよう。気付いたら淡々と注意しよう。プロとして。
- KPT (50min)
- 改善やアクションに繋がるアイディアを出すのが目的
- 進め方
- miro でやる
- Keep編 (13min)
- 3min: 良かったことを付箋に書き出す
- 8min: 一人ずつ順番に共有
- 2min: 整理&全体像の把握
- Problem編 (16min)
- 3min: 課題を付箋に書き出す
- 8min: 一人ずつ順番に共有
- 5min: 整理&全体像の把握
- Try編 (15min)
- 10min: もっとよくできそうなKeep、改善できそうなProblemについて話し合う
- 5min: Next Actionと担当者を決める。2,3個決められればOK
- 今スプリントの感謝 (5min)
- 互いに日頃の感謝を伝え、ポジティブに振り返りを終了するのが目的
- 進め方
- 1min: みんなの貢献に対する感謝を付箋に書き出す。1~3個ほど書ければOK
- 4min: 一人ずつ順番に共有
これは、AI-OCRチーム向けの振り返りの進め方ドキュメントからそのまま持ってきたものです。
最初に「ちゃんと集中しようね」とみんなで合意することで、今まで以上に振り返りに集中できるようになりました。
また、感謝を伝える時間を改めて設けることで、KPTでは言いにくいタイプの人(私自身のこと)でも感謝を伝えやすくなったし、めっちゃ温かい気持ちになり、より良い週末を迎えられるようになったように感じています。以下の記事に具体的な進め方をまとめているので、興味ある方はぜひ読んでみてください。
おわりに
最後まで読んでいただきありがとうございました!
もしLayerXやバクラクの開発に興味が出て、もっと話を聞いてみたいぞ!という方はぜひカジュアル面談からお申し込みくださいませ!