ここ最近の「アジャイル」という言葉の使われ方に違和感を感じています。
年々システム開発のプロジェクトは、短納期化と低コスト化の流れが進んでおり、それによってリスクが増して且つ利益の出にくい状況になりつつあり、多くのシステム開発を請け負うシステムインテグレータは様々な取り組みを進めています。
そして、その一つとして期待されているのが「速い・安い」を実現する「アジャイル開発」だと言うわけです。もはや、まるでファストフードです。
大手システムインテグレータが集まってアジャイル検定を始めるようです。一部引用します。
アジャイル検定の本格運用に向けた、アジャイルソフトウエア開発技術者検定試験準備委員会を設立
近年、ソフトウエア開発では、厳しい経済不況などの影響を受け、ユーザーの要件を確実に、高品質に、より短期間で提供することが求められています。このような環境の下で、注目されているのがアジャイル開発手法(注)です。
http://www.nttdata.co.jp/whatsnew/2012041300.html
この注目の理由「ユーザーの要件を確実に、高品質に、より短期間で提供すること」・・・これは果たして本当にアジャイルにマッチしているのでしょうか?
目次
2つのアジャイル開発
私が知っていたのは「日々変化するビジネス環境の中で、ソフトウェアが予測困難な要件や変化する仕様に対応できていない」という課題があり、そこから産まれたニーズが「変化に対応していけるソフトウェア開発」というもので、それに応えることができるのが「アジャイル開発」だったと思っていました。
しかし最近の文脈では「短納期化と低コスト化する中で、ユーザーの要件を確実に、高品質に、より短期間で提供できていない」という課題に対して、「低コストで速く作れるソフトウェア開発」というニーズに応えるものが必要で、それを「アジャイル開発」と呼んでいるようです。
- 「変化に対応していけるソフトウェア開発」
- 「低コストで速く作れるソフトウェア開発」
この2つの「アジャイル開発」は、解決したい課題もニーズも異なっています。もしどちらにも対応できるとしたら、アジャイル開発は万能薬と言えるかもしれませんが、この世に万能薬などありません。
アジャイル開発は一体、そもそもどんな課題を解決するための手法だったのでしょうか。
アジャイルを「速い・安い・旨い」のように表現している人は、アジャイル開発に「低コストで速く作れるソフトウェア開発」を期待をしているということです。しかし、実際にはそうはうまくいかないでしょう。
もし本当に何の代価もなく手っ取り早く「速く・安く」作れる方法があるのであれば、アジャイル開発はもっと爆発的に広まってるはずです。トレードオフなしに、何も得ることはないということを理解すべきです。
アジャイル開発がうまくいかないのは、人材の問題や契約の問題と言われていますが、そうではなく「アジャイル開発」が「低コストで速く作れるソフトウェア開発」というニーズに対するソリューションではないからではないでしょうか。
「速く・安く」作りたいのであれば、アジャイル開発などと言わなくても良いし、ただ手法としてのやり方を変えたからといって、コストを下げたり、短納期に作ることはできません。そこは手法の問題ではなく、顧客に提供する価値の定義を変えないといけません。
ニーズとのミスマッチ
いろいろな方から「どうすればアジャイルを導入出来ますか?」と相談を受けることも多いですが、そうしたときは「なぜアジャイルを導入したいのですか?」と聞き返します。
それに対し「速く作りたいし、コストも抑えたい」と仰る方もいらっしゃいますが、それであれば、私の知っている「変化に対応していけるソフトウェア開発」では解決しないので、アジャイルをお勧めしたりしません。
お客様のニーズとして「決められた仕様を確実に作ること」が最初にあって、そこを変えずに「速く・安く」というのであれば、「変化に対応していくこと」はニーズに対して応えていないのです。それに応えるのは「オフショア」や「自動化」でしょうか。
お客様のニーズが「要件が見えておらず、少しずつ作っていくことで形にしていきたい」というものや「業務に詳しい人間はITに詳しくなく、画面や動きを見ながら作っていきたい」というものであれば、「変化に対応していけるソフトウェア開発」はフィットするでしょう。
そうしたニーズをお客様の口から引き出すことができるとしたら、それに対する解決方法を提示すればよくて、そこにアジャイルなんて言葉を使う必要さえないのです。そのお客様のニーズに応えられる提案ができるのだとしたら、そこでビジネスはできるのです。
一括請負のビジネスモデルで難しいのは、そもそも、そうしたニーズに応えるためのビジネスモデルではないからです。アジャイル導入の課題は「契約」や「大規模」とよく言われますが、それは一括請負のビジネスをしているベンダーの立場からの言葉です。
一括請負のビジネスモデルをするベンダーがアジャイルの手法に取り組むことは多いに結構ですが、そのビジネスモデルを変えない限りは、「変化に対応していけるソフトウェア開発」へのニーズに応えられないはずです。
「アジャイル」は死んだ
一括請負のビジネスモデルを前提とするならば、アジャイル開発には「変化に対応していけるソフトウェア開発」を期待するよりも、「低コストで速く作れるソフトウェア開発」を期待することになります。
最終的な仕様と金額が決まった中では「変化に対応していけるソフトウェア開発」のニーズはないでしょう。
このことは別に悪いことではなくて、お客様のニーズが「決まったものを速く・安く」ということを求めるのであれば、それに対して応えていくことで商機になるわけですから、そこを追求すれば良いのです。
ビジネスモデルにも手法にも善悪なんてないのです。あるのはニーズがあってビジネスになるかどうか、です。「決まったものを速く・安く」というニーズに応えようと企業努力をするのは、至極まっとうなことです。
しかし、その「決まったものを速く・安く」というニーズに対する解決策としてアジャイル開発と言って期待してしまうことに違和感を憶える訳です。
そもそもアジャイルが「安さ」を実現するためのものだとするなら、価格競争の手段ということになります。もしアジャイルが本当に価値のあるものだと思うのならば、そんな安売りをすべきではないと思っています。
価格競争のための「オフショア」の代わりのバズワードとして「アジャイル」が使われるのであれば、そうしたムーブメントを後押しする気ににはなれません。
もし、アジャイルという言葉が「低コストで速く作れるソフトウェア開発」を指すものだとマスメディアや大手企業によって言葉の意味がねじ曲げられて、多くの人に認知されてしまうのであれば、もはや「変化に対応していけるソフトウェア開発」のことを「アジャイル」と呼ぶのはやめても良いのかもしれません。
もし、ファストフードのような開発をアジャイル開発と呼ぶのであれば、私の中で「アジャイル」は死んだも同然です。言葉の定義なんて変わるものだし、正しい定義を振りかざしても仕方がないのはわかっていますが、バズワード化するというのは、こういうことですね。
改めて言うと、ファストフードのように「速く・安く」のニーズに応えようとするのは良いのです。それがビジネスなのだから当然のことです。しかし、そのニーズを解決するソリューションとして「アジャイル」を担ぎ上げなくても良いんじゃないか、と思うのです。
経営者だけでなく、現場でアジャイルを広めようと取り組む技術者にも言いたいのは、アジャイルがそのマーケットにおけるビジネスモデルの中で求められているものなのか、どんなニーズに応えるものかを考えるべきではないかということです。
バズワードを振りかざす前に、マーケットにおけるビジネスモデルを理解し、お客様のニーズを把握して、そこにあった解決方法をひとつひとつ考えていくことが大事なことでしょう。