AgileJapan2010でちょっと先のプロジェクトの世界を想像した

先週、2010/4/10(土)にAgileJapan2010に参加してきました。
たくさんのためになるお話を聞けました。
今日は、1週遅れで、印象に残った点を書いておこうと思います。

まずは、基調講演のAlanShallowayさんのお話からです。
システム開発は言うに及ばず、多くの人が集まりなにか目的を達成するプロジェクトを効率的に進めるためにやることは、遅れを取り除くことです。
早く進むでもなく、前倒しで行うでもなく、ムダを取り除くでもありません。

システム開発で進捗が遅れている場合、3つの選択肢があります。

1.人を投入する
2.提供する機能を落とす
3.あきらめる

というものです。

通常、2.と3.は選択肢としてはあまり取られません。
システム開発者の矜持として、「実力不足」というレッテルを貼られたくないからです。
能力がないから先も読めずに見積もりを誤り、なおかつシステムを完成させられなかった、と思われることは、信用にもかかわります。
そのため、「言ったことをやり遂げる」という結論しかありません。

結局、1.人を投入することになります。
そもそも、作業に遅れが生じたときに、人を投入するという考えの根底には、
労働時間 × 労働人数 = 達成できる作業量(作業進捗)
という考えがあります。
人を投入するとは、上記の式において、書ける数字の1つを増やす考えです。

が、通常あまりうまくいきません。

新しい人を投入すると、どんなできる人でも「学習」の期間が必要です。

・プロジェクトの状況
・プロジェクトの人間関係
・開発の規約やチーム内の暗黙のルール
・システム全体の構成
・プログラム仕様

などなどです。
混乱している状況では、こうした「学習」を効果的には行えません。

結局は、既存のプロジェクト・メンバーは、本来やらねばならないことを後回しにして、これらの「学習」の手助けをする必要があります。
たとえば、勉強会を開催したり、ドキュメントを作成したり、といった作業が必要になります。

ようするに、プロジェクトの遅れが、「人を投入する」ということを決断させ、投入したことによって本来、必要でない作業、すなわち無駄な作業を発生させるのです。

また、

「ソフトウェア開発においては、「ムダ」を判別しづらく、だから遅れに注目する必要がある」

とAllanさんは言います。
これは、参加者の方が

「ムダ、ムダといっても、新しい発見を生み出すような大切なムダもあるのではないか」

という質問への回答としての言葉です。
質問した方が指摘したように、「大切なムダ」を取り除かないようにするために、また、そもそもソフトウェアのムダが発見しづらいのだから、「遅れ」に注目すべきだ、とAllanさんはいいます。

ようするに、「遅れ」があるようであれば、「何か停滞させる要素がある」と認識し、改善すればよい、という考え方です。
逆に言えば、停滞がないならば「ムダ」もまた良し、という考え方ともえます。

ではこうしたことを実現するにはどうするべきでしょうか。

それは、開発における仕掛品をマネジメントすることが重要です。
というのは、仕掛品そのものがムダであり、また遅れの原因を生み出すからです。

私がウォーターフォール(WFといいます)開発における一番の弱点と考えているのが、「仕掛品の多さ」です。

現状、どのような商売においても「在庫は悪」です。
在庫、という言葉そのもに「過剰在庫」という意味が含まれているようにも感じられます。
そして、仕掛品、つまり、出荷できる状態ではないけど、完成品の一部を構成する材料は、利益に変換できない在庫です。
WFにおいては、「出荷可能」と判断するに足りる、品質の確認作業、つまりテストは、開発フェーズの後に集中的に行われます。
つまり、テストが終了するまでは、仕掛品として在庫を抱え続けることになるのです

また、在庫が増えれば増えるほど、管理すべきものが増えてゆきます。
そのため、たとえば作業の遅れがある場合はその原因を特定したり、そもそも遅れを発生させないように管理することが困難になります。

XPなどのアジャイル開発では、プロダクトが十分な機能の集合になってはいなくても、1つ1つの機能は出荷可能な状態にあります。
そのため、たとえば1イテレーションを2週間と定めており、適正にプロジェクトを運営しているであれば、チームは2週間の在庫を持つだけですみます。
たとえば、全体が3ヶ月見込まれるプロジェクトにおいて、WFでは3ヶ月まるまる在庫、ムダを抱えることになります。
しかし、アジャイル開発の場合は、2週間でよいのです。もちろん、理想的に運営できているのならば、ですが。

現在、どのような会社でも在庫を抱えないよう、細心の注意を払っています。
それを可能な限りつきつめていき、成功しているのがトヨタのJustInTimeです。
ほとんどの流通小売り、製造業においては、在庫は「日」単位で考えれているでしょう。
しかし、トヨタの場合は、Timeです。ようするに、「時間」単位で在庫を捉え、管理しています。

ソフトウェア開発にたいして、単純に製造業のエッセンスを注入することはできません。
しかし、近い未来、ソフトウェア開発においても「いかに在庫をもたずにプロジェクトを運営するか」が勝敗を分けるときがくるのではないでしょうか。
そのときに、アジャイル開発のエッセンス、哲学を理解し、実践できることが重要になるのではないか。
私はそのように考えています。

ランキング参加中。気に入ったら一押しお願いします!
人気ブログランキングへ

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。