こんにちは。SmartHR プロダクトエンジニアの森本(@jin)です。
普段は SmartHR の年末調整機能 を開発しています。
今回は、開発効率を向上したり、リモートワークならではの問題を少しでも解消するために、
チームで実施している工夫を紹介します。
チームの概要と課題
はじめに前提として、チーム体制や開発手法、普段の働き方の概要を紹介します。 自分の所属するチームは、プロダクトエンジニアは合計 6 名で、基本的に 1 週間スプリントでスクラム開発をしています。 また、開発チームは基本的にリモートワークで働いているため、コミュニケーションはテキストチャット(Slack)やビデオ会議を主に利用しています。
リモートワーク環境でもコミュニケーションが疎にならないように Slack での発言の敷居を下げる雰囲気作りをしていたり、 作業に困った場合は必要に応じて huddle 等を利用したモブ作業を行うなどの取り組みはしているものの、 ペース配分がうまくいかずスプリント終盤に駆け込んだり、バーンダウンまで届かないことがありました。
プランニングの改善
そこで、プランニングの精度の向上と、スプリントの進行を計画的にするため、次のような取り組みをするようになりました。
- プランニングでメンバーの稼働見積時間を考慮する
- 前週までの消化ポイント実績を使って今週の消化見積ポイントを計算する
- これらを元に次スプリントの計画を立てる
これらの情報をまとめることで、今のチームが開発可能なボリュームの可視化や、 スプリント進行中に「いつ、どこまで」進んでいると計画通りなのかを把握しやすい状態になりました。
「今日のゴール」の設定
次に、この情報を参考に、デイリースクラムで「今日のゴール」を設定しています。 上記の例であれば、火曜日は全体の 45.45%の作業が完了すれば計画通りに進行していると見ることができます。
デイリースクラムでは、下の画像のように、昨日のゴールを達成できたか、バーンダウンのためには今日のゴールをどう立てると良いか、 そのためにはどう動いていこうか、といったことを各チケットのポイントと照らし合わせながらストーリーやサブタスク単位で具体的に決めています。
また、これらの議事録は、Google Apps Script からDocBase の APIを使って 記事を作成することで毎日自動生成しています。 毎朝デイリースクラム前に定時実行するようトリガーを設定してあり、 DocBase API から返ってきた記事の URL を使って Slack へ投稿する簡単な仕組みになっています。 昨日のゴールや曜日毎に異なるコンテンツもスプレッドシートなどから自動で転記された状態で記事が作成されるようになっており、 日々の繰り返し作業をなくす工夫もしています!
ゴール確認タイム
ゴール設定を始めると、次のような課題も見えるようになってきました。
- 同期的に計画を変更できるタイミングがデイリースクラムしかない
- → 緊急で差し込みたい作業が出た場合や、予定より早く開発できたときにより柔軟に対応したい
- 他メンバーの作業状況がわかりづらい
- → より最適な作業分担をすることで、フロー効率をより高められないか模索したい
これを解消するべく、毎日 15 時に「ゴール確認タイム」を実施しています。 ゴール確認タイムでは、デイリースクラムで設定したゴールを達成できそうかを確認したり、難しそうな場合は達成の方法を検討したり、ゴール自体の見直しなどを行います。 こちらも議事録のドキュメントは朝会で設定したゴールが記載された状態で自動生成される仕組みになっていて、 時間になったら Slack のリマインダーで投稿されます。
ゴール確認タイムでは以下の順番で認識合わせと、次の動きを決めています。
- 現状の作業進捗を確認する
- 全員がそれぞれ、今日のゴールが達成できそうか一斉に発表する
- 認識が違う場合、懸念点などを話し合う
- ゴールの調整をする、またはタスクのアサインを変更するなどしてゴール達成できる方法を模索する
業務の困りごとを共有する以外にも、同期的に集まることで雑談の場にもなっています。
社内の気になる話題を共有することもあれば、美味しいご飯の情報が共有されたり、有益な家電情報が交換されることもあります。
見積もりと消化ポイントの推移
最後に、今年のスクラムの見積もりと実際に消化したポイントの推移を紹介します。
今年に入ってからの計 36 スプリントのうち、見積もり以上に消化できたのは 21 スプリント(58%)という結果になりました。
(※プランニング以降に緊急の要件が発生するなどで、スプリント中に計画が変更されたケースなどは考慮されていない数値のため、参考程度にご覧ください)
見積もり時点のポイントを消化できていないものもあるものの、下のグラフの通り、安定して見積もりに近い消化ポイントを継続することができています。
おわりに
今回は年末調整の開発チームで実施している、日々のゴール設定の話と一日の中間のタイミングで状況整理をすることで、
よりフロー効率を高めたり、日々の繰り返し作業を自動化する工夫をしている運用の紹介でした!
ここで紹介したもの以外にも、日々運用方法や課題の見直しは模索していますが、より生産性の高いチーム作りを目指していきたいですね!
簡単な一例の紹介となりましたが、日々の開発の困りごとを解消して開発したいプロダクトエンジニアの方、 興味がありましたが是非カジュアル面談でお話ししましょう!