アジャイル開発の本質とは?


ITコーディネータの吉田聖書よしだみふみです。

久しぶりにシステム開発の話題です。

10年前に読んだ書籍で、
当時は全くと言っていいほど意味が理解できず、
改めて読んでみたところ新たな発見があった
というものをご紹介します。

よく、読書は知識を得るためにするものではなく、
得た知識を整理するためにするものだ
と言われるのを聞いたことがあります。
今回改めて読み返して頷けたというのが
まさしくそれに該当するのだろうと思います。

書名:リーンソフトウエア開発
副題:アジャイル開発を実践する22の方法
著者:メアリー・ポッペンディーク、トム・ポッペンディーク
訳者:平鍋健児
発行:日経BP社/2004年7月23日
ISBN:978-4822281939


Amazonではもはや中古品しか手に入らないようですね。

読み返してみて、
今でも理解しづらいところがあるのも確かです。
理屈よりも事例を多く掲載しているところは良いです。
が、システム開発以外の分野の事例を
多く引き合いに出しているためか
私の中ではあまりピンと来ない箇所が多いです。

以前読んだときには
そういうところに目が行って
全体としての理解が及ばなかったのでしょうね。
前置きはこれくらいにして本題に入ります。

wire_stairs

システム開発に携わっている方であれば
「アジャイル開発」「ウォータフォール型開発」
という言葉を聞いたことがあるでしょう。

本書ではウォーターフォール型開発のことを
「シーケンシャル(sequential=順次的)な」開発
と表現しています。
特徴としては、工程ごとにマイルストーンを置き、
一度次の工程に進んだら後戻りしないという原則があります。

では、何故ソフトウェア開発プロセスが
そのようなものとして定義されてきたのでしょうか。

コンピュータ業界(IT業界)は
工業と比べると新しい業種です。
製造業界など他業界の開発スタイルを取り入れた時に
「メタファー」を間違えてしまったのが原因だ
と本書では指摘しています。

一般的なシステム開発では
設計工程→プログラミング工程→テスト工程
と進めていきますが、
プログラミングの工程のことを
よく「製造工程」と呼ぶことがあります。
これはまさに製造業の製造工程を連想させますよね。

一般的に製造業の大量生産ラインでは
決められた設計書どおりに物が造られていきます。
そして組立ての順番も決まっており、
後戻りすることはありません。

しかし、実際のシステム開発は
それではうまく行かないことが多いのです。
というのも、システム開発は
同じものを二度と造ることはないからです。

ですから、
いつもシステム開発は「プロジェクト」と呼ばれ、
いつでも新しい要素がある。
つまり不確定要素やそれに伴うリスクを抱えながら
進めて行かなければならず、
やってみなければ分からないことも多いのです。

本書では、システム開発は
「製造工程ではなく、むしろ商品開発に近い」、
料理で言えば、
「調理の工程ではなくレシピを作ることに近い」
と言います。

商品開発やレシピ作りでは、
いきなり完成品が出来上がることはありません。
アイデアを練っては試作を行い、
改善すべき点を次の試作のアイデアに注ぎ込む
といったことを繰り返して出来上がります。

「ウォーターフォールでやってます」という現場では
手戻りは日常茶飯事です。
いくら手戻りがないようにと努力しても
決して手戻りがなくなることはありません。

これはやり方が悪いのではなく、
システム開発という仕事の特性と
ウォーターフォールの考え方の相性の問題、
つまり構造的な問題という事なんですね。

ここには書き切れませんが、
本書は他の書籍の参考文献として取り上げられることもあるくらい、
脱ウォーターフォールのヒントが満載です。


Comments are closed.