今はSIerのビジネスモデルを変革するチャンスかも

Java EEや.NETはCOBOLやVB6よりも本当に生産性が高いか? - 達人プログラマーを目指してのブクマのコメントで

すごく納得いくんだけど、SIerの上司は領域1ばかりで2は無理って言ってるわけだから、「少なくとも領域2の範囲で仕事をすることは不可能ではない」ってところを納得させて欲しい

というご意見をいただきました。現状の問題点(AsIs)はわかるのですが、今後どうやったら、私の主張するあるべき方向(ToBe)に向かってSIのやり方を変化させていくことができるのかということですね。厳しい意見ですが、ごもっともであり、現状を嘆いているだけでは世の中はあるべき方向に変わっていくことは期待できませんので。
私は会社においてはまったく平社員のプログラマー(会社の職位としては一応SEですが)であり、ビジネスモデルとかあまり偉そうなことを言える立場でもありませんし、残念ながら現状改革に向けた明快な方法論とかアイデアがあるというわけでもありません。ただし、達人プログラマーの本に書いてあるように「変化の触媒たれ(Be a catalyst for change)」ということですから、プログラマーとして、機会があれば上司などにも積極的に意見を言っていくというように努めています。(さすがに、最近は上司から「君は口を開くたびにこの話題だね」と言われておりますが。)
それで、達人プログラマーの本では、変化を起こすにはタイミングが重要ということが書かれているのですが*1、SIのビジネスがあまりうまくいっていないように思われる現在は、まさに変化を起こすベストタイミングであろうと思います。
実際、会社規模の大小の違いはあれ、SIで開発や基盤の運用のビジネスをやっているような会社なら、現在の状況に対してまったく無関心でいるところはほとんどないと思います。実際私の会社もそれほど大きな会社ではないのですが、技術研究をしている間接部門もあり、今後どのようなモデルでビジネスをしていこうかと考えている人たちもいるのです。実は私もOSSの研究をしたり会社のフレームワーク*2を考えたりする技術面での戦略的な役割を担う部署の仕事を一応兼任していたりするのですが。それで、会社の売上や利益の状況についてまったく無関心でいるわけにはいかないのですが、とにかく会社としてだけでなく、SI業界全体として厳しい状況であり、今後はどのような方向でビジネスをしていったらよいのかという話が出てくるわけです。ただし、一般的に会社の技術部長などの話の中には、SOAクラウド、ESB、BTO*3といったようなキーワードは登場するのですが、残念ながら、プログラマーのスキル向上や地位向上といった話が出てくることは稀ですね。それでサービスを部品として組み合わせてシステムを効率的に開発するとかいう話はかなり以前から毎年のように目標として挙がるのですが、結局そのサービスをどうやって実装するのかということはあまり真剣には考えてもらえません。*4やはり、SIerの現状ではPGは新人か下請けの仕事という発想が非常に根強いです。
そこで、プログラマーの私としては部長などにプログラミングの重要性というのを訴えていく必要があるのですが、幸い、私の会社の上司はもともと技術者として物分りのよい人が多いと思います。特にプログラム設計の重要性という点については、もともとSOA等のキーワードに熱心なタイプの上司なら、理解されやすいです。ただし、会社としてはいかにお客様からお金をいただくかというビジネスの面を考えないといけません。
まず、領域2のビジネスはアジャイル開発がメジャーになってきている欧米など(最近は中国やインドでも*5)では既に大部分実現できているという厳然たる事実を認識してもらう必要があります。ただし、日本と違って外国では多重下請け構造というのがほとんどなく、業務アプリはユーザー企業が開発に深くかかわるというように文化の違いがあります。(SIerというのは外国でもあるみたいですが、多くはパッケージやミドルウェアのベンダーの開発サポートという位置づけが中心で、日本のように開発を一括で受託するというケースは稀と聞いています。)だから、スキルのあるプログラマーというのはユーザー企業にとって非常に貴重な存在であり、当然市場原理が働いて高い単価で仕事を請けることができます。
SIerも顧客から一次請けで仕事をする機会があれば、今までのようにPGに一律低い単価を設定するのではなくて、ハイスキルの専門プログラマーに対して相応の単価を払ってもらうという努力をすることは可能でしょうか?この場合、

  • そもそも顧客企業に開発知識がまったくない場合、プログラマーの知識に対する価値を納得させることが難しい。いくら優秀で実績があっても他のプログラマーの3倍も単価を取ると言ったらなかなか理解されにくいでしょう。
  • 請負ビジネスでは派遣ビジネスとは異なり、プログラマー個人のスキルの話を持ち出すのはそもそも法律に違反する可能性が大

などが大きな障壁にはなりますね。また、人月計算ではなくて、機能あたりの平均的なコストから金額を計算というのもありますが、それも業界での標準的な価格というようなものがないと、なかなか理解されにくいかもしれません。教育やコンサルティングをしながら、オブジェクト指向開発というのを顧客に体験してもらう機会があれば従来との違いやハイスキルのプログラマーの価値を理解してもらう上で有効かもしれません。また、COE(center of excellence)という言葉があるようですが、OSSのコミッターになっているような優秀なプログラマーを高い賃金で雇うなどして、特定の開発技術の拠点を作るなどという構想もある程度大きな会社ならできるかもしれません。
結局結論のないわかりにくい文章になってしまいましたが、私としては海外でできていることが日本でできないわけがないという信念があります。古い商習慣さえ変えることができればよいのですから。以前にも竜馬の時代にどこか似ているということを書いたのですが(ソフトウェアアーキテクトほど魅力的な職業はない!?(アメリカでは) - 達人プログラマーを目指して)、竜馬を見習って下々のプログラマーがもっと積極的に行動すれば上に意見を言っていけば、今のやり方を変えていくことができると思います。業界のビジネスがうまく機能していない今こそ変革のチャンスかもしれないと思います。

*1:ソースコードが消える事故のタイミングでマネージャーにバージョン管理ツールの導入を持ちかける話が書かれている

*2:SIerフレームワークとしては、ドキュメントなどで初心者の敷居を下げつつも、上級者の設計自由度を阻害しない形にするのが理想的だと思います。

*3:Build To Order。パソコンの販売であるように必要な部品をカスタマイズして販売するやり方をソフトウェア開発で活かす。

*4:PofEAAでファウラーが厳しく指摘していますが、WebサービスやリモートEJBの組み合わせで新規システムを組み立てるなどは実装面を考えると到底難しいです。性能が出ないし、そもそも分散化されたアプリをeclipse内などで試験するのはきわめて困難なので。ただし、Webサービスは既存システムの連携手段としては有効です。

*5:ちなみに中国ではプログラマーの平均年収は全体的なサラリーマンの平均年収の3倍〜5倍もあるという話も聞きました。本当かどうか確認していませんが。もちろん、物価水準が違うので、日本の金額にすると凄く少ないのですが。