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

不確実性に向き合うためにチームの アジリティを高める開発タスクの切り方

tanden
October 05, 2022

不確実性に向き合うためにチームの アジリティを高める開発タスクの切り方

XP祭り2022の発表資料です

tanden

October 05, 2022
Tweet

More Decks by tanden

Other Decks in Programming

Transcript

  1. 自己紹介① BASE株式会社 ネットショップ作成サービス「BASE」の エンジニアリングマネージャー Scrum Master (LSM) 北海道旭川市出身 2016.09 -

    新卒でWebゲーム開発 2020.01 - BASE株式会社で「BASE」の開発 本日はよろしくお願いします!     炭田高輝(tanden) Back-End Web Developer 2
  2. 自己紹介② • 新卒1年目に「アジャイルサムライ」に出会う • 「おお、これだ!」と思い、本を読み漁ったりスクラムマスターの 研修に行ってみる • スクラムをチームに提案して実際にトライしてみるも、なんとなく 良くなったがうまく定着させることができなかった •

    途中1社を経て、BASE株式会社で「よりよい開発チーム」「品質の 高いものをより早くユーザーに届ける」にはどうすればよいか、模 索中です     炭田高輝(tanden) Back-End Web Developer 3
  3. 不確実性とは何か 不確実性の定義 • 白黒はっきりつけられない曖昧さ(確率)が 残っている状態や状況のこと • 不確実性を減らすとは、確率をどちらかに 寄せる作業(白黒つける) Q. この設計で負荷の問題は起きるのか、起きな

    いのか? A. 調査の結果、起きるとわかる 結論を出すことで、曖昧さがなくなり、不確実性 が減ったとみなせる 6 エンジニアリング組織論への招待 ~不確実性に向き 合う思考と組織のリファクタリング 広木大地 著
  4. 不確実性に振り回される5つのパターン 不確実性に振り回されれる5つのパターン • 突発パターン • 手戻りパターン • 大群パターン • 氷山の一角パターン

    • 忘却パターン 5つのパターンが起きることを前提として うまくコントロールできるようにすれば、開発がぐんと前に進むはず 16
  5. 受け渡し型の開発とは 成果物を受け渡していく開発のこと • 要件定義 • 仕様作成 • デザイン • 設計

    • スケジュール見積もり • バックエンド実装 • フロントエンド実装 • 結合テスト(QA) • 受け入れテスト(QA) • リリース 19 ウォーターフォールやリレー形式の開発と呼ぶこともあります
  6. バッチサイズが大きいことの問題点 受け渡し型開発は構造上バッチサイズが大きくなってしまう • 突発パターン • 手戻りパターン • 大群パターン • 氷山の一角パターン

    • 忘却パターン バッチサイズが大きいと上の5つのパターンが起こりやすく、また対応も しにくいことを見ていきます 22
  7. 各パターンの合わせ技で不確実性が襲ってくる② • 受け入れテストで突然(突発) • やっぱりこの機能も必要です(手戻り) • 全部作り直しですが、どこから手をつけましょう(大群) 29 要件定義 仕様作成

    デザイン 見積もり バックエンド フロントエンド 結合テスト 受け入れテスト リリース 設計 受け入れテストで突発的に 手戻りが発生して、一気にやることが増える
  8. ユーザーストーリーによる分割② • ユーザーとして • タスクを登録したい • タスクを忘れたくないからだ • ユーザーとして •

    タスクを完了状態にしたい • 終わっていないタスクを判別したいからだ • ユーザーとして • タスクを削除したい • する必要がないタスクを実行してしまう無駄をなくしたいからだ 43
  9. ユーザーストーリーによる分割② 44 • ユーザーとして • タスクを登録したい • タスクを忘れたくないからだ • ユーザーとして

    • タスクを完了状態にしたい • 終わっていないタスクを判別したいからだ • ユーザーとして • タスクを削除したい • する必要がないタスクを実行してしまう無駄をなくしたいからだ
  10. ユーザーストーリーによる分割③ • ユーザーとして • タスクのタイトルを設定したい • タスクを見つけやすくして、実施漏れを防ぐためだ • ユーザーとして •

    タスクの詳細を記入したい • タスクの背景や実施する理由を忘れないようにするためだ • ユーザーとして • タスクの優先度を設定したい • 重要度によってタスクを分類したいからだ 45
  11. ユーザーストーリーによる分割③ • ユーザーとして • タスクのタイトルを設定したい • タスクを見つけやすくして、実施漏れを防ぐためだ • ユーザーとして •

    タスクの詳細を記入したい • タスクの背景や実施する理由を忘れないようにするためだ • ユーザーとして • タスクの優先度を設定したい • 重要度によってタスクを分類したいからだ 46
  12. ユーザーストーリーによる分割④ • ユーザーとして • タスクのタイトルを保存したい • タスクを見つけやすくして、実施漏れを防ぐためだ • ユーザーとして •

    タスクのタイトルを更新したい • タスクの内容が変わったことを反映するためだ • ユーザーとして • タスクのタイトルの設定に失敗したことを知りたい • タイトルの保存をやり直す必要があるかどうかを知れるからだ 47
  13. ユーザーストーリーで小さく分割する 48 ToDo管理をしたい 登録をしたい 完了にしたい 削除したい タイトルを設定をしたい 詳細を記入したい 優先度を設定したい タイトルを保存をしたい

    タイトルを更新をしたい 設定に失敗したこと を知りたい ユーザーストーリーを使って開発タスクを小さくしていくことで ユーザー相当の検査が行われるまでのバッチサイズを小さくできます
  14. バッチサイズ小さいと5つのパターンに対応しやすい バッチサイズを小さくすることで • 切れ目が沢山でき、方向転換が簡単になる(突発パターン) • 無駄が少なくなる(手戻りパターン) • やることの多さに圧倒されない(大群パターン) • 不確実性を捉えやすい(氷山の一角パターン)

    • 忘れないうちにやりきれる(忘却パターン) バッチサイズを小さくするためには • 着手ギリギリまで工程に分けない • 受け入れテストを含むように開発タスクを分割する • ユーザストーリーでの分割が便利 54
  15. スコープを柔軟に変えられる② 59 ToDo管理をしたい 登録をしたい 完了にしたい 削除したい タイトルを設定をしたい 詳細を記入したい 優先度を設定したい タイトルを保存をしたい

    タイトルを更新をしたい 設定に失敗したこと を知りたい 「タイトルの設定」と「詳細の記入」を作って使ってみて「優先度を 設定できる機能は後回しにしても十分機能として使える」のような判 断がしやすくなる。
  16. 分割にも慣れが必要 困った場合はお近くのスクラムマスターにぜひご相談を! もしくは、以下の書籍やブログが参考になります • ryuzeeさんのブログ「プロダクトバックログアイテムの分割方法」 • 『アジャイルな見積りと計画づくり』 12章「ユーザーストーリーの分割」 • 『アジャイルエンタープライズ』

      18章「ユーザーストーリーで協力する」 • 『エッセンシャルスクラム』     5章「要件とユーザーストーリー」   6章「プロダクトバックログ」 • 『More Effective Agile』     9.4「基本原則:バーティカルスライスでのデリバリー」 • 『スクラム実践入門』        3.3「スプリントプランニング」 5.4「ユーザーストーリー」 • 『スクラム現場ガイド』       12章「ストーリーやタスクを分割する」 • 『大規模スクラム(LeSS)』    11章「プロダクトバックログリファインメント」 64