Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プロダクトプラットフォーム開発におけるフィー ドバックループの回し方
Search
Recruit
PRO
January 17, 2024
Business
5
1.3k
プロダクトプラットフォーム開発におけるフィー ドバックループの回し方
2023/10/24に、TECH PLAYで発表した、吉岡の資料です。
Recruit
PRO
January 17, 2024
Tweet
Share
More Decks by Recruit
See All by Recruit
Balancing Revenue Goals and Off-Policy Evaluation Performance in Coupon Allocation
recruitengineers
PRO
1
13
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
120
VPC Traffic Mirroring とOSS を利⽤した ネットワークフォレンジック基盤の構築・運⽤
recruitengineers
PRO
1
44
スタサプ ForSCHOOLアプリのシンプルな設計
recruitengineers
PRO
3
1.1k
リクルート流データ基盤塾~鶴谷と学ぶ~
recruitengineers
PRO
5
250
『SUUMO』 スマホサイト デザインリニューアルへの挑戦
recruitengineers
PRO
5
340
『リクルートダイレクトスカウト』 のリニューアルから振り返る: ビジョンドリブンの可能性
recruitengineers
PRO
3
310
負債あるモノリスのオブザーバビリティに組織で向き合う
recruitengineers
PRO
9
400
あなたの知らないiOS開発の世界
recruitengineers
PRO
4
330
Other Decks in Business
See All in Business
都庁初!!局DX推進計画策定
tokyo_metropolitan_gov_digital_hr
0
400
merpay-overview_en
mercari_inc
1
17k
Startup CTO of the year 2024 株式会社ハイヤールー
kkosukeee
0
3.8k
不感対策ソリューション 詳細資料
jtes
0
170
パレットクラウド株式会社 採用ピッチ資料
palettecloud
0
5.5k
株式会社AGEST紹介資料/AGEST Recruitment
agest_recruit
0
2.2k
建築計画概要書の電子閲覧
tokyo_metropolitan_gov_digital_hr
0
320
We Are PdE!! 〜高価値なプロダクトを作れるようになるための勉強会〜
leveragestech
1
560
メタバースを活用した観光PR
tokyo_metropolitan_gov_digital_hr
0
320
BrainPad_AC_202411
brainpadpr
2
9.1k
Company deck
tricera
0
500
エンジニア向けオープンワーク会社紹介資料 / company profile
openwork
1
17k
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
136
6.6k
Into the Great Unknown - MozCon
thekraken
32
1.5k
Optimizing for Happiness
mojombo
376
70k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
A better future with KSS
kneath
238
17k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
KATA
mclloyd
29
14k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Site-Speed That Sticks
csswizardry
0
28
Building Your Own Lightsaber
phodgson
103
6.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Transcript
プロダクトプラットフォーム開発における フィードバックループの回し方 株式会社リクルート 小中高プロダクト基盤開発グループ 吉岡 良治 @ojiry 2023.10.24 【SmartHR/カケハシ/リクルート】 複雑化する開発体制におけるエンジニアの社内巻き込み術
こんばんは! • 吉岡 良治 / @ojiry • スタディサプリで基盤開発グループのEMをしている • RailsエンジニアとしてWeb開発をしていた時期が一番長いが、最近はGo
やRustを推している(尚、業務ではほぼコードを書いていない) • ヘアドネーションのために2021年から髪を伸ばしている
スタディサプリ 小学生から受験生や大人まで、学習したい全ての人が学べる月額制のオンライン学習サービス。 約4万本の録画授業動画が見られるベーシックプランのほか、オンラインコーチングプランや生配信で授業を受けら れるライブプランなど、一人一人が自由に学習できるよう、様々なプランを展開しています。 先生方が生徒個々人のレベルに合った最適な学習を提供できる校内インフラサービス。クラス全員に特定の講義や 確認テスト、宿題を配信することができるほか、アクティブラーニングに使える教材も提供。 生徒が夢中になって学び、希望する進路を実現することを支援しています。 ※ENGLISHは開発組織と採用経路が別です 隙間時間で1回3分から学習できる英語サービス。リスニングと発話を鍛えられる「新日常英会話コース」、短期間 でのスコアアップを狙う「TOEIC®L&R
TEST対策コース」、「ビジネス英語コース」があり、業界初オンライン完 結型コーチングも提供しています。
基盤開発でフィードバックループ をどのように実現したか 今日話すこと
三行サマリー • 基盤開発グループがぶつかった課題と組織的な制約 • エンジニア主導で実践するプロダクトマネジメント • グループで実践しているプラクティス紹介
Agenda| スタディサプリの基盤開発 基盤開発で発生した課題 ドメイン境界を定める Platform as a Product プロセスの最適化 存在感を出す
01 02 03 04 05 06
スタディサプリの基盤開発 01 00:01
スタディサプリにおける基盤は二種類ある • アプリケーションプラットフォーム ◦ SREが提供するアプリケーションを開発するための基盤 ◦ Kubernetes ManifestやTerraformなどを書いて利用する • プロダクトプラットフォーム
◦ 認証や動画配信などの機能を利用するための基盤 ◦ REST / JSON-RPC over HTTPのAPIとして利用する
スタディサプリにおける基盤は二種類ある • アプリケーションプラットフォーム ◦ SREが提供するアプリケーションを開発するための基盤 ◦ Kubernetes ManifestやTerraformなどを書いて利用する • プロダクトプラットフォーム
◦ 認証や動画配信などの機能を利用するための基盤 ◦ REST / JSON-RPC over HTTPのAPIとして利用する
プロダクトプラットフォームがない世界 • 複数のサービスに分散している処理がある • 変更を加えるには影響範囲の確認が必要 • 実装の負荷が非常に高い • 仕様のズレが起きやすい 学習者API
先生API 保護者 動画入稿 管理画面 学習者Web 先生Web バッチ処理 iOS/Android アーキテクチャ図(旧)
プロダクトプラットフォームがある世界 学習者API 先生API 保護者 動画入稿 管理画面 認証基盤 動画基盤 • 特定の処理がサービスとして集約
• 使いたい機能のAPIを呼ぶだけで良い • 実装の負荷が軽い • 仕様のズレが起きない
そんな世界を目指しています (まだ道半ばです😅)
基盤開発で発生した課題 02 00:03
開発を進めていく中で二つの大きな課題に遭遇 認知負荷の増大 スプリントレビューの形骸化
認知負荷の増大 • 基盤開発グループは機能開発で初めての横断領域チーム ◦ 発足当初は正式な組織ではなく兼務メンバーのプロジェクトチーム • 複数のサービスから参照されるモジュールはオーナーシップが曖昧 ◦ そこにいい感じにオーナーシップを持てるチームが生まれた ◦
事業的に優先度の高い横断プロジェクトなどが差し込まれる • 開発支援グループ誕生 ◦ 領域横断的な課題を解決するグループ ◦ 4名のプロダクトプラットフォームエンジニアが所属
認知負荷の増大 • 4名のチームで横断領域にある複数の課題を同時に進める ◦ バックログの優先順位付けが複雑化 ◦ アラートや他チームからの差し込み対応 ◦ コンテキストスイッチが多発 •
本来やりたかった基盤開発のプロジェクト一時停止 ◦ 再始動しても当時の事は記憶が曖昧で。。。 ◦ そして暫く立つとまた差し込みが😇
スプリントレビューの形骸化 • 当時の開発プロセスはスクラムガイドにほぼ準拠したスクラムらしきもの ◦ 専任のプロダクトオーナーがいない ◦ 専任のスクラムマスターもいない ◦ それ以外はスクラムガイド通り •
目標はAs-Isのまま機能をマイクロサービスへ切り出すこと ◦ 新しい機能は実装しない ◦ 整合性を担保しながらデータを移行する ◦ 参照先を古いデータベースから新しいサービスに切り替える
スプリントレビューの形骸化 • プロダクトバックログは技術中心な内容に ◦ 組織のTPMはビジネス寄りなため、技術中心のバックログ管理は難しい ◦ インクリメントも技術的な内容が中心に ▪ 組織にレビューできる人、レビューの意思を持てる人がいない •
結果関係者を集めてレビューを実施しても進捗確認の場にしかならず ◦ フィードバックループが回らなかった ▪ どんなフィードバックが欲しいかもチームは把握できてなかった ◦ 考慮漏れによる手戻りも多数発生していた
そこでチームは考えた🤔
ドメイン境界を定める 03 00:06
自分達がなぜここにいるのかを問うた • グループワークで Vision/Mission/Values を作成 • Vision (目指す世界観) ◦ プロダクトチームが価値の提供に集中できる世界の実現
• Mission (果たす役割) ◦ プロダクト開発を支援する堅牢なプロダクトプラットフォームを作る • Values (大切にする価値観) ◦ Presence ◦ Be fault tolerant ◦ Code-driven ◦ Prioritize safety
横断領域の課題を全て解決するわけではない • 自分達ができることは限られている ◦ 何を成すべきか選択と集中 ◦ 差し込みに対して意思決定する際にはVision/Missionに立ち戻る ▪ 異なるならNoと言って別の解決案を一緒に考える •
自分達のミッションを表す組織名に変更 ◦ 旧)開発支援グループ ◦ 新)小中高プロダクト基盤開発グループ ◦ 名前から受ける印象は大事 ▪ チーム内外で影響があると(自分は)実感
チーム内で決めて終わりではない • 自分達が何をしているグループなのか社内にアピールする ◦ 部内キックオフで発表 ◦ random-tech-talk(毎週実施されている技術に関する雑談会) ◦ GitHub Issueで一筆認める
• とにかく能動的にPresenceを出していく ◦ 過剰なくらいで丁度いい ◦ 少ないと認知されない
それでも高い認知負荷 • グループ内のドメインやコンテキストの増大は防いだ ◦ それでも既にある複数のコンテキストをハンドリングするのは難しい ◦ スプリントプランニングは変わらずに時間がかかる • 理想は一つのチームが一つのドメインに集中すること ◦
差し込みや並行作業によるコンテキストスイッチを最小化したい ◦ とは言えグループの人数は4名でチーム分割すると2名チームに
ドメインチームの立ち上げ • 思い切って1チーム2名の体制を構築 ◦ 採用を強化してメンバーを充足させること前提 • グループとして最優先で進めたかった認証ドメインを切り出す ◦ 残ったドメインは引き続き1チームで進める •
リスク観点は考慮しながら失敗を恐れずチャレンジをした ◦ まず試すことでフィードバックを得ることを最優先 ▪ 今回はリスクもあるので厳しければ直ぐに戻す前提 ◦ 事前にメンバーと期待値調整は手厚めに行う
ドメインチームにした結果 • 試みは成功しチームのスループットが向上した ◦ 計画していたロードマップは大幅な変更や遅延なく完遂 ◦ プランニングもスムーズに行えるようになった • コンテキストスイッチのコストはバカにできない ◦
メンバーからも作業がやりやすくなったという感想が • その後採用も無事に出来たので今は安定して2チームの体制を作れている
Platform as a Product 04 00:10
スクラムに変わる何かを探していた • 形骸化したスプリントレビューを何とかしたい ◦ 専属のプロダクトオーナーやスクラムマスターを用意するのは難しい ◦ 正しいスクラムは諦めなければいけない • スクラムに変わる開発プロセスは? ◦
色々探してはみたけど見つけられない ◦ ぼんやり発散してたのである
ある日偶然とあるブログを見つける 社内PlatformチームのProduct Management https://deeeet.com/writing/2020/10/07/internal-platform-product-management/ • 基盤(プラットフォーム)も社内向けプロダクトとして捉える ◦ 衝撃を受ける • プロダクトオーナーの責務を考えれば自然なことだった
◦ チームにはプロダクトマネジメントが必要 ◦ As-Isでの移行開発という性質が思考に制限をかけていた? • やるべきことは見えてきた ◦ あとは行動するのみ ◦ プロダクトマネジメントの本を何冊か読む
得られた知見を元にチームでミニマムに検証 • リリースサイクルという6週間のサイクルを定義 ◦ basecampのThe Six Week Cycleを参考 ▪ https://3.basecamp-help.com/article/35-the-six-week-cycle
• サイクル内で開発するインクリメントをリリースアイテムとして管理 ◦ 初期バージョンのフォーマットは下記の3つ ▪ 概要、提供される価値、どのように利用するか ◦ 必ずユーザーが実際に使えて試せるものを開発する • GitHub IssueとしてGitHub Projectsでロードマップとして社内に公開
実際にやってみる • 6週間で動くものを提供する ◦ 開発のスコープを強制的に削減させられる ◦ 重厚長大な設計議論などをしていると何も出来ない • 誰に対して価値を提供しているのか ◦
提供する対象=レビュワー • 利用方法は評価方法を明確にする ◦ 〇〇をする機能というをA moduleのz methodとして実装する ◦ z methodを使ってやりたいことが出来ているのかをみる
開発したリリースアイテムをレビューする • レビュー対象は参加できているか? ◦ この時点ではまだチームで見るケースしかなかった • ちゃんと動くものが出来ているか? ◦ 実際に動くコードで確認する ◦
この機能に求められる価値を出せているのか • レビューの実施者はまだ自分達であるものの、進捗管理だけのレビューでは なくなってきているのを実感 ◦ スプリントレビューが息を吹き替えした!
プロセスの最適化 05 00:14
Platform as a Productという取り組み自体を仮説検証 • ミニマムに始めて上手くいきそうな手応えを掴めた • より良くしていくためには何が必要かを考える ◦ 課題を見つけ分析、それを仮説として改善に取り組む
◦ フィードバックループの思考は大体のことに適応できる • 半期毎のスコープで検証する ◦ リリースサイクルが6週間なので、半期でも回せるのは4サイクル ◦ 大きめのテーマをいくつか選び取り組んた
フィードバックの質を高める • リリースアイテムのフォーマットを改善 ◦ 概要、仮説、リリース、検証の4項目へ ◦ より詳細かつ必要な観点を記載 • チーム外からの評価を貰う ◦
ユーザーインタビューの実施 ◦ 実際に作成したサービスのインターフェースに置き換えたPRのDiffをレ ビューしてもらう ▪ 新旧で比較してどの程度シンプルに利用できるようになったか
リリースサイクルにプランニングとレビューを導入 • プロダクトマネジメントをチームに委譲したい • 必要な準備 ◦ GitHub Issueのフォーマットを整備 ◦ プランニングとレビューのプロセスをリリースサイクルに組み込み
◦ 責任者の任命(マネージャーの自分が担当) • 各チーム毎のテックリードに依頼 ◦ プランニング前にリリースアイテムを作成 ◦ レビューではリリースアイテム毎の状況を確認 ▪ 定義を満たしていれば責任者が承認する(Labelをつける)
実際のフォーマット
他にも次のようなことをやっています • 開発ロードマップIssueの作成 • 新規開発でのPlatform as a Productの検証 • All-Hands
Meetingの実施 • グループ用Handbookを作成 • etc
存在感を出す 06 00:17
Presence “開発した機能を評価して貰うために、能動的な成果の共有を大切にす る。評価から学びを得て次の開発に活かす” • 基盤開発グループValuesの内の一つ • 開発しただけでは使って貰えない ◦ 使って貰えないとフィードバックが得られない •
そのためにも能動的にアピールしていくという意志が込められている • いくつか社内で行っている取り組みを軽く紹介する
リリースノート 隔週のAll-Hands Meetingで作成し関係者のいるチャンネルで共有
プロダクトチャンネル • 関係者を集めてやりとりするチャンネル ◦ 必要な情報などを集約して関係者と共有 • Darklaunch v2にも#darklaunch-dev-jaというチャンネルがあります
部内キックオフ 主にチーム毎のロードマップ計画と進捗やグループの戦略・戦術などを共有 右のような資料を作成 して説明しています 👉
ブログ ブログも立派な社内へのアピールツールになる 弊社ではブログ記事を様々な関係者がレビューしてくれるので、プラットフォー ムの記事を書くだけで社内への宣伝になる https://blog.studysapuri.jp/entry/2022/12/19/darklaunch-ujihisa
つまるところ認知して貰うことが重要なのかもしれない • 目的はプラットフォームを利用してもらいフィードバックを得ること ◦ でも知って貰わなければ便利な機能も使って貰えない ◦ つまりフィードバックは得られない • ここまで考えてValuesにPresenceを含めたわけではない ◦
ただ結果としてとても重要なValueにはなっている 社内にPresenceを出していけ!
まとめ • 自分達がなぜここにいるのかをちゃんと言語化する • 基盤をプロダクトとして捉えプロダクトマネジメントの手法を活用する • どのような改善もフィードバックループを素早く回すことが大事 • フィードバックを得るには能動的に成果を共有し認知してもらう
ご清聴ありがとうございました
参考資料 • 社内PlatformチームのProduct Management | Taichi Nakashima • The Six
Week Cycle - Basecamp Help