プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

プログラムは偶然で動く


東証の取引停止を見て、思ったこと。
事故そのものとはあまり関連性がないかもしれませんが、ま、年寄りのたわごとだと思ってください。:)

ソフトを構築したのは富士通だが、稼働テストや運用チェックは富士通と東証それぞれで行っている。東証の天野富夫常務は「今回の条件はテスト時に想定していなかった」と話し、「当然に想定すべきだったかどうかを含め、原因を詳しく究明したい」とした。

原因はプログラムのバグということだけど、要は実環境を想定したテストが足りなかった、ということみたいだね。
内情をちゃんと理解しているわけではないので、原因は別のところにあるかもしれないけど。
別の記事によれば原因は単純なミスらしいので、やっぱりテストケースの不足らしいことが伺える。


本当のところは分からないけど、やっぱりどこかで緊張感がないというか「大丈夫だろう」みたいなところがあったんじゃないのかな!?記事には

ジャスダックのシステムに障害が発生するのは今回で3回目だが

なんてのもあるのでね。

プログラムは自分の息子


プログラマに対して「このプログラム動かないよ」って言ったら「そんなはずはない!」って言われた経験はないですか?
プログラマにとって自分が作ったプログラムは、自分の息子(娘)同然。
可愛い我が子に文句を言ったり、バグを見つけたりするテスターは、プログラマにとっては敵!(いや、ほんと)
プログラマのプライドの高さも要因の一つだけどね。


それは子供が成長していく過程に似てるかもしれない。
第三者から見ると「そんなに可愛くないけどな」って思ってても、親にとっては世界一可愛い自分の子供。
でも、どんなに愛情をかけて育てても、その子がいい子になるわけじゃないよね。
学校や社会に出て、叩かれて、もまれて、いろんな経験をして、一人前になっていくもの。


もちろんプログラマだって、自分の作品を溺愛してばかりというわけじゃない。
コードを書く時は一生懸命考えて、いろんなケースを考え、実際に動かして検証する。
でも、自分の作ったものには、どうしても甘くなってしまいがち。
厳しくしつけたつもりでも、動かしてみると、作者が考えも及ばないケースが多く出てくる。


プログラマが産んで育てたプログラムをたたき上げ、立派に育て上げる「社会」に当たるものが「テスト」なのだと思う。
どちらが欠けても、よい子(プログラム)にはならない。
プログラムは多くの人に叩かれ、悪いところは直し、常に改善していくもの。
使われてないものは、元がどんなに優秀なものでも、いいものにはならない。

結論


長年プログラミングやってて、思うこと。それはプログラムは偶然で動いているってこと。
プログラマなら誰しも「これ、こんなんでよく動いてたな」なんて思ったことあるよね!?
作ってる時は一生懸命なんだけど、後で見直してみると、以外にしょぼい作りしてたりするんだよ。
「あー、この時は眠かったのかな」なんてね(笑)


だからプログラムって、念入りにテストしなくちゃいけないんだよね。
「人の振り見て我が振り直せ」ですね、ほんと。


すいません、白状します。
ぼく「これぐらいの修正ならテストいらないな」って思って、テストなしで出したことあります(汗)
けど、こういう事故を見ると、やっぱり細かいことでもテストしなきゃな、って思った。
ふだんは「敵」ですが、テスターさん、どうぞよろしくー。:)


え!?そんなふうに思ってるのって、ぼくだけ!?どうも失礼しました。^^;