矢崎です。Section1のChapter6 Learning to Driveの解説です。
#一部、平鍋さんのeXtreme ProgrammingのWebサイトから、
引用いたしました。事後承諾のような形になりますが、申し訳
ありません。
Section 1 The Problem
Chapter 6 Learning to Drive
===========================================
私達は、大きな調整を2、3回程度行うという方法ではなく、小さな調
整を数多く行うという方法で、ソフトウエア開発をコントロールしていか
なければならない。例えて言えば、自動車の運転のようなものである。
小さな調整を行うためには以下のようなことが必要である。
・正しい方向からズレてきたとき、それがすぐに認知できるようなフ
ィードバックが必要。
・まちがいを修正するための機会が数多く与えられることが必要。
・まちがいを修正するためのコストがリーズナブルであることが必
要。
Kent Beck氏は、XPのパラダイムをイメージさせるために、彼が始め
て自動車の運転を練習をした日のことを書いている。
(矢崎:以下は平鍋さんのHPから引用です
http://www.esm.co.jp/divisions/open-sys/eXtremeProgramming/xp-faq.html)
Kentは,はじめて自動車を運転する練習をした日のことを例にしてい
ます.
母を横に乗せ,ハンドルを握り... 最初はうまく行きました.でも,ち
ょっと油断した瞬間,車は車道を外れて砂利に突っ込んでしまい
ました. 母は車を道に戻すと,初めて運転とは何かを教えてくれ
ました.
「運転で大切なのは,車を正しい方向に進めることじゃないのよ.大
切 なのは,常に注意を払って細かく右左に方向修正していくことな
の.」
これが,XP のパラダイムです.
(引用ここまで)
まっすぐで平坦な道はどこにもない。物事が完璧にうまく運んでいるように
見える時でさえ、道から目を離してはいけない。細かく左右に方向修正して
いけるように、常に用意ができていなければならない。時にはまったく違う方
向へ進まなければならなくなるかもしれない。
ソフトウエアに関わる全てのことが変化する(要件、設計など)。ということは
変化することが問題なのではなくて、変化に正しく対応できないことこそが問
題だということである。
ソフトウエア・プロジェクトのドライバ(運転手)は顧客である。しかし、顧客
はソフトウエアが何をなすべきか、正確にはわかっていない。プログラマとし
ての私達の仕事は、顧客にハンドルを与えることと、顧客と私達が道上のど
こにいるかについての正確なフィードバックを与えることである。
自動車を運転する例え話には、XPプロセスにおけるモラル---4つのValue
(communication,simplicity,feedback,courage)---も、含まれている。4つの
Valueは、ソフトウエア開発者がどのように感じるべきかを示すものである。
そのような感じ方に達するためのプラクティスは、場所や時間や人によって
異なるであろう。プラクティスはプロジェクトに適用することで次第に役に立
つかどうかがわかってくる。各プラクティスは試験的だが、それが不適切
なものだと証明されるまでは従うべきである。
--
矢崎 博英 <firo@....jp>