アジャイルがそんなにダメだと思わない7つの理由
鈴木雄介さんが、「アジャイルがダメだと思う7つの理由」というすごいブログを書いてくれたので、がんばって返答を書いてみる。どこかでディスカッションできるといいなぁ。
1. 全体スケジュールにコミットできない
コミットメントって何だろう。コミットメントは約束なのか。約束であったら、破った場合のペナルティも受け入れるのか?受け入れたところでバッファが巨大になるだけではないのか?そして、そのバッファは見えないところで食い尽くされる。
全体を見えずに計画したところでうまくいくはずはない。アジャイルがタイムボックスで計画、実施を行うからといって、全体を計画しないわけではない。むしろ積極的にやるべきである。
全体を計画する上では、なるべく漏れがないように、実施可能なように最大限の努力をする。ただ、それに時間を掛けすぎるのは無駄だ。そして、神ならぬ人間が計画するのであるから、以下を認めなければならない。
- 全体は全体ではない。あなたの見えている範囲にすぎない。それが十分でなかったら拡張しなければならない。計画の実施を優先して、全体の範囲の確認を怠るとどうなるかは、たくさんの事例があるだろう。想定外は言い訳にならない。
- 計画はあたらない。どんだけの努力を払ったところで、計画が必ずあたるということはない。それを素直に認めることだ。それでも計画を当てようとする努力を怠るわけではない。
Plans are useless but planning is indispensable.
2. アーキテクチャ上の無駄が生じる
無駄をわかっていることを、さらに続けることを無駄という。あとで無駄とわかったから、それは避けられたというか?それを避けていたら、もっと大きい無駄を見逃すことにならないか。
Twitter が最初から Scala にしていたら、作り直しの無駄は避けられたか?避けられたかもしれない、でも今の Twitter の隆盛もなかったかもしれない。
3. コーチって何だよ
これは痛い。かといって、成果に連携した契約にする気もない。
おむつを変える気もないけどね。自分のケツは自分で拭け。
それでも、コーチがいたほうがいいと思う。別にコーチでなくてもいい。エンジニアのチームの中のコミットメントに参加しない部外者が。
卑怯な話であるのは認める。でも、私がコーチで現場の近くにいて一番気にしているのは、自分より優秀なエンジニアを過労で失う経験はもうしたくない、ということだ。
優秀なエンジニアは本当に優秀だ。びっくりする。でも、優秀であるが故に、自分の負荷が見えていない人が多い。優秀なエンジニアは、自分のタコメーターが壊れていることに気がつかない。気がつかないから、優秀なのかもしれない。
そこを見える第三者がプロジェクトの近くにいるのは、必要なことだと考えている。
4. 変化ヲ抱擁スルために固定化している
すべてを変化しやすくすることはできない。人間が耐えられる変化の量はきっと、これまでもいまからも大してかわらない。それでも変化ヲ包容スルためには、変化しないところと、変化しやすいところを読んで賭けるよりない。それがアーキテクティングだろう。
変化を包容するために、集団もしくはチームの維持にアーキテクチャを賭けるのは、筋の悪い選択だとは思わない。伊勢神宮の式年遷宮が今年も可能なのは、建物ではなく宮大工の集団に永続性を見いだしたからだ。
蛇足かもしれないが、ソフトウェアの成果物に重力が働かないことは、ソフトウェアの変化の量を読むのをものすごく難しくしている。重力の働かない場所で、今の建築技術はどこまで使えるんだろう。
5.実証主義的な説明に過ぎない
その通り。すべてのベストプラクティスは過去のプラクティスである。次にうまくいく保証はない。
いい人材がいれば成功するだろう。そのとおり。でも、いい人材をどうやって見いだすんだい?どうやって伯楽が育つんだい?それこそ実証的にやっていくよりないだろう。
6.手段が目的になっている
まあ、その通り。それでビジネスにはならないし、すべきでもない。
でも、初期には手段を目的にして練習してもいいんじゃないかな。野球を練習するとき、プロで勝つことを目的にはしないでしょ。純粋にキャッチボールやバットで打つのが楽しい。入り口はそこでいい。でも、プロになるには、それだけでは無理という話は矛盾しない。
まあ、「アジャイルで開発したいんだけど、、、」という依頼が来たときは、大抵断ってますけどね。
7.アジリティはアジャイルだけのものではない
特定のプロセスにこだわるのは、アジャイルだとは思わない。必要ならプロセスも変えればいいのだ。実証的に。
1980年代ウォーターフォールの形式化に貢献した、アメリカ国防省(DoD)が今何をやっているかご存知だろうか?
これが、DoD 傘下の Command and Control Research Program の最新の研究成果である。
The Agility Advantage: A Survival Guide For Complex Enterprise and Endaevors
「アジリティの優位性: 複雑な企業と作戦のサバイバルガイド」
これが、アジリティということだろう。