予測できる失敗
土曜日、リーダークラスが集まるセミナーで、話をさせていただきました。
このときに「バグが出たときにどうすればよいか」といった質問が出て、そうだ、そのことを書いてないなあと、思い出したので、今週のネタが決まりました。
毎週、テーマに困っているので、本当に助かりました。
さて、プログラマでもSEでも、開発会社の技術者であれば、納品後のシステムで「バグ」が発見されたという経験はお持ちのはずです。
お客様から「困った声」で連絡があるときもあれば、いきなり、営業を通じて叱責の連絡が来ることもあったでしょう。
事態は様々ですので、一概には言えませんが、それでも、バグが発覚した場合の発言、行動から、お客様は、あなたという人間の誠実さを見るのです。
若く未熟なプログラマは、時に言ってはいけない言葉を発してしまいます。
「ちょっとしたミスです」、「すぐ直せます」
まず、当たり前のことですが、プログラマにとって、例え、「ちょっとしたミス」だとしても、「ちょっとした」とか「些細な」といった形容詞は、明らかにお客様に失礼な発言です。
一番最初にしなければいけないことは、「大変、申し訳ありません」と、お詫びすることなのです。
次に、「すぐ直せます」という言葉。
これは、相手が「どのくらいで直せるの?」と問われたことに対する回答であれば、問題はありません。
しかし、相手が聞いてもいないのに、最初にこういう言葉を発すると、「悪いと思っていない。直せばいいと思っているんだ」といった誤解を受けることもあるでしょう。
お客様が、システムに何か問題を見つけたときに考えることは、「すぐに直す」ことではないのです。
それは、このバグによって「何が問題になるか?」、「業務のどこに支障をきたすか?」、「システム全体に、どんな問題が潜んでいることが分かったか?」といったことなのです。
優先順位としては、
【1.お客様の取引先に迷惑が掛からない】
【2.お客様自身の業務に支障をきたさない】
【3. 問題が起こった原因を探る】
【4.問題をつぶす】
といった順になるはずです。
ところが、この優先順位の1、2を全く無視して、(お客様の視点で、物事を考えたことがないからだと思うのですが)問題の原因を探りたい、プログラムを直したい、という気持ちだけが先走るのが、技術者の悪習なのです。
原因を追究することよりも先に、これ以上の被害を出さないためには、どう運用を変えるのか?とか、最悪、システムを止めることさえも、技術者が、自ら提案すべきことなのです。
技術者は、何があっても、「システムを止めてください」と言わない、言えない人が多過ぎます。
バグが潜んでいるシステムを使い続けることは、お客様にとって、多大なストレスになります。
そういった意味でも、システム稼動後のバグ発見は辛い話です。
できれば、"バグゼロ"にしてシステム納品を行いたいものです。
しかし、人間が作っている以上、バグがあることは明らかであり、「予測できる失敗」なのです。
予測できることなのであれば、対処を考えておく必要があります。
対処を考える場合の優先順序こそ、お客様の視点で考えることが必要なのです。
何か問題があったときまず、お詫びする。
そして、お客様の視点で、「どうすべきか。どう動くべきか。どうアドバイスするか」を考えるのです。