2009年6月30日火曜日

システムの作り直しを避けたければ

前回、システム導入が失敗する理由について少し触れました。下請けとして開発している場合、納品を済ませると、現場からのフィードバックを受けないまま次の開発へと移っていくことが多いため、独りよがりになり、なかなか成長できないことを理由の一つに挙げました。今回は、これとは別の問題を紹介します.


プログラミングできない人の設計

システム開発は、設計とプログラミングからなります。システムの全体を構想するのが設計で、それを実際にプログラムコードで書き上げていくのがプログラミングです。

ず設計から始まりますが、設計者は、過去にプログラミング経験があったとしても、今は現役のプログラマーではないというケースがよくあります。その結果、机上の空論的な設計となり、実際の開発で生ずる問題や危険性を認識できていない事態がよく発生します。

イメージしやすいよう建築現場で例えてみましょう。配管工事を行い、図面に沿って排水用パイプを設置するとします。図面を描くのが、上記の設計者の役割です

さて、排水用パイプと並べて電線も通すことになっており、図面上では、両者は問題なく並べられるはずでした。しかし、排水用パイプのつなぎ目に採用した新開発のパーツが、従来のものより太いため、図面通りに施行したところ、パイプのつなぎ目が太くなった分、電線を通せなくなってしまったのです。

要するに、昔の知識だけの設計では、現場で通用しないことがあるわけです。

設計変更が必要なら作り直しと思え

そして、一度開発を終えたら、後から設計を変更するのはとても大変な作業となりがちです。それだけ追加費用も高くつきます。ひどい場合、すべて作り直しになることもありますから、設計という工程はとても重要です。
例えば3階建てのビルを建てた後、やっぱり15回建てに変更したいといっても、単純に上階を継ぎ足すわけにはいきません。それだけの重さに耐え得る設計になっていない可能性があるからです。最悪の場合、ビル全体を取り壊して一から、ということもあり得ます。

「現在の業務では一つの倉庫しかないから」という理由で、一倉庫に限定して設計された在庫管理システムをたまに見かけますが、「ビジネスが拡張して複数の倉庫管理が必要になったらどうするつもりなのだろう?」と思ってしまいます。おそらく作り直しに近い変更が必要になるでしょう。


設計力が寿命を決める

拡張性を見据えた設計になっているかどうかで、そのシステムの成否や寿命が決まると言っても過言ではありません。
私は以前、格安航空券を取り扱う旅行代理店のウェブシステムを構築したことがあります。おそらく過去に最も、設計について頭を悩ませた仕事でした。というのも、各航空会社の格安航空券料金の仕様は、統一されていないだけでなく、かなり頻繁に根本から変更されることが多かったからです。

今は、オンラインで航空券予約までできる旅行代理店のサイトが増え、非常に便利になりました。しかし目玉の格安航空券は、通常の航空券と異なり、各航空会社からリアルタイムで提供される航空券データとは別枠であるため、全て網羅するには、結局、手作業でデータを入力する必要があります。そのため各社とも、この部分はかなり苦戦しているようです。

実際に聞いた話ですが、ある会社で何十万ドルもかけて開発を試みたシステムが、格安航空券料金の度重なる仕様変更についていけず、結局お蔵入りになったのだとか。

私の構築したシステムが6~7年経った今も現役でいられるのは、もちろん、優秀な現場の方にうまく使っていただいているからです。しかし、設計時に考え抜いていなければ、おそらく2~3年の寿命で終わっていたと思います。

2009年6月1日月曜日

システム導入が失敗する理由、教えます

前回、取引先からの注文や在庫を管理する販売管理システムを下請け業者に作らせたところ、かなり使えないものが納品されたという話を紹介しました。商品情報の照会に5~10分かかるとか、売り上げ入力を間違えても訂正できないとか。

今回は、なぜ、このようなお粗末なものを納品してくるソフト会社があるのかを考えます。

詐欺まがいのビジネスが横行

「多額の投資をしてシステム導入を試みたが、うまくいかなかった」という話を、職業柄、私は色々な所で聞きます。読者の皆さんも、1、2度くらい、そういった話を聞いた、あるいは直接経験したことがあるのではないでしょうか。

前回取り上げた例は、日本時代に私が直接関係したものですが、アメリカでも似たような話をよく耳にしました。「開発能力がないソフト会社が高額なシステム開発を受注したものの、納品できず訴訟になった」「大金を使ってシステムを導入してみたが、使い物にならず眠ったまま」「使えないシステムに開発費用を払い続ける羽目になり、担当者が責任を問われクビになった」などなど。とにかく詐欺まがいのビジネスが横行していると思います。

ただもしかすると、そうしたシステムを納品してくる本人たちには、その自覚がないのかもしれません。

当時、システム開発を直接依頼されたのは私のいた会社であり、その会社から下請けに開発を発注していました。ですから、システムが納品された後、エンドユーザー(クライアント)からの苦情を受けるのは私のいた会社です。例えば、以下のような苦情がありました。

「複数ユーザーで同時に入力すると、在庫数がおかしくなった」「データ量は多くないのに、いきなり処理速度が遅くなった」「後から日付が任意に変更可能なせいで、会計上の矛盾を生じてしまった」

もっともな苦情ばかりであり、明らかにシステムを開発した側に問題がありました。そしてこれらは、世の中の一般的な販売管理システムでは解決されていて当然の問題なのです。ですので私は「いったいこのソフト会社は、今までどんなシステムを作ってきたのだろう?」と疑問に思いました。

下手の横好き集団?

下請け業者が納品してきたシステムのプログラムを解析してみると、プログラムコードの書き方がとても非効率的であることが分かりました。そのため、後から変更を加えるのが大変なのです。要するに、その場しのぎの書き方であり、先々のことを考えて開発されてはいませんでした。

IT業界では、規模の大きいシステム開発であるほど、実際に開発を行う業者は2次請け、3次請けが当たり前だと以前お話ししました。そのことが大きく災いしていると思います。彼らは、1つのプロジェクトを終える(納品する)とすぐに次のプロジェクトへ移ります。したがって自分の仕事の結果を知らないままであり、技術的に成長するチャンスがないのです。

私が入社して以降、私のいた会社は自社内でシステムを開発できる体制に移行していくのですが、当時、開発者の採用を試みる度に、この下請け業者のようなレベルの人材ばかりなのに気づきました。そして、エンドユーザーからのフィードバックを受けずにいるのがどれだけヤバイのか実感したのです。

納品後に起きた問題を知らず、自分のやり方だけを正解と思い込んでいる開発者ほど、扱いづらいものはありません。面接しただけの人や試用しただけの人も合わせると、過去に私はおそらく50人以上の開発者と会っています。しかし、直請けで仕事をする会社にいたのは2、3人。そして、本当にモノになったのも2、3人でした。この業界、開発者の人数だけは多いと思うのですが……。

「正解は100通りある。その中で最適解を見つけ出すのがプロだ」というのが私の持論です。一定の結果に満足してしまったら、必ずそこで成長は止まります。常に上を目指すという気構えがなければ、この業界ではやっていけません。もしもあなたがIT業界を目指しているのなら、肝に銘じておいてください。