こんにちは、SmartHRの基本機能を担当しているプロダクトエンジニアの@tsutsumiです。
私たちプロダクトエンジニアは「最短距離を行こう」というスローガンを掲げ、開発効率の向上に取り組んでいます。その一環として、サイクルタイムの改善に注力しています。
今回は、チームの開発効率向上を図るために実施した施策とその効果について紹介します。
FindyTeam+のサイクルタイムの推移
まずは、最近のFindyTeam+のサイクルタイムの推移について見ていきたいと思います。
FindyTeam+のサイクルタイムとは何かについては「チームでサイクルタイムの改善に取り組んだ話 - SmartHR Tech Blog」のブログ記事をご参照ください。
私たちのチームでは、半年前からFindyTeam+を利用してサイクルタイムの計測を行なっています。 直近3ヶ月のサイクルタイムの推移が以下の通りです。
- 2024.01
- 2024.02
- 2024.03
FindyTeam+の利用方法として、数値の改善だけでなく、振り返りの指標として活用しています。 FindyTeam+での良好な数値の称号はエリートであり、数値のばらつきがあるものの、エリートの水準を維持していることがわかります。 数値のばらつきは、Pull Requestやチケットの実装難易度、変更行数の差によるものであり、ある程度の変動は許容範囲としています。 またチームメンバーの異動やプロジェクトの状況の変化がある中でも、サイクルタイムの数値が良好な水準を保っています。 これらの良好な結果の背景にある取り組みについて詳しく見ていきたいと思います。
取り組んだ施策と効果
私たちのチームでは、以下の施策に取り組んできました。
特に効果的だった施策
観点リストの活用によるチケットの不確実性の解消
プロダクトバックログリファインメント(以下「PBR」)とスプリントプランニングにおいて、チケットの内容を詳細に把握することが重要であると考えています。チーム全体がチケットの要件や目的を理解することで、開発中に生じる不確実性を軽減し、タスクの効率化が可能になります。
そこで、私たちのチームでは、PBRの観点をまとめてドキュメント化し、リファインメントを進めています。以下は、作成したPBRの観点の一例です。
# PBRの観点 ## UI - 最大桁・最小桁・空の場合にどう表示するか - ユーザーの課題を解決する文言になっているか ... ## 既存機能への影響 - この対応によって顧客の業務フローにどういう変化があるか - 既存機能への影響はあるか ... ## ステークホルダー - 誰とどういったコミュニケーションが必要か ...
観点リストを活用したチケットの詳細化により、作業における不確実性が低減し、チーム全体の理解が深まりました。具体的な観点に基づいてタスクを整理することで、担当者や関係者が共通理解を持ちやすくなっています。これにより、作業の進行がスムーズになり、議論や課題の特定がしやすくなりました。 またレビューワーのコンテキスト理解にも好影響を与えています。
朝会での予実管理シート活用
朝会で予実管理シートを見ながら状況を確認することで、チーム全体でチケットごとの優先度の認識を揃えています。 予実管理シートは下記のようなものを使用しています。
優先度が高いチケットの進捗が遅れている場合、他のメンバーがサポートするなど、自発的にチーム全体での調整が行なわれるようになりました。 これにより、プランニング時の計画と予実に差分が出た場合にも、柔軟に対応ができています。
作業スレッドでのWOL(Working Out Loud)
作業スレッドを活用し、WOL(Working Out Loud)を実践することで、作業状況の透明性が向上しました。
WOLに関しては、スタディサプリのエンジニアの方が書いた「Working Out Loud 大声作業(しなさい)、チームメンバー同士でのトレーニング文化の醸成」の記事に詳しく記載されているので、ご参照ください。
作業の進捗や課題を共有することで、他のメンバーがサポートする機会が増え、作業の効率化につながりました。また、引き継ぎなどもスムーズに行なうことができ、コミュニケーションコストの削減につながっています。
その他の導入している施策
- Pull Requestの粒度の適正化
- チケットの作業単位をサブチケットとして分割し、サブチケット単位にPull Requestを分割することでレビュワーの負荷を減らしています。
- 困った時のペアプロ
- 自身の判断では問題解決に至らない場合や、複数の選択肢がある場合に、他のチームメンバーと協力して解決策を見つけるためにペアプロを行なっています。
- テスト実施を実装者自身で行なう
- 以前はテスト実施を実装者以外に依頼していましたが、リードタイムが発生するため、テストケースのレビューは必須にした上でテスト実施は実装者自身で行なっても良いとしています。これにより、作業の依存性を減らしています。
- モブレビューの導入
- コンテキストが複雑なタスクに対してモブレビューを行なうことで、情報の非対称性を解消し、コンテキストの理解を深めやすくしています。
- レビュワーランダムアサイン
- レビュワーの負荷分散のためにランダムなアサインを採用しています。
チーム全体の開発効率向上への影響
施策の導入により、チームのコミュニケーションや作業効率が向上し、開発の流れがスムーズになっています。その結果、フロー効率*1が向上し、サイクルタイムの短縮やデリバリーの速度向上にも大きく寄与していると感じています。
しかしながら、改善の余地はまだまだあります。チーム全体の開発効率を向上させるために、さまざまな施策やアプローチを検討していきたいと考えています。
また、他のチームでも活用できるように、今回の成功事例の施策やプロセスの具体的な方法をドキュメント化し、共有していくことも重要だと考えています。 チーム体制の変化や他のチームが同じ課題を抱えた場合に、役立つ知見を資産として蓄積できると、より組織の成長につながると考えているため、今後も改善活動を継続していきたいと思います。
まとめ
今回は、チームの開発効率化に向けた施策とその効果についてご紹介しました。これらの取り組みを通じて得られた知見を元に、今後もさらなる開発効率の向上やチームの成長を目指していきたいと考えています。
We Are Hiring!
SmartHR では一緒に SmartHR を作りあげていく仲間を募集中です! プロダクトの価値向上のために、開発効率を一緒に高めていきたい方、お待ちしてます! 少しでも興味を持っていただけたら、カジュアル面談でざっくばらんにお話ししましょう!