Life is beautifulさんの
を読んでの感想。
あと、併せて読んだ話は下の二つ。どこかで話が重なる部分があるかも。
産業としてのSIerについて語りたいのか、プログラミングスタイルについて語りたいのか。それはさておくとしても、少なくとも誰のために何を作る話をしているのかははっきりしないと意味がないんじゃないかと思います。
もちろん、一般論としてのプログラミングスタイルとしてどちらがより優れたものが作れるのかなんていうのは議論するまでもないです。
ただ、その上でスケールしやすいパッケージ系のソフトウェアビジネスについての話なのか、それとも儲けの上限が決まっていて一人一殺形式だからスケールしにくいSIビジネスについての話なのか、というのははっきりしないと抽象論で終わってしまって、「上流下流の分離いくない。以上、おわり」みたいな話になってしまうわけです。(中島さんのエントリがそうだったとは言いません。ただ、このエントリを受けてこのように短絡的に理解する人は大勢出たのではないかと思います。)
例えば、パッケージ系のソフトウェアビジネスであれば、Googleを作ったり、WindowsやOfficeを作れば、天井知らずの儲けが期待できるわけです。それならば、優秀なデザインをできる天才ハッカーを集めて最高のサービスで最大の利益を目指すことも一つの有効な戦略だと思います。
しかし、SI業ではそうはいきません。ある一社の要望を受けて、天才プログラマがGoogleばりのスーパーな製品を作ったとしましょう。それでも、このすばらしいプログラムはビジネスとしてはスケールを生みません。品質や製品としてのデザインの優位性、メンテナンスまでを考えた場合のコストパフォーマンス、すべてがすばらしいかもしれません。それでも、その一つの仕事が何百億の時価総額を生むことは絶対にないのです。なぜなら、それを使うお客さんにとって、それは何百億を生み出すものではないですから。
プログラミングスタイルとしてあるべき姿と、産業としてビジネスとして妥当な姿を混ぜて議論してはいけないです。(妥当は語弊があるかも。必要悪というか、仕方ないというか、少なくとも現在のところは残念ながらベターな選択肢を見出しているところが少ないとでもいうべきか。)
実際、優秀なプログラマと一山いくらのプログラマの生産性の違いは20倍なり100倍なりあるでしょう。開発速度だけでなく、品質、保守でのコストを考慮するともっとあるかもしれません。
それでも、そんな優秀なプログラマの人数がSI業の需要に対して足りているとは思えません。そうなると、ビジネス上の判断として、一つの対応として、上流下流の分離なり、人月30万の人海戦術なりで物事を進める必要があるわけです。たとえ悪手に見えようと。
批判すべきは、それが結果として期待されたレベルで成立していないことです。それはたとえばJoelの言葉を借りれば、マニュアルを整備してSI業をスケールさせようとしたのに、スケールしなかったというような点を批判すべきなのです。
マニュアルが悪い、段取りが悪い。だから、一山いくらのプログラマでもどうにかお客さんが望む成果を出せるだけの「より良い段取り」を作ろうじゃないか。そんな提案が必要なのだと思いますし、実際にSI業を真摯にとらえている人の中ではたとえばGoyaのような動きが出てきたりしているわけです。(Goyaはまさによりよい段取りという方向性だと思います)
一方で、SI業をスケールしやすいパッケージビジネスにしようという動きの急先鋒としてSalesforce.comがあったりします。GoyaやSalesforce.comが成功するかはわかりません。ただ、正しい現状認識に基づいて少しでも前進しようという動きに見えます。
後記。そんな私の最近はCODE COMPLETEとオブジェクト指向入門(OOSC)と格闘中。趣味でモノヅクリをしている人としては、本当は同意したい部分も多々あるのだけど、仕事としてサービスを提供して対価をもらっている身としては安易に同意もできずエントリしました。
※Goyaについて