Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プロダクトプラットフォーム開発におけるフィー ドバックループの回し方

Recruit
January 17, 2024

プロダクトプラットフォーム開発におけるフィー ドバックループの回し方

2023/10/24に、TECH PLAYで発表した、吉岡の資料です。

Recruit

January 17, 2024
Tweet

More Decks by Recruit

Other Decks in Business

Transcript

  1. こんばんは! • 吉岡 良治 / @ojiry • スタディサプリで基盤開発グループのEMをしている • RailsエンジニアとしてWeb開発をしていた時期が一番長いが、最近はGo

    やRustを推している(尚、業務ではほぼコードを書いていない) • ヘアドネーションのために2021年から髪を伸ばしている
  2. 認知負荷の増大 • 4名のチームで横断領域にある複数の課題を同時に進める ◦ バックログの優先順位付けが複雑化 ◦ アラートや他チームからの差し込み対応 ◦ コンテキストスイッチが多発 •

    本来やりたかった基盤開発のプロジェクト一時停止 ◦ 再始動しても当時の事は記憶が曖昧で。。。 ◦ そして暫く立つとまた差し込みが😇
  3. スプリントレビューの形骸化 • 当時の開発プロセスはスクラムガイドにほぼ準拠したスクラムらしきもの ◦ 専任のプロダクトオーナーがいない ◦ 専任のスクラムマスターもいない ◦ それ以外はスクラムガイド通り •

    目標はAs-Isのまま機能をマイクロサービスへ切り出すこと ◦ 新しい機能は実装しない ◦ 整合性を担保しながらデータを移行する ◦ 参照先を古いデータベースから新しいサービスに切り替える
  4. スプリントレビューの形骸化 • プロダクトバックログは技術中心な内容に ◦ 組織のTPMはビジネス寄りなため、技術中心のバックログ管理は難しい ◦ インクリメントも技術的な内容が中心に ▪ 組織にレビューできる人、レビューの意思を持てる人がいない •

    結果関係者を集めてレビューを実施しても進捗確認の場にしかならず ◦ フィードバックループが回らなかった ▪ どんなフィードバックが欲しいかもチームは把握できてなかった ◦ 考慮漏れによる手戻りも多数発生していた
  5. 自分達がなぜここにいるのかを問うた • グループワークで Vision/Mission/Values を作成 • Vision (目指す世界観) ◦ プロダクトチームが価値の提供に集中できる世界の実現

    • Mission (果たす役割) ◦ プロダクト開発を支援する堅牢なプロダクトプラットフォームを作る • Values (大切にする価値観) ◦ Presence ◦ Be fault tolerant ◦ Code-driven ◦ Prioritize safety
  6. 横断領域の課題を全て解決するわけではない • 自分達ができることは限られている ◦ 何を成すべきか選択と集中 ◦ 差し込みに対して意思決定する際にはVision/Missionに立ち戻る ▪ 異なるならNoと言って別の解決案を一緒に考える •

    自分達のミッションを表す組織名に変更 ◦ 旧)開発支援グループ ◦ 新)小中高プロダクト基盤開発グループ ◦ 名前から受ける印象は大事 ▪ チーム内外で影響があると(自分は)実感
  7. ドメインチームの立ち上げ • 思い切って1チーム2名の体制を構築 ◦ 採用を強化してメンバーを充足させること前提 • グループとして最優先で進めたかった認証ドメインを切り出す ◦ 残ったドメインは引き続き1チームで進める •

    リスク観点は考慮しながら失敗を恐れずチャレンジをした ◦ まず試すことでフィードバックを得ることを最優先 ▪ 今回はリスクもあるので厳しければ直ぐに戻す前提 ◦ 事前にメンバーと期待値調整は手厚めに行う
  8. ある日偶然とあるブログを見つける 社内PlatformチームのProduct Management https://deeeet.com/writing/2020/10/07/internal-platform-product-management/ • 基盤(プラットフォーム)も社内向けプロダクトとして捉える ◦ 衝撃を受ける • プロダクトオーナーの責務を考えれば自然なことだった

    ◦ チームにはプロダクトマネジメントが必要 ◦ As-Isでの移行開発という性質が思考に制限をかけていた? • やるべきことは見えてきた ◦ あとは行動するのみ ◦ プロダクトマネジメントの本を何冊か読む
  9. 得られた知見を元にチームでミニマムに検証 • リリースサイクルという6週間のサイクルを定義 ◦ basecampのThe Six Week Cycleを参考 ▪ https://3.basecamp-help.com/article/35-the-six-week-cycle

    • サイクル内で開発するインクリメントをリリースアイテムとして管理 ◦ 初期バージョンのフォーマットは下記の3つ ▪ 概要、提供される価値、どのように利用するか ◦ 必ずユーザーが実際に使えて試せるものを開発する • GitHub IssueとしてGitHub Projectsでロードマップとして社内に公開
  10. 実際にやってみる • 6週間で動くものを提供する ◦ 開発のスコープを強制的に削減させられる ◦ 重厚長大な設計議論などをしていると何も出来ない • 誰に対して価値を提供しているのか ◦

    提供する対象=レビュワー • 利用方法は評価方法を明確にする ◦ 〇〇をする機能というをA moduleのz methodとして実装する ◦ z methodを使ってやりたいことが出来ているのかをみる
  11. 開発したリリースアイテムをレビューする • レビュー対象は参加できているか? ◦ この時点ではまだチームで見るケースしかなかった • ちゃんと動くものが出来ているか? ◦ 実際に動くコードで確認する ◦

    この機能に求められる価値を出せているのか • レビューの実施者はまだ自分達であるものの、進捗管理だけのレビューでは なくなってきているのを実感 ◦ スプリントレビューが息を吹き替えした!
  12. Platform as a Productという取り組み自体を仮説検証 • ミニマムに始めて上手くいきそうな手応えを掴めた • より良くしていくためには何が必要かを考える ◦ 課題を見つけ分析、それを仮説として改善に取り組む

    ◦ フィードバックループの思考は大体のことに適応できる • 半期毎のスコープで検証する ◦ リリースサイクルが6週間なので、半期でも回せるのは4サイクル ◦ 大きめのテーマをいくつか選び取り組んた
  13. フィードバックの質を高める • リリースアイテムのフォーマットを改善 ◦ 概要、仮説、リリース、検証の4項目へ ◦ より詳細かつ必要な観点を記載 • チーム外からの評価を貰う ◦

    ユーザーインタビューの実施 ◦ 実際に作成したサービスのインターフェースに置き換えたPRのDiffをレ ビューしてもらう ▪ 新旧で比較してどの程度シンプルに利用できるようになったか
  14. リリースサイクルにプランニングとレビューを導入 • プロダクトマネジメントをチームに委譲したい • 必要な準備 ◦ GitHub Issueのフォーマットを整備 ◦ プランニングとレビューのプロセスをリリースサイクルに組み込み

    ◦ 責任者の任命(マネージャーの自分が担当) • 各チーム毎のテックリードに依頼 ◦ プランニング前にリリースアイテムを作成 ◦ レビューではリリースアイテム毎の状況を確認 ▪ 定義を満たしていれば責任者が承認する(Labelをつける)