伽藍か?バザールか?

ソフトウェア開発永遠のテーマ

ただいまアジャイルがダメか、良いかで(ごく一部の限られた社会で)大変な盛り上がりを見せているようです。僕も職種こそプログラマからコンサルタント、マーケティング、営業へと変化していったものの、サラリーマン時代は一貫してソフトウェア業界に生息してました。今にして思えば、僕がソフトウェア業界でキャリアを積んだ時期とアジャイルが世に広まった時期はほぼ同じだったようです。マイクロソフトの Visual Studio に Team Systemが登場した2005年に、日本中を飛び回って Visual Studioを使ってイテレーション開発をやりましょうなんて説いて回ってましたしね。そんな僕ですから、もちろんアジャイル側の人ってことになるでしょう。

 

「アジャイルがダメだと思う7つの理由」から始まったアジャイル論争の現時点のまとめ

 

議論の内容自体は、上記サイトを参考にしてもらうとして、色々と考えさせられました。そして、あらためて思いました。アジャイルかウォーターフォールかの議論は10年以上経ってもあんまり変わってないんだな、と。

 

開発方法論に良し悪しはない

たとえば、実体経済よりも一歩先行する金融経済の世界では、超巨大で、超複雑で、しかも極めて高いセキュリティが要求される超高度なシステムが日々運用されています。現代の金融機関にとってはまさにシステムこそが命ですね。そのような巨大なシステムをアジャイル手法で開発するというのはやはり想像できません。東京スカイツリーやエンパイヤステートビルを事前の構造計算や設計、人員計画、必要な部材の調達計画なしで建造することは不可能だと誰にでもわかるでしょう。

一方で今、ビジネスの世界でのキーワードはコンシューマライゼーション(消費者個人)です。昨今のテクノロジの進歩によって、毎日のようにどこかで斬新なサービスやソフトウェアが生み出され、それがSNSを始めとするインターネットを介した新しいコミュニケーションツールによって世界中に広まっていく、このような現象はほんの数年前まではなかったことです。そうなると必然的にトレンドが移り変わる速度も加速することになります。

同じ金融機関であっても、今度は基幹系とは異なる情報系システム、たとえば「新婚カップル向け新築ローンアプリ(アベノミクス対応)」などの場合、あれこれソフトウェア開発の計画を立てて、社内稟議を回して、ダウンロード数の予測を立てて、なんてやるのは馬鹿な話です。こちらは、それこそ開発計画や詳細設計などを作る暇があるなら、さっさとアジャイル手法で動くものを作ってしまい、実際にユーザーのレビューや反応を見ながらアップデートを繰り返し、機能を拡充していくのが正しい戦略となります。3週間で開発して、運用しながらアップデートをして、半年後には運用終了なんてことが実現できるわけですからね。

 

伽藍かバザールか?

エリック・レイモンドさんは「伽藍とバザール」の中で小さなカーネルから始まった Linux を称賛しました。現にそれが今や社会を支える基盤といえるほどまで成長し、またオープンソースという思想をも広める重要な役割を果たしました。そして Linux がこれほど成功した裏側には、90年代のコンピュータの世界に、それ以前から脈々と育っていたハッカー文化があったおかげであることは間違いありません。そんなハッカー文化と非常に強い親和性を持つアジャイル開発と、日本の行政機関や金融機関、あるいは巨大製造企業の電算部門から発展したウォーターフォール型の日本のIT企業は残念ながら簡単にはわかり合えないというのも仕方ないのかもしれません。

ご存知の通りインターネットの登場によって主に金融や情報が国境を自由に越えて行き来するようになりました。しかし、今世界経済のトレンドは、グローバルな自由化です。今後は金や情報だけでなく、ヒトやモノがもっともっと激しく流通するようになるでしょう。日本にいると全然気づきませんが、本当に今世界は凄まじいスピードで変わりはじめています。

「バザール方式」よりも「伽藍方式」を得意としてきた日本のIT企業は、バザール方式のダメな所を探すよりも、むしろうまく取り込む必要があるのではないかと思います。僕らピアズ・マネジメントでは、これを「城下町方式」と呼んでいます。日本の城下町は、中心に立派な天守閣があり、その周辺に自由闊達なる商工業の町が形成されていました。どちらが良いという二者択一ではなく、両方です。この両方をバランス良く成長させることで、経済的にも、軍事的にも強い国(藩)となったのではないでしょうか。重要なのは「伽藍もバザールも」ってことです。

 

最後はやっぱり人

日本のソフトウェア開発者に求められるのは、どちらの開発手法が良いのかを議論することよりも、両方に精通し、それぞれの良いところを柔軟に取り入れながら、社会や消費者が求めているシステムを素早く提供していくことではないかなと思います。なぜならば、ソフトウェア開発方法論の議論は、最後は必ずそれを実行する開発者の能力にかかっているという結論に行き着きますからね。