分秒単位の最速アジャイル開発を考えてみた
1イテレーション1~10分、もしくは1イテレーション10秒程度のアジャイル開発(まさか1秒単位で知りたいと思う人はいないでしょう)とはどんなものでしょうか?私が推測するに、あらゆるシステムの要素を細分化することが前提になるでしょう。何故ならば、分もしくは秒単位で見積もりを出すのですから、自然と誤差が大きくなる大きな粒度での見積もりを避けると思われるからです。また、粒度が大きくなり、常に数イテレーションが普通になってくると、分秒単位で開発を考える意味がなくなってしまいます。一般的に、1イテレーションの要素が全くない状態だと見積もりの正当性が疑問視されます。誰しも最小単位がわからない状態では、見積もりの精度を疑うでしょう。従って、精密かつ細かく見積もりを出すのが開発の前提となります。
さて、そこまで精密にアジャイル開発をするプロジェクトとはどんなものでしょうか?運用する対象を考えない事には始まりません。私はそんなプロジェクトに出会ったことがないので推測するほかないのですが、社運を賭けて行うプロジェクト、他社との競合が考えられる速さが勝負のプロジェクト、・・・などの極めて重要な一大プロジェクトだと思います。人が精密に行うときは、ほぼ必ずと言っていいほど重要なものです。よほど変わった人ではない限り、人は重要でないものにまで神経をすり減らさないでしょうし、そこまで精度が高い進捗情報が必要でないと思います。
話しを進めるために、細かな仕様もあり動機もあるとしましょう。そうなると問題となるのは、どのように開発するのかです。通常の開発方法では、分秒単位の進捗状況を管理できないでしょうし、細かな単位で仕事を割り振らなければなりません。となれば、細かな単位の進捗情報と連動する開発ツール、およびプロジェクト運用テクニックが必要です。
分秒単位で開発を管理するという事は、現在どの機能に何秒使っているのかを常に把握しなければなりません。それに加えて、細かな単位で分けられた機能を、細かく技術者に指示できなければ、見積もりを保証することはできません。分秒単位の見積もりを出すのですから、何年何月何日何分何秒にどの機能がどれだけの割合完成しているのかわからないとなりません。その難題を達成するには、プロジェクトの管理者は、迷わず仕事を割り当てないとなりません。何故ならば、迷うことによる時間のロスは、通常のアジャイル開発よりも大きいからです。仮に120秒で仕上がる予定の機能について30秒悩んだら、それだけで25%の時間を無駄にしたことになってしまいます。すなわち、分秒単位のアジャイル開発を採用するという事は、それに伴う分割コストとの戦いを意味するのです。
普通の人は物事を細かく分けると、それだけ精度や信頼度がますと考えるでしょう。しかしながら、システム開発はそれと逆に、精度と信頼性が落ちます。何故ならば、分割を行う事で発生する各種コストと不確定要素が増えるからです。細かく管理すればするほど、コミュニケーションコストと管理コストは増しますし、人は機械のように精密かつ正確に働けません。それゆえに、成功する確率が減ります。
では、分秒単位のアジャイル開発は絶対にありえないでしょうか?私はそう思いません。世界の変化スピードはまし、人が求められる仕事量と技術進歩は年を追うごとに速くなっています。ならば、今では考えられない開発手法も、将来では当たり前になると考えるのが妥当だといえるでしょう。それに、どんな技法にも適材適所があります。プロジェクト単位ではなく、自分用の時間管理で役立つかもしれません。なんにせよ、分秒単位のアジャイル開発を想定しておくと、将来の仕事に役立つと思います。今目の前にある仕事だけをさばいていては、変化の波についていけません。常にあらゆる状況を想定し、それを受け入れる準備をしておけば、秒進分歩と呼ばれるこの業界でも余裕をもって生き抜けるでしょう。