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
Hatena
July 19, 2024
Programming
0
9
トップダウン・ボトムアップの両面から作るチーム内マトリクス組織
「ここだけの話!企業文化とチームビルディング」サブカル業界Developers 勉強会 Vol.7
https://subculturedev.connpass.com/event/319208/
Hatena
July 19, 2024
Tweet
Share
More Decks by Hatena
See All by Hatena
はてなインターンシップ2024 HTTP, Web, API 講義資料
hatena
0
1.1k
はてなインターンシップ2024 RDBMS ブートキャンプ講義資料
hatena
0
930
はてなインターンシップ2024 フロントエンドブートキャンプ講義資料
hatena
0
850
はてなインターンシップ2024 コンテナ講義資料
hatena
0
950
はてなインターンシップ2024 コンテナオーケストレーション講義資料
hatena
0
840
はてなインターンシップ2024 インフラ講義資料
hatena
0
860
はてなインターンシップ2024 AI 講義資料
hatena
0
850
はてなインターンシップ2024 ブログライティング講義資料
hatena
4
3.1k
はてなリモートインターンシップ2023 Web, HTTP 講義資料
hatena
1
500
Other Decks in Programming
See All in Programming
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
190
ASP.NET Core の OpenAPIサポート
h455h1
0
150
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
770
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
130
2025.01.17_Sansan × DMM.swift
riofujimon
2
620
Rubyでつくるパケットキャプチャツール
ydah
0
260
Alba: Why, How and What's So Interesting
okuramasafumi
0
230
Immutable ActiveRecord
megane42
0
100
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
DevFest - Serverless 101 with Google Cloud Functions
tunmise
0
140
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
0
110
Scaling your build logic
antalmonori
1
120
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
260
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
510
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
980
Navigating Team Friction
lara
183
15k
A better future with KSS
kneath
238
17k
Optimizing for Happiness
mojombo
376
70k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Transcript
トップダウン・ボトムアップの 両面から作る チーム内マトリクス組織 株式会社はてな id:koudenpaid:onk / id:masawada 2024-07-19 サブカル業界Developers 勉強会
Vol.7
突然ですが… 2
ジャンプ+リニューアル! 3 https://hatena.co.jp/press/release/entry/2024/03/29/120000
GigaViewer https://hatena.co.jp/solutions/gigaviewer
GigaViewer • マルチテナントのマンガ配信サービス • GigaViewer for Apps ◦ スマートフォン向け ◦
ここに少年ジャンプ+が加わった • GigaViewer for Web ◦ Webブラウザ向け ◦ こちらは元々少年ジャンプ+を運用していた
マンガメディア開発チーム • GigaViewerのサーバサイドチーム • GigaViewer for Apps ◦ ここのバックエンド ◦
スマホアプリ開発は別チーム • GigaViewer for Web ◦ こちらはフロントエンド、インフラも含めて全 般
前略)マトリクス組織 • ジャンプ+リニューアルを中心に色々変化 ◦ 増員、体制など • その背景、変化の設計を素朴にご紹介 ◦ トップダウン ◦
ボトムアップ
第一部 トップダウンでの再設計 8
自己紹介 • id:koudenpa ◦ コウデン • はてなでの役割 ◦ マンガメディア開発チーム ◦
テックリード ▪ エンジニアリングを広く見る
代読者自己紹介 • id:onk ◦ オンク • はてなでの役割 ◦ マンガメディア開発チーム ▪
が所属している本部付の EM
目次 • チーム事情 ◦ どういう背景、変化があったのか • 再設計 ◦ その事情を踏まえてどう変化させたのか
チーム事情 12
マンガメディア開発チーム • サーバーサイド (Web/API)開発チーム ◦ インフラ含む ◦ iOS/Androidは別チーム • そこそこ大所帯
◦ 30人超 ◦ エンジニアだけで 15+
ジャンプ+リニューアルプロジェク ト • 結構大きな規模 • 2年くらい開発 • ビッグバンリリース
チーム内チームに分かれて開発 • 開発規模に対応するために増員 • チーム内のサブチーム (ユニット)に分化 ◦ ジャンプ+リニューアルを担当するユニット ▪ 便宜上「ジャンプ+ユニット」
◦ その他のテナントを担当するユニット ▪ 便宜上「その他ユニット」
続・チーム内チームに分かれて開発 • 後にユニットが更に分化 ◦ ジャンプ+ユニット1 ◦ ジャンプ+ユニット2 ◦ その他ユニット •
3ユニット体制に
続・チーム内チームに分かれて開発 マンガメディア開発チーム ジャンプ+1 ジャンプ+2 その他
チームの開発運用対象 • 主に1つのモノレポ! ◦ アプリケーションのコード他 • +周辺のリポジトリ ◦ IaC、CI/CD、ユーティリティなど •
全員で同じものを触る
関心ごとの差 \ ジャンプ+チーム その他チーム デリバリー ビッグバン準備 継続的デリバリー 開発内容 ほぼAPI・ジョブ 含むView
テナント ジャンプ+ 色んなテナント
開発激化 • ビッグバンリリース準備 ◦ 普通に大変 • 大変だと? ◦ 主な関心事以外に気が回らなくなっていく
結果:チーム内チーム断絶進む \ ジャンプ+チーム その他チーム デリバリー ビッグバン準備 継続的デリバリー 開発内容 ほぼAPI・ジョブ 含むView
テナント ジャンプ+ 色んなテナント 気が回らなく 関心がなく なっていく
チーム内チームが生まれる前の会議 体 マンガメディア開発チーム エンジニア昼会 テクノロジーマネジメント会 フロントエンド会 バックエンド会
滅んだ会議体 • テクノロジーマネジメント会 ◦ -> 休止 • バックエンド会 ◦ ->
消滅 • フロントエンド会 ◦ -> 日々のToil確認程度の縮退運転 • 各会議体については後述
ジャンプ+リリース • 冒頭お伝えした通り ◦ 無難にリリース • ある種の言い訳が消えた ◦ 忙しさにも隙間ができた •
チームの転換期
風向き、変わりそうね • 否、変えて行くぞ! • 機会を得たので
再設計 26
解決したい課題 • チーム内チーム断絶進む • +チーム規模が大きくなってきたことへの対応 ◦ >開発規模に対応するために増員 ◦ の分
素直に復活 +αの再設計 • 滅んだ会議体は不要ではなかった • 素直に復活を基本に • チーム事情の変化を反映
かつての会議体 マンガメディア開発チーム エンジニア昼会 テクノロジーマネジメント会 フロントエンド会 バックエンド会
かつての会議体 マンガメディア開発チーム エンジニア昼会 テクノロジーマネジメント会 フロントエンド会 バックエンド会 ほどほどの規模のチームで 関心事毎の会議体を回していた
再設計前の会議体 マンガメディア開発チーム サブチーム サブチーム サブチーム エンジニア昼会 テクノロジーマネジメント会(滅んだ) フロントエンド会(縮退した) バックエンド会(滅んだ)
再設計前の会議体 マンガメディア開発チーム サブチーム サブチーム サブチーム エンジニア昼会 テクノロジーマネジメント会(滅んだ) フロントエンド会(縮退した) バックエンド会(滅んだ) サブチームに分かれたうえ、
忙しさで関心事毎の会議体も 縮退していた
再設計後の会議体 マンガメディア開発チーム サブチーム サブチーム サブチーム エンジニア例会 テクノロジーマネジメント会 フロントエンドサブ会 非機能サブ会 After
Perlサブ会
サブチーム • 日々の開発等の業務遂行の単位 • 原則は独立して機能 • 他のサブチームとは適宜連携
サブチーム • マトリクスの縦軸 • エンジニア主体の設計ではない ◦ 再設計対象外 • サブチームがある状態が前提
課題へのアプローチ • チーム内チーム断絶進む ◦ 横断的な関心事を抽出、会議体(サブ会)設置 ◦ サブ会:サブチーム間の橋渡しロールを設置 • チーム規模が大きくなってきたことへの対応 ◦
頻度やアジェンダ見直し • マトリクスの横軸でフォローしていく
エンジニア例会 • 頻度やアジェンダ見直し • 毎日の昼会 ->毎週の例会 ◦ 昼会も隔日、任意参加で開催 • 主に今直面している事が関心ごと
◦ 日々の開発に当たっての報連相 ◦ 雑談 マンガメディア開発チーム サブチーム サブチーム サブチーム エンジニア例会 テクノロジーマネジメント会 フロントエンドサブ会 非機能サブ会 After Perlサブ会
テクノロジーマネジメント会 • 頻度やアジェンダ見直し ◦ サブチームやサブ会のリードが参加 ◦ 人数が多いため頻度を落として概観の共有を主 に ◦ 現状の課題、今後発生しそうな課題
• チームのエンジニアリングを統括 • 他、サブ会の関心事以外の検討 マンガメディア開発チーム サブチーム サブチーム サブチーム エンジニア例会 テクノロジーマネジメント会 フロントエンドサブ会 非機能サブ会 After Perlサブ会
サブ会 • 抽出した関心ごとを扱う • オーナーの他に各サブチームとの情報交換役を設定 ◦ 育成も兼ねて比較的若手 • 関心ごとについての「今後の施策」を検討・決定 ◦
現在は意識せずとも例会・昼会で検討出来てい る
サブ会 • 検討までが責務 • 実施は別途計画 ◦ テクノロジーマネジメント会が調整など
抽出した関心ごと • Webサービス開発運用の主要素 ◦ フロントエンド ◦ バックエンド(の今後) ◦ その他全般! •
を抽出した ◦ 細分化すればよいわけではないはず
フロントエンドサブ会 • フロントエンド会の系譜 • Webフロントエンド全般がテーマ ◦ テンプレートエンジン、 Next.js混在 ◦ これをどのように変えて行くか
◦ デザイナーを含む開発フロー ◦ など マンガメディア開発チーム サブチーム サブチーム サブチーム エンジニア例会 テクノロジーマネジメント会 フロントエンドサブ会 非機能サブ会 After Perlサブ会
After Perlサブ会 • バックエンド会の系譜 ◦ 滅ぶ前にも GraphQL会のように形を変えていた こともあった • サーバサイドの今後がテーマ
◦ 長期に開発運用して複雑化 ◦ DXの高い言語スタック・ アーキテクチャ ◦ など マンガメディア開発チーム サブチーム サブチーム サブチーム エンジニア例会 テクノロジーマネジメント会 フロントエンドサブ会 非機能サブ会 After Perlサブ会
非機能サブ会 • 開発以外全般がテーマ ◦ サービスインフラ ◦ CI/CD ◦ などなど マンガメディア開発チーム
サブチーム サブチーム サブチーム エンジニア例会 テクノロジーマネジメント会 フロントエンドサブ会 非機能サブ会 After Perlサブ会
まずは再始動 • 4月から緩やかに再設計 • 5月中旬から 6月にかけて設計した体制に移行
まずは再始動 • 会議体の設計を周囲と調整 • 既存会議体定例のアジェンダ見直し • サブ会 ◦ オーナー等のロール打診 ◦
期待の伝達
まずは再始動 • 再設計して再始動はした
少しやってみて • 2,3ヶ月は経ったが? ◦ 正直まだよく分からない • 各サブ会は今後の施策を検討してくれている ◦ 何をどの順で検討するか? を決めてもらった ◦
今後、具体的な施策が出てきたなら ……
俺たちの戦いはこれからだ • 検討した施策を実施していけるか? は未知 • まずは課題へのアプローチを始めた、でよし! • トップダウン ◦ テックリードから見た •
チーム内マトリクス組織 ◦ サブチームとサブ会他 • でした
第二部 ボトムアップでの設計 50
自己紹介 • id:masawada • はてなでの役割 ◦ シニアエンジニア ◦ 非機能サブ会リード
非機能サブ会 • 機能開発以外の全てを扱う基盤的な存在 • プロダクトの近い未来を考える • 各サブチームから 1名参加して定例を開催
話すこと • 「非機能サブ会」立ち上げの流れ • 運用してみてどう ?
立ち上げ前 54
枠組みは決まっていないけど どうやら非機能サブ会というものを 立ち上げるらしい ……
TLからのオーダー • 以下を作って ! ◦ サブ会の関心ごとの定義 ◦ 向こう1年の事業計画に影響を与える情報 ◦ 翌年度の事業計画に影響を与えうる情報
TLからのオーダー • 期待(参考) ◦ 安定性の向上 ◦ 運用しやすさの向上 ◦ DX向上
プロダクトの課題 • リソースの使い方が非効率な箇所がある ◦ 長年機能開発に注力したことによるもの • インフラ構成をモダンにする途上で止まっている • などなど
どう手をつけるか 59
流れ • ゴールをすりあわせる w/ TL • 情報収集する • 関心ごとを整理する •
メンバーで期待を揃える
ゴールをすりあわせる • カンバンを作ってマイルストーンを載せる • 以下の詳細を詰める ◦ 他の会との接続点 ◦ サブ会の管掌範囲 (=関心ごと)
情報収集する • 関係者は? • 他に同様のことをやっているサブチームはある ? • →接続点の検討に役立てる ◦ ヒアリング先や現在進行しているプロジェクト
を把握しないと課題を整理できない
情報収集する
情報収集する • チームのエンジニアは何に困っている ? • 開発ロードマップは ? • ディレクターは何を考えている ?
• 他のサブ会は何を考えている ? • →関心ごと・課題の整理に役立てる
関心ごとを整理する • TLからの期待 (再掲) ◦ 安定性の向上 ◦ 運用しやすさの向上 ◦ DX向上
• 本当に……?
関心ごとを整理する • 結局のところ全部 ! とは言えないので …… ◦ 他サブ会との干渉は避ける ▪ 相談先が分かっていると便利ですね
◦ 関心を分類して優先順をつける
関心ごとを整理する 性質 やることの例 売上減リスクの低減 運用の安定化 セキュリティ 運用費の削減 コストトラッキング コスト削減 開発工数の削減
デリバリー改善 ソフトウェア的な複雑度の低減
関心ごとを整理する • 整理した課題をマイルストーンに載せる ◦ ブレストでどこが盛り上がったか ? ▪ デリバリ話題 ▪ パフォーマンス話題
◦ もともと考えていた課題が補強された
関心ごとを整理する • 領域だけでなく時間軸も関心ごとの境界 ◦ 未来のことは After Perlサブ会 ◦ それ以外は非機能サブ会 •
近い未来にどうしていきたいかにフォーカス
期待を揃える • 定例への参加メンバーはこちらから打診 ◦ サブ会、サブチームの網羅性を重視 ◦ 構成の意図とメンバーの意思、両方を大切に ▪ メンバーの気持ちがないと回らない
期待を揃える • メンバーやディレクターに説明する会を設ける • 重要なことは定例のアジェンダに書いておく
決めるコツ 72
TLと毎日会話する • 認識のズレを最小にして手戻りを防ぐ • 区切りがあると動きやすい ◦ 最低限見せられるものを仕上げる方に力が働く ◦ 期限がないと無限に考えてしまい速が落ちがち
全ての考えをメモ書きとして残す • 経緯を思い出すのに便利 • 考えをみんなにレビューしてもらいやすい ◦ Working Out Loud [検索]
◦ みんなの見えるところに流れるのが理想
運用してみて 75
運用してみてどうだった? • 会の自由度を高く保てている ◦ 会の間で会話してあとで TM会に共有 • 例: 他サブ会と課題を融通しやすい ◦
キャッシュまわりは After Perlサブ会ではなく 非機能サブ会で、とか
運用してみてどうだった? • 全員が全ての領域に詳しいわけではない • その場で考えよう、が難しい場面もありそう ◦ 宿題を活用していく ◦ 宿題もメインタスク
まとめ 78
まとめ • マトリクス型組織の大枠をトップダウンで整備 • 具体的な内容はボトムアップで整備 • 両面から手をとりあってやっていく • 俺たちの戦いはこれからだ !