以前システム開発の丸投げは悪いことなのかというシリーズを書いていた。
無責任の丸投げは良くないのだが、正しい発注というのは以下の通り。
- 発注者の責務、ベンダーの責務をきちんと切り分ける
- ベンダーは信頼し(そもそも信頼できないところには発注しない)、必要以上の管理をしない
- 発注者の責務はユーザー要件の定義と受け入れ
- 発注者の中でもシステム部の役割はユーザー部門とシステムベンダーのスムーズな情報の連携
このうち、ベンダーから見て、一番やめて欲しいのは「信頼しない、必要以上の管理をする」である。
新聞が、「ベンダーへ丸投げ」などと騒ぐから、システム部門は何かとベンダーのすることの介入したくなる。
ところが、介入しようとするエリアはプロに信頼して任せるべきところであり、ベンダー側からすれば時間の無駄になることが多い。単に無駄になるだけではなく、発注者の目線でテストエビデンスなどを作ればいいということになって、時間に追われる、ならまだいいものの、本当にするべきことに頭を使うことを放棄してしまう、というのが最悪のシナリオである。
これは実際に感じることであるが、テストエビデンスはGUIの遷移を1つずつ、画面コピーを取り、EXCELに貼り付け、赤枠で囲い、丁寧に説明をつける・・・というものが多い。
一見、きちんとテストしているように見えるので、お客も満足する。
お客が満足するから、このやり方に慣れて、何も疑問を持たず、テストとはこんなものだと思い込む。
こういう時期が20年くらい続いているように思える。
技術者の半分が世代交代する長期間である。
画面仕様のテストエビデンスなら未だいいが、ロジックのテストでこんなエビデンスを作る必要はない。
ところがテストというものは、プログラムが正しく動いていますよ、ということをお客にプレゼンする行為ではなく、不具合を見つけてなんぼの行為である。こんな画面の切り貼りをしている時間があれば、どうしたら不具合が見つけられるかということに頭をフル回転させるべきである。
お客と障害会議している時、「よくこのタイミングで障害をみつけてくれた、助かったよ」みたいな発言は皆無。(障害の原因がほぼベンダーのミスなので、ここまで言うはずがないよ、と言われればそうなんだけどね)
その代わり、不機嫌な口調となり、続く言葉は、カセットテープのようにほとんど同じ。
- どうしてこのバグが今まで見つからなかったのか?(どのタイミングで見つけても同じこと言うでしょ?)
- バグの発生した根本原因は何か(根本原因といのは実は難しく、2つくらい遡った原因と言う意味で使われている)
- 横展開調査はしたのか?
- 再発防止策はできているのか?
横展開調査を課題解釈していて、全く信じられないことを言うお客もいる。
「外部設計書にミスがあった?じゃあ他の外部設計書にミスがないかを横展開調査しろ」
そんなことやってたら時間とコストがどれだけかかるかわかってる?効率を上げるために、設計書の品質は9割にして、残りの品質を上げるためにテスト工程があるんだよ。
もちろんテストが酷すぎる設計書であれば、見直しもありだけど、それなりの設計書であれば、テストでバグを発見する方がよほど効率がいいし、要員もモラルも下がらない。
あっでも発注側はSI契約しているからコスト固定、コストとか効率とか関係ないですか!?
ベンダーに任せて、プロジェクトやシステムに支障があったら、「丸投げすんな!」って怒られるから、しないよりもした方がいいってことですね。効率が下がって品質が下がっても、ベンダーのせいにすればいいからね。
この不都合な関係をどうすれば健全にできるだろうか?
悪いのは、マスコミ?金融庁?エンドユーザー?システム部門?消費者?
発言しないベンダーにも責務はあるんだろうな。