アジャイルプロセスの「よさ」は何に由来するか。
アジャイルソフトウェア開発というものの「よさ」を慎重にとらえる必要があるだろう。
わかりやすい表現としては、ウォーターフォールなプロセスに対して、アジャイルソフトウェア開発が優位としているところは、「計画単位の細分化による適応性」だとしている。
これは計画単位が大きいと、不確定な要素によって出戻りや品質の低下が起こってしまうからだ。
この論旨はとてもわかりやすいのかもしれない。
しかし、どうにも歯切れが悪いように感じる。いや、ある種の人々にとっては我が意を得たりといったところなのであろうが、
それはただ単にその人が陥っている状態に対して、アンチテーゼ的であり、そしてそのワードがはやることによる社会的効果に期待してのところだろう。
だから、はじめに断っておくが、アジャイルソフトウェア開発プロセスに関して異論を唱えたいのではない。むしろ、それはすばらしいことだ。と思っている。
ただ、ある種の「よさ」はソフトウェア開発の「本質」を表現していないのではないか、と違和感を感じてしまうのだ。本質にまわりをかすみとりながら、狡猾にそれを覆い隠してしまうもののように感じるからだ。
そして、その「本質」に近づくことは危ういととらえているからだ。本当は理解しているのに、そこに踏み込むことによって自分たちもまた殺されてしまうのをさけるために。
では、ソフトウェア開発の本質とは何なのか。
それは「問題の発見と解決」だ。
顧客ないし社会に内在する問題の発見と解決。それがソフトウェア開発だ。
そして、ソフトウェアエンジニアは、問題の発見と解決を行う知的労働者であって、それをなすことが職責であるということだ。
なので、「どう作るか」は「なぜ創るか」に強く依存している。一体として「なぜそう創るか」が最も重要なこととなる。
既に存在しているソフトウェアを創ることは、大きな意味は無い。すでに解決されている問題を再度同じ方法で解決することにもはや価値はないからだ。
「どう作るか」は製造業的あり方だ。同じものを効率よく制作するものの考え方だ。アジャイルソフトウェア開発プロセス論は強くソフトウェアの特殊性を主張していながら、
トヨタ改善方式やセル生産方式と同様とのメタファーを採用しているように思える。ここに違和感の源泉がある。
企業、社会において、ソフトウェア開発に近いものに「戦略」がある。
国家戦略、人材戦略、販売販促戦略、流通戦略、商品戦略、などなど、ありとあらゆる戦略が企業において必要とされている。
これもまた、問題の発見と解決だ。ある種の「ソフトウェア」を企業にあるいは社会に敷衍させることによって問題を解決しようとしている。
つまり、ソフトウェア開発プロセスというものは、戦略構築のプロセスと対比してとらえられるべきものであって
製造プロセスと対比してとらえるものではない。
だから、アジャイルソフトウェア開発プロセスがより価値を生む理由は、製造業的なメタファーによって表現されてはならない。
それが価値を生む理由は計画者と実行者が同一人物で、短いサイクルによって問題発見が促され、その問題がチームによって共同化しているからだ。
何故創り、どう創り、どう敷衍していくのかのすべてに対して、一貫性、主体性、自主性がソフトウェアの品質を決定する。
つまり、くりかえしになるが「どのような問題かを認識し、どのように解決するか。」がソフトウェアのすべてだ。
よいソフトウェアとは、「複雑に見えた問題をシンプルに捉え」「スマートに解決している」ものだ。
ここにソフトウェア開発者の生産性が10倍から100倍以上の開きを生む理由がある。
それは経営者が生み出す富に10倍から100倍以上の開きを生む理由と同じだ。
よいソフトウェア開発プロセスとは、それを促すものであって、決まりきったものを短期に作ることを意味しない。
このことをソフトウェア開発に従事する人は強く主張するべきなのだ。
そしてのその主張の責任として知的な生産によって証明してみせることなのだ。
だが、それはとても難しい。だから、そこを幻想のままにしておきたいと思っているひとびとがいるのも確かだ。
本当は理解しているのに、そこに踏み込むことによって自分たちもまた殺されてしまうのをさけるために。