More Effective Agile 〜 “ソフトウェアリーダー”になるための28の道標
サーバントワークス長沢さん監訳のConstrux Software社のスティーブ・マコネルによるアジャイルリーダーのための本。
最後の終わりにを除けば、4つのパートは全て「より効果的な〜」で始まっている。ちょっと特殊なケースの4つ目のパートの最後の方を除いて、エッセンスを要約して紹介。
スクラムのお作法というよりは、実践に基づく経験からより効果的にアジャイル開発を行うための方法が書かれており、スクラムチームを率いているリーダーやスクラムマスターほど、うなづくことが多いと思う(ぼくもうなづきまくりだった)。ソフトウェア開発のプラクティス、組織、リーダーの在り方としても参考になるし、スプリントを振り返るたびに関係するところを読み直して参考にしていきたい本。
より効果的なアジャイル
アジャイル開発とシーケンシャル開発の比較、ソフトウェアプロジェクトのCynefinフレームワークによる分類。不確実性が高ければ高いほど、煩雑系(シーケンシャル)のアプローチよりも複雑系(アジャイル)のアプローチのほうが有利になること。
OODAは、複雑系のプロジェクトに役立つモデルである。シーケンシャル開発では不確実性がリスクとみなされ、OODA(アジャイル開発)では不確実性がチャンスと見なされる。
より効果的なチーム
アジャイルは、スクラムから始めること。
スクラムの実践において検査と適応を行うこと。
チームの自律性を養い、熟達を支援し、目的意識を養うこと。
個人のキャパシティを向上させることで、チームのキャパシティを向上させること。
チームのEQ(感情知性、Emotional Intelligence)を向上させ、ソーシャルスタイルを学びコミュニケーションの取り方を覚えること。
より効果的な作業
プロジェクトを小さく保ち、スプリントを短く保ちつつ、バーチカルスライスでのデリバリーを行うこと。
大規模なプロジェクトは、ブルックスの法則とコンウェイの法則に基づき、そのプロジェクトに取り組むチームの作業を完全に分割できるようなアーキテクチャとすること。
完成の定義(DoD)を作成し、自動化したユニットテストと自動化したユーザーレベルのテストは、完成の定義の基本的な基準であること。
準備完了の定義(DoR)を作成し、スプリントプランニングミーティングの前にプロダクトバックログのリファイメントが完了していること。
有能なプロダクトオーナーにより、ストーリーマッピングで要求を洗い出しておき、優先順位を決めておくことで、実装が目前に迫ったところで初めてリファイメントを行うことができる。
新しい機能を作成することよりもデリバリー/デプロイパイプラインを正常に動作させることをメンバーに伝える。
より効果的な組織
アジャイルの実践の成否はリーダーシップにかかっている。
細部ではなく成果を管理し、活動ではなくスループットに焦点を合わせること。スループットを最大化するには、多少の息抜きも必要なことを受け入れなければならない。
間違いを許し、心理的安全性を確保すること。
アジャイルロールをサポートするためのプラクティスコミュニティを組織の中に確立すること。
作業の量、品質を計測し、計測値は自己改善を支援することが目的であることをチームに共有し透明性を保つこと。
スプリントレビュー、スプリントレトロスペクティブ、スプリントプランニングでチームのパフォーマンスを確認すること。