「リーン開発の現場」はアジャイルサムライの再来となるか
ヘンリック著「リーン開発の現場 カンバンによる大規模プロジェクトの運営」の翻訳がついに出版されました。
藤原さん、市谷さん、お疲れ様でした。
ざっくり読み直した感想をラフなメモ書き。
ネタバレを含んでいるので、読んでない人は注意。
【1】内容はとても読みやすいです。
スウェーデンの公共システムという大規模プロジェクトに対し、アジャイル開発を適用した事例のお話。
カンバンを使って、アジャイル開発を補強している。
内容がとても実践的なので、何となくアジャイルサムライの本を予感させる。
「リーン開発の現場」のカンバンは、XPやスクラムで出てくるタスクボードとは違う。
「リーン開発の現場」のカンバンは、機能ボード、フィーチャかんばんだ。
(但し、タスクボードに相当するタスクかんばんも出てくる)
つまり、開発者の作業(タスクカード)を管理するタスクボードではなく、ユーザ観点で機能(ストーリーカード)を進捗管理するカンバンがこの本の主役であり、カンバンをいかに効果的に使うべきか、カンバンを使うと以前とはどのように違う効果が出てくるのか、が主題テーマだ。
だから、プログラマの観点よりも、発注者のユーザやプロジェクトリーダーの立場で見た方が分かりやすいと思う。
【2】ヘンリックが運用しているカンバンは、XPやスクラムが定義するタスクボードよりも複雑だ。
タスクボードは、ToDo→Doing→Doneの3つしかステータスがない。
ヘンリックが運用しているカンバンでは、少なくとも下記のフェーズ(ステータス)がある。
・アイデア
・機能
・開発準備OK
・次の10機能
・開発中
・システムテスト準備OK
・システムテスト中
・受入テスト準備OK
・受入テスト中
・本番リリース前
・本番リリース完了
見ての通り、フェーズが多く、その仕組みがウォーターフォールプロセスのように見えてしまうかもしれない。
しかし、ウォーターフォールプロセスとは大きく違う。
WF型プロセスでは、前工程の作業が全て完了して初めて後工程の作業が始まる。
しかし、カンバンシステムでは、各フェーズは並行して動く。
実現したい機能はアイデアとして生まれ、開発できる単位まで分割されて詳細化されると、機能単位で開発されていく。
開発着手の前に、すべての機能が出そろう必要はない。
機能(フィーチャ)単位に、カンバン上をフローとして流れていく。
ヘンリックが運用しているカンバンは、アイデアで生まれた機能が仕様化され開発され、システムテストや受入テストを経て、リリースされて実現されるので、Push型だ。
本来のかんばんは、マーケットが必要とされる製品に必要な部品が前工程にPullされることで各工程に波及していくので、その違いはある。
第4章プロジェクトボードにその理由が詳しく書かれている。
更に、ヘンリックが運用しているカンバンは、下記のような彼独自の特徴がある。
この辺りも「リーン開発の現場」に詳しく書かれている。
・アナリスト、テスターを機能開発チームに所属するものの、彼らだけの仮想的なチームをなしていること。
・デイリースタンドアップミーティングを3階層で分けて、プロジェクト内の風通しを良くすること
・プロジェクト全体とチームのタスク管理の観点を、プロジェクトかんばんとチームかんばんで使い分けること
・WIPをうまく使うことで、タスクが溢れることがないように調整していること
・技術課題やバグは別のかんばんで試すこともできる(カンバンのスケールアップにもつながる)
【3】カンバンで最も重要な概念がある。
それはWIP(Work In Progress)、つまり、仕掛り中の作業、仕掛中の機能だ。
「第11章 WIPをマネジメントする」「第12章 プロセスメトリクスを計測し活用せよ」は内容が濃くて面白い。
生産管理では、かんばんの枚数を減らして在庫を減らすことで問題を具現化させて、改善していく手法を取ると聞くが、WIPも似たような考え方があると思える。
リトルの法則や「最も小さくて小さ過ぎない」ようにWIPを設定するの説明は、この本で最も興味深い内容の一つだ。
WIPが重要な理由は、稼働率が高すぎても低すぎても生産性が上がるどころか、むしろ下がってしまうため、生産性が最も高くなる時点の稼働率にするのにWIPの概念が使われるからだと思う。
実際、稼働率100%のプロジェクトは、チーム全員が毎日残業して休日出勤も強いられているために、たくさんの障害が頻発し、レビューもテストもろくに行われておらず、品質がボロボロだろう。
逆に、稼働率が低すぎるプロジェクトは、暇な開発者が多すぎて、肝心の成果物が全く作られておらず、進捗が遅延しているだろう。
つまり、「最も小さくて小さ過ぎない」ようにWIPを設定する。
第12章プロセスメトリクスでは、「WIP制限を必要最低限に保つ」という文章で記載されている。
(個人的には、「必要最低限」という言葉よりも「最も小さくて小さ過ぎない」の方が好きだ。)
ヘンリックは、カンバン上のフローをスムーズに流すために、WIPを制限することで、サイクルタイム(リードタイム)を短くすることで、機能をリリースする期間を短くしている。
つまり、頻繁にリリースできるような仕組みを作るために、WIP制限を有効に使っているのだ。
ヘンリックは、カンバンを高速道路の交通量に例えている。
車の流れをスムーズにしたいと思うならば、高速道路に車をぎっしり詰めるべきではない。
高速道路で渋滞が発生するのは、本来の交通量を超えた車が道路に溢れているから。
だから、交通量の変化を吸収して、流れを速くするには、スペースやゆとり(Slack)が必要。
また、WIP制限(仕掛中の機能・作業の上限値)が必要な理由をプリンタにも例えている。
プリンタは一度に1枚しか印刷できないので、WIP制限は1になる。
もし紙が詰まれば、警告を出して、速く修理すべきだ。
逆に、より多くのページを印刷しようとプリンタのキューに貯めこむのは、プリンタ故障の問題をより大きくさせるだけ。
WIP制限によって、プリンタが処理できる本来の能力を実現しているわけだ。
【4】レビューにも参加させて頂いて、今読み直してみて、まだまだ奥が深いと感じる。
そして、まだ僕がカンバンを経験していないために理解できていない問題は2つある。
一つは、ヘンリックが運用しているカンバンは、日本のトヨタが生み出したかんばんとどの部分が似ていて、どの部分が異なっているのか?
いわゆるソフトウェアかんばんが、製造業のかんばんとは異なる本質的な特徴や性質は何か?
欧米人が「かんばん」を彼らなりにどのように理解してソフトウェア開発へ適用したのか、を明確にしたい。
もう一つは、生産性や稼働率が待ち行列理論からどのように分析されて説明できるか?
カンバンがソフトウェア開発の進捗管理でとても有効な理由は、生産性や稼働率の見える化が強力であるからだと思う。
カンバンを使うと、WIP制限によって、稼働率を調整することでリリースサイクル(サイクルタイム、リードタイム)を短くでき、それによって、頻繁なリリースを安定して実現できる。
その仕組みの背後には、待ち行列理論が関係していると直感しているので、その構造を明らかにしたい。
上記の問題意識で、更に読んでみたいと思う。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
- プロセス設計はどの範囲を指すのか?~プロマネの仕事はテーラリングにある(2022.06.19)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
「コミュニティ」カテゴリの記事
- UMTPモデリングフォーラムのパネル討論の感想(2022.11.29)
- XPエクストリームプログラミングは偉大だ~時代がその設計思想に追いついた(2022.11.16)
- 第23回東京Redmine勉強会の感想~コミュニティは仲間から生まれて続く #redmineT(2022.11.06)
- 組織を芯からアジャイルにする対談の感想~今のアジャイルは先カンブリア時代なので何でもいい、アジャイル警察はいらない(2022.08.05)
- 第22回東京Redmine勉強会の感想 #redmineT(2022.05.29)
「ソフトウェア工学」カテゴリの記事
- DDPは品質管理に役立つのか(2022.12.13)
- 組合せテストにおける因子と水準はどちらを最優先で考えるべきか(2022.12.04)
- XPエクストリームプログラミングは偉大だ~時代がその設計思想に追いついた(2022.11.16)
- 第23回東京Redmine勉強会の感想~コミュニティは仲間から生まれて続く #redmineT(2022.11.06)
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
「チケット駆動開発」カテゴリの記事
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
- タスク分割は親子チケットにすべきか、それともチェックリストにすべきか #redmine(2022.03.04)
- Redmineにメンション機能が入るらしい(2022.01.15)
「Agile」カテゴリの記事
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
- DDPは品質管理に役立つのか(2022.12.13)
- UMTPモデリングフォーラムのパネル討論の感想(2022.11.29)
- XPエクストリームプログラミングは偉大だ~時代がその設計思想に追いついた(2022.11.16)
コメント