フロー効率の向上から始める開発生産性の高め方 ~ モブワークを沿えて ~ / how to go on high peformance with mob work
by
面川泰明
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
フロー効率の向上から始める 開発生産性の高め方 YAPC::Japan::Online 2022 #yapcjapan | 2022/3/5 track B | @omokawa_yasu モブワークを沿えて 1
Slide 2
Slide 2 text
自己紹介 2
Slide 3
Slide 3 text
3 副業:占い師 おもかわ やすあき
Slide 4
Slide 4 text
モブワーク フロー効率 高めたよ 4 トークテーマで一句
Slide 5
Slide 5 text
概要 5 1. モブワークでフロー効率を上げることができた 2. モブワークでフロー効率が上がった理由をふりかえる 3. 今後、さらにフロー効率を高めるには?
Slide 6
Slide 6 text
当時の開発体制 6 PdMチーム プロダクトオー ナー 開発チーム QAチーム QA担当 一般メンバー テックリード スクラムマスター デザイナー
Slide 7
Slide 7 text
スプリント バックログ 当時の開発手法 7 デイリー スクラム 1週間の スプリント スプリント レトロスペクティ ブ スプリント プランニング スプリント レビュー インクリメント プロダクト バックログ
Slide 8
Slide 8 text
発生した課題:コードレビューがボトルネックに 8 PdMチーム 開発チーム QAチーム QA担当 一般メンバー テックリード スクラムマスター レビュー依頼 多すぎて キャパオーバー プロダクトオー ナー デザイナー
Slide 9
Slide 9 text
解決策:コードレビューをモブワークにした 9 レビュイー レビュアー ① オンライン or オフラインで開発メンバーが 全員集まる。レビュイーが担当タスクの背景と実 装意図を説明 ② 軽く質疑応答した後、モブプログラミング。 そ の場でマージ・デプロイまで行う
Slide 10
Slide 10 text
結果:デプロイまでの時間が短縮され、 フロー効率が向上した ● タスク着手からデプロイまでの時間(リードタイム) ○ 185%向上 ● 1スプリントあたりのベロシティ ○ 115%向上 10
Slide 11
Slide 11 text
185% リードタイムの向上率はかなりよかった ベロシティはむしろ下がると思ってた(稼働率が下がったので) 11
Slide 12
Slide 12 text
モブワークの効果をふりかえってみた 12
Slide 13
Slide 13 text
効果1:アイドルタイムの削減 13 レビュイー レビュアー プルリクエスト レビュー 修正 マージ プルリクエスト レビュー 修正 マージ モブワーク Before After
Slide 14
Slide 14 text
効果2:マルチタスク防止 リアルタイムにフィードバックが得られるため、レビュイーがマルチタスクを防止 できる 14
Slide 15
Slide 15 text
効果3:レビュアーの負担を軽減 ● モブワークで初めて分かったが、最もレビュアーが時間を掛けるのは実装 意図や背景の理解だった ● レビュイーに口頭で説明してもらえるため、レビュアーの理解が進む 15
Slide 16
Slide 16 text
効果4:チーム全体の学習を促進 ● 網羅的にコードレビューするとドメイン知識が深まる ● 1人だと実装パターンのアイデアは2~3個だが、モブワークすると5~6個く らい出る ● メンバーの集合知がテックリードに勇気を与える ○ テックリードに集中したプレッシャーを全員で分担 ○ メンバーの多角的な視点は最高の学習機会 16
Slide 17
Slide 17 text
効果5:テックリードがレビューするときの 思考過程が全員に伝わる ● 特に印象深かったチェック観点 ○ エッジケースが足りてるか、かなり時間を掛けて見てた ○ プルリクエスト作成者にもしものことがあったら、レビューしているコー ドを引き継ぐ責任を取れるかどうか見てた ○ コード規約・フォーマットは、Rubocopなどのリンターに任せているの でレビューしてなかった 17
Slide 18
Slide 18 text
効果6:参加メンバー全員のモチベーション向上 ● リアルタイムにコードがデプロイされるとテンションが上がる ● ライブコーディングは基本的に楽しい(人にもよるけど) ● 1人で詰まると地獄だが、みんなで詰まると心が折れない 18
Slide 19
Slide 19 text
モブワークの成功をサポートした要素 19
Slide 20
Slide 20 text
ウチの組織では、技術面とチーム面の2つの要素がモブワークをサポートしてくれました 20 モブワークの成功 ● 継続的デリバリーの整備 ○ 自動テスト ○ トランクベース開発 ○ 監視 ○ 高いテストカバレッジ ● 心理的安全性の確保 ○ ワーキングアグリーメント明 文化 ○ タイムボックス確保 ○ コラボレーションスペース確 保
Slide 21
Slide 21 text
技術面の要素について補足 ● トランクベース開発でビッグバンリリースを防ぐ ○ ブランチは1日でマージできるくらいのサイズに調整する ○ フラグで表示制限して段階的にリリースできるようにする ● 高いテストカバレッジ ○ カバレッジが高いと安心してリファクタリングできる ● 自動テスト ○ 不安定(FLAKY)なテストはこまめに改修してCIコストを改善 21
Slide 22
Slide 22 text
チーム面の要素について補足 ● ワーキングアグリーメントを明文化 ○ 「尊敬・感謝・称賛」を大事にすることをWikiに書き起こした ○ レビューコメントにキャプションをつけ、「相手にどんなリアクションを求 めているのか」を判別できるように ● タイムボックス確保 ○ デイリースクラムの後にモブワークをスケジューリングし、「意志の力 に頼らない運用」にする(イフゼン・プランニング) 22
Slide 23
Slide 23 text
チーム面としてもっとも重要だと思ったこと 23 徹底して規約を定め、コス トパフォーマンスの悪いコ ミュニケーションを撲滅す る
Slide 24
Slide 24 text
今後やろうと思っているアイデア 24
Slide 25
Slide 25 text
課題:見積もりがボトルネックなので解消したい 25 要件定義 見積もり タスク分解 開発 デプロイ 見積もり精度を上げるためにタスクを分 解する作業を入れたが、 長時間かかる割 に見積もり精度が上がらないためコスト パフォーマンスが悪い
Slide 26
Slide 26 text
案:モブワークによる改善 26 要件定義 見積もり タスク分解 開発 デプロイ Before After 要件定義 見積もり モブワーク デプロイ
Slide 27
Slide 27 text
27 要件定義 見積もり タスク分解 開発 デプロイ Before After 要件定義 見積もり モブワーク デプロイ ● コードを見ずにタスク分解するのは困難 。ざっく り見積もりしてすぐモブワークを始めたほうが 確実 ● つねにモブワークすることで、 タスクを分解しメ ンバーに割り当てるコストを削減
Slide 28
Slide 28 text
案:モブワークしやすい開発体制に変更する 28 PdM 開発 QA 設計からデプロイまで完遂できるチーム (メインチームと仮称) Before After
Slide 29
Slide 29 text
すばやいフィードバックを目指す開発スタイル 29 ● 動くものを作り、リアルタイムで改善を 加える ● モブワークは口頭のやりとりが増える ため、暗黙知が多くなることがリスク。 意思決定した内容の文書化を徹底す る ● コミュニケーションコストが高い箇所は ドメインを分割するチャンス。 切り出し たドメインに対応する別のチームを作 る ※ 書籍『チームトポロジー』の図を一部変更して掲載
Slide 30
Slide 30 text
まとめ 30
Slide 31
Slide 31 text
長続きするハイパフォーマンスなプロダクト チームは、より効率的な共同作業の方法を見 つけてデリバリーのボトルネックを取り除くこと で、デリバリー頻度を着実に向上させることが できる 31 『チームトポロジー』より引用
Slide 32
Slide 32 text
今回の話はこちらの4冊を参考にしました。 興味ある方はぜひ読んでみてください! 32
Slide 33
Slide 33 text
何か参考になれば嬉しいです。 たのしいチーム開発ライフをお過ごしくださ い! 33
Slide 34
Slide 34 text
ご清聴ありがとうございました! 34