ソフトウェア開発外注の難しさ:また失敗例を見てしまった!

昨日、以前に勤めていた会社のIT部門から電話がかかってきました。ウェブサイトを載せているレンタルサーバをアップグレードした際に問題が発生したというのです。

ウェブサイトのオンラインカタログは私が開発し、PHP4上で動いていました。そして私が退社したのを機会に、ソフトハウスに管理を委託したのです。

レンタルサーバをアップグレードするとPHP5しか使えないので、オンラインカタログプログラムに若干の変更が必要でした。具体的にはこちらでも紹介されているように、”Fatal error: Cannot re-assign $this”のエラーが出るという問題があったのです。スピードを上げるためにオブジェクトをキャッシュするようにしていましたが、キャッシュにヒットした場合は、コンストラクタで$thisにキャッシュ中のオブジェクトを代入していたのです。

しかしこの単純なPHP4からPHP5への移行作業も、委託先のソフトハウスは見事に失敗してくれたようです。まだ100%の確証はありませんが、たぶん”Fatal error: Cannot re-assign $this”が出ないようにするために、キャッシュの部分を削ったのだと思います。おかげで、負荷がかかるとサーバがダウンするようになってしまいました(負荷が少ないときはおおむね動くので見過ごしたのでしょう)。コードを見ればキャッシュしていることは明白なので、おそらく「キャッシュしなくてもバレないだろう」という気持ちで、安易に削除したのでしょう。許せない手抜きです。

しかもPHP4からPHP5への移行作業で、1人月相当の金額を要求していたようです。むむ。許せない。

もちろんすべてのソフトハウスがこんなにいい加減だとは思いませんし、内部の人の問題も大いにあるのですが、僕が見聞きした開発外注はほぼこのような情けない結果で終わってしまっています。

ソフトウェア開発外注は難しい。そのことを経験的に知っていて、素人ながら自分でオンラインカタログのプログラムを開発したのは、実は大正解だった。改めてそう思いました。

私はいまはむしろ逆の立場になりました。主に自分のためにプログラムを開発していますが、部分的に外注も受けようと思っています。こう言う情けない話にならないように、くれぐれも気をつけなければならない。自分が怒りを買う側になっては絶対にだめだ。そう強く思いました。

それにしても、ソフトハウスの人って、他人のソースコードを読むのが苦手なのですか?

データベースにこまめに問い合わせると遅いから、まとめてバッチでオブジェクトを作っているのがわからないのか?(Railsでいうと:includeを使うように)
お前のところはそうやっていないのか?
いくらコードにコメントが少ないからって、’cache’っていうような名前の変数が使われている箇所を削除するのなら、負荷試験ぐらいしろ!!

爆発