IBMの問題はアメリカナイズされた老害

日本IBM周辺でトラブルが続出している。IBMの下請けとしてサブシステムの開発に携わっていたソフトウェア企業が4億円近い負債を抱え、2008年10月中にも破産手続きに入る。同社は、IBMから追加費用の支払いが行われていなかったと主張して訴訟準備に入っていたという。ほかにも、スルガ銀行やソフト開発会社など、IBMを相手取った訴訟も続発しているのだ。

この訴訟続発を問題のように受け止めている人も多いようだけど、IBM自身にとっては、そんなに問題じゃないと思う。ユーザーの発注が確定しなくてもその先の作業を進めるために下請けに先行発注したりすることがなくなったり、不採算案件は最初からやらない、あるいは早期に手を引くことが、徹底されたからだと思うから。
これまで、日本的な空気を読むビジネスから、アメリカ的な白黒はっきりな契約ベースになったということなので、一方的に悪いことではない。
でも、契約を交わさずに口約束だけで仕事をさせて、契約してないんだから金を払わないってのは、どうかと思うけどね。


今のIBMの問題は、上流特化と徹底的なオフショア志向にあると思う。日本IBMの経営が、USの意思で行われるようになってその傾向はさらに強くなったようにみえる。
上流特化と徹底的なオフショア志向は、一見、非常に合理的な考えに見えるんですよ。
自分たちは、単価の高い上流にシフトし、下流は徹底的に安いところに頼むという。
このエントリをここまで読んできた人は、IBMの選択は、極めて合理的に見えるはずです。しかし、ここに問題がある。


下流工程をオフショア先に頼むということは、ドキュメントを見れば、そのままプログラムを作れるレベルまで、ドキュメントの完成度を上げなければいけません。そうじゃないと、オフショア先で作れないから。
日本でやっていれば、多少ドキュメントに不備があっても、BP(Business Partner、いわゆる下請け)のがんばり(いろいろ質問するとか)で作業を進められるけど、オフショアの場合は、ドキュメントにあいまいな部分や不備があっても、質問してくることはあまりなくて、適当に作っちゃうケースも多いはず。
つまり、ドキュメントの完成度が低ければ、それに比例してプログラムの完成度も低くなるのです。


ドキュメントの完成度を上げようとすると、ほとんどプログラムを作っているつもりになって、ドキュメントを書く必要があり、プログラムを書くよりもコストがかかります。プログラムを自然言語で書くのとプログラミング言語で書くのを比べると、プログラミング言語で書くほうが、書きやすいし、コンパイラなどのチェックも受けられるので、単純なミスがなくなります。
安いからといってオフショア先にプログラムを発注しているのに、実は、プログラムを書くために必要な(プログラムと一対一に対応しているような)ドキュメント(以後、プログラム設計書)を書くほうがコストがかかっているのです。
プログラム設計書の精度を下げることでコストを下げようとすると、プログラムの完成度が低くなり、プログラムを受け入れた後に、さらにコストがかかることになります。


また、プログラム設計書は、IBMの社員やBPさんが作っていると思いますが、上記で書いたようにプログラム設計書を書くのは、コストがかかるので、BPさん主体になっていくはずです。
そうすると、IBMの社員がプログラム設計書を書くスキルがなくなっていき、レビューもできなくなっていくことでしょう。レビューができないと品質の確保もできなくなります。


今は昔と違って、プログラミング言語も進んでいていろんなことができます。事前に頭の中だけで考えることには限界があります。実際に作ってみないとわからないことが多いのです。それなのに、プログラムよりも先にプログラム設計書を書くってのは無理があるのです。


なぜ、こんなことが起きるかというと、IBMの上層部(今だとUS主体)がプログラミングは単純作業だと思っているからです。これは、日本のSIerの上層部にもいえることだけどね。
汎用機の時代は、汎用機のコストが高かったため、とりあえずソースを書いて、とりあえずコンパイルしてみるというのは、厳禁でした。コンパイルするのもコストがかかるため、必要最小限に抑えることが求められたのです。
だから、最初は、紙にソースコードを書いて、徹底的に机上デバッグしたうえで、それをプログラムを汎用機に打ち込む人(パンチャー)に渡したり、自分で打ち込んだりしました。
プログラムを打ち込むこと自体は、本当に単純作業だったのです。
その汎用機時代の経験をそのまま、現在に持ち込んでいるのが、老害たちです。現在は、プログラミング言語も進化しているし、開発環境も進化しています。上記で書いたように、プログラム設計書を書くのは、プログラムを書くよりもコストがかかります。なのに、汎用機時代の常識のまま、プログラムを書くことをオフショアに任せて、コストのかかるプログラム設計書を書くことを国内でやっているのです。
汎用機時代にプログラム設計書を書くことが成立したのは、汎用機のコストが高すぎて、気軽にコンパイルしてテストするよりは、プログラム設計書を書く人件費のほうが安かったためです。
詳細は、SI業界の老害が若手と下請けを蝕む理由 - yvsu pron. yasのエントリを見てください。


老害に関しては、日本のSIerIBMもそんなに変わらないんだけど、IBMはグローバル企業らしく、徹底的にオフショアを進めているのが悲劇の始まりです。日本のBPさんなら、だめなプログラミング設計書でも、なんとかがんばろうしようとしますが、オフショア先だと、そんながんばりはしないからね。
オフショア先だとプログラミング設計書に書いていないことを実装することを求められたら、追加で費用を請求されることもあるんじゃないかな。この辺は、力関係で変わってきそうですが。


日本のSIerもオフショア志向を強めているところが多いと思いますが、プログラミングだけを任せるやり方は、上記で書いたようにうまくいく可能性は低いと思うよ。


「汎用機の時代遅れの常識(今と合わない常識)は捨ててしまえ」ということです。


あわせて読みたい
よかろう、ではIBMの実情について語ろう - novtan別館


追記:これは、汎用機の常識はすべて捨ててしまえということではなく、今と合わない常識は、捨ててしまえということです。
また、国内のBPさんにだめなプログラム設計書を押し付ければよいということでもありませんよ。
プログラミングできない元請けがプログラム設計書をレビューするという矛盾 - yvsu pron. yas
浜口さんに贈るSI業界を良くする方法 - yvsu pron. yas
で書いたように、日本のSIerの人もきちんとプログラミングができるようになるべきだし、プログラム設計書は書く必要がないというのが私の考えです。