1時間1イテレーションは可能か?
第1に文化的な問題です。実現可能性から言えば、開発者である私には可能でしたが、お客様側が対応できませんでした。日本の意思決定システムでは、1時間単位で変化する開発スピードについていけません。よく言われますが、日本は慎重に和をもって事をなす民族です。その文化がある限り、時間単位で意思決定を下すのは不可能です。従って、そのまま開発するのではなく、お客様の受け入れ態勢を考慮して、開発以外の工夫をせねばなりません。純粋な開発スピードでは可能ですが、お客様を助けるコストを加味すると、非常に難しいと言わざるを得ません。
第2にコミュニケーションコストの問題です。私が1時間1イテレーションのペースで開発をできる理由は、全ての開発要素を並列的に処理できるからです。お客様と会話しながら、分析・設計・実装・運用・テスト・ネットワーク・データベース・セキュリティなどの全ての事柄を頭の中でします。そして、お客様との会話が終わった時点で、ほとんどの事が終わっており、後は実際に作業するだけの状態になっています。それぐらいしないと1時間1イテレーションは実現できません。しかしながら、開発チームで仕事をするとなると、コミュニケーションコストが発生しますから、そのスピードで物事を処理するのはほぼ不可能です。成功するには、開発チームの全ての人間が阿吽の呼吸で意思疎通ができる、熟練のプロである必要があります。実際問題それだけの人材を集められないでしょう。
第3にビジネス面の問題があります。開発はビジネスでもあります。ビジネス面で考えたとき、契約と信頼関係が1時間1イテレーション実現の障壁となります。事が速く進むのは良いのですが、ビジネスに契約はつきものです。契約をどうやってするのかを考えねばなりません。契約にもコストが発生しますから、いちいち契約をするのは不可能です。従って、高い信頼関係がないと成り立ちません。その他にも、ビジネスとして考えねばならないことが沢山あります。
最後に利益が問題となります。3つの問題を解決して得られる利益に疑問が生じます。開発側とお客様側の双方に、それだけの負担を伴う開発が利益を出すのか、それが大いに疑問です。1時間1イテレーションで開発するのは非常に疲れます。同時に複数の仕事を引き受ける場合も想定すると、私の感覚からいえば、プロジェクト3件が限界だと思います。技術力向上により、限界は少し増えるでしょうが、開発チームとなるとそれが可能だとは思えません。
纏めます。1時間1イテレーションは一応可能ですが、いくつもの条件を満たさないと、プロジェクトは失敗します。それだけのリスクとコストをかけるのですから、大きな利益が得られる状況でのみ行うべきだと思います。しかしながら、お客様側に1日1イテレーションを提示しておき、開発チーム内で作業を細かく分け、1時間1イテレーションで管理することは一般的に可能だと思います。すなわち、外部イテレーションと内部イテレーションを設定するのです。そうすればより高度な開発体制が整います。むろんこれにも高度な開発体制が要求されます。
これらの結果を踏まえると、イテレーションの単位はプロジェクトに適したものを選ぶという原則が成り立つと思います。アジャイル開発はもともと柔軟性が必要な開発手法です。イテレーションの設定も柔軟に行いましょう。