地方エンジニアが感じる地方・中小企業での悩み

ダブルチェックに頼っても意味はない

»

 IT の世界は日々進歩しているのは誰しもが知るところですが、その進歩に使う側が追い付いていないというのも、実際に起きていることだと思います。元々の IT 導入理由の一つに、省力化が含まれていたのですが、今の時代になってもその省力化が達成できているのか、疑問に思える個所も多いのではないでしょうか。

 笑い話として見かけるものの中に、「Excel でマクロや関数を使って自動集計したものはズルをしているものだし、信用できない」というものがあります。普通に考えれば、表計算アプリは自動で集計したりするためのものなのですが、ただの作成ツールとしてしかみてないのか、自分たちが利用していない知らない機能を利用していることをズルと思われているようです。

 何のために IT を導入しているかもわからなくなる話ですが、意外にこの手の話は身近にも潜んでいます。それは利用者だけではなく、開発側にも多く潜んでいます。

 ダブルチェック、という方法があります。何かしらの結果に対して問題がないかを、一人ではなく二人でチェックするというもので、一人目が仮に見逃しやミスをしていたとしても、二人目が気づくだろうという方法です。場合によっては三人で行うトリプルチェックもあります。言葉だけを聞いていると一理ありそうなのですが、実際においては果たしてどうでしょうか。

 二人でチェックしていたからといってもミスを検知できるか、と言われればそれほどの効果はありません。対象となる量が少なければまだしも、一定量以上のものをチェックするとなると、人間である以上かなりの確率でミスや見逃しは発生します。実際に、ダブルチェックを行っていてもミスを止められなかった事例などは、いくらでも存在しています。

 ダブルチェックなどの人力によるチェックが有効に働くためには、例えばその二人が違う観点からチェックしあえる事が重要になるのですが、多くの現場では単純に人数を増やして深くは考えないようにしているように思えます。

 このようなケースでは、システムが機械的にチェックすることが最も効率的なのですが、機械を信用できないのか「一番頼りになるのは人間の目」と信じて疑わない人にとっては、チェックする人数を増やして対応するのが一番効果があると思い込んでいるのです。

 チェックするシステム側に問題があるから、という理由であればそこを解決するためにダブルチェックなりを行うのが筋であり、本番の運用時にダブルチェックを行うのを是とするのは、何か間違っていると思わざるを得ません。短期間の間は仕方ないにしても、どこかでそれを食い止めなくてはならないのだと思います。

 しかし利用者側が、ダブルチェック・トリプルチェックといった方法で対応しようとするのはまだわかるのですが、開発側でこれを行おうとするのは正直納得できません。
 元々が省力化といった目的を含んでいるはずのシステムが、その開発途上において人力に頼っているのでは、成果物としてのシステムで省力化できるはずもありません。何をどうすればコストを減らすことができるのか、その点について考えがない人が開発していては、目的を達成できるはずもないのです。

 このような人は開発側にもまだまだ多く存在しています。システムで全てをチェックできる訳ではありませんが、それでも人間が行うよりは問題は少なくできるものです。そこを敢えて人力で対応する事に、開発側としてはそれほどの意味はありません。厳しい言い方をすれば、それはただの自己満足の世界であり、開発者として正しい姿ではないでしょう。

 私達開発側としては、いかに効率よく間違いなく業務を遂行させるかが重要であると考えます。そこをダブルチェックで対応する、というのを最初から提示するようであれば、それはある意味で自分たちの業務を放棄していることにならないでしょうか。

 人手を増やすことで対応する事は、コストが増えるだけであり総合的に見ても決して良い事ではありません。仮に現状のチェック機能が有用でないというならば、そこを開発することに時間とコストをかけるべきではないかと考えます。

 私達が適した手段を提供できなければ、システムを利用するユーザーの意識も変わっていくことは難しいでしょう。自分達の所作が、巡り巡って自分たちの首を絞めることの無いよう、日頃から注意していきたいものです。

Comment(3)

コメント

山無駄

品質の問題はコストの問題と合わせて考えなければなりません。
確かにダブルチェック、トリプルチェックは人件費は二倍、三倍になるにも
関わらず間違いを100%なすことはできないので、効率的な方法とは言えません。
そういった意味では、本稿に同意できる部分もあるのですが、ただ効率的な
方法ではないからと言って開発側でダブルチェックを行うのは業務放棄とい
うのは飛躍しすぎだと思います。

仰っているように、同じ観点の人がダブルチェックをしても意味がないし、
ダブルチェックが前提になると、チェック者が安心して手を抜いてしまう等
問題はあります。しかしそれは、ダブルチェックのやり方に問題があるので
あってダブルチェック自体が無意味であるという事ではないと思います。

例えば開発現場でも、誰かがプログラミングした機能は、必ず別の人間にテ
ストさせます。その別の人間というのは設計者やテスター、利用者といろいろ
な立場の人間に見てもらう方が品質は間違いなく上がります。これは同じ
機能を複数の人に見てもらっているのでダブルチェックといえるはずです。

しかし当然、テストする人間が増えれば増えるほど人件費は高くなります。
それでも、ある程度コストをかけて品質を確保しておかないと障害が起こり
その被害は品質確保にかけたコスト以上に甚大なものになる可能性があるの
です。

もしくはペアプロ。コーディングを二人でやっていくのですが、これもペアに
する人を考えないと一人はただ眺めているだけになりますが、うまくいけば
開発効率は一人の場合より早くなります。二人かけているから倍の速さで
プログラミングできるとは思いませんが、コーディングレベルでダブルチェック
も行っているので、品質もあがるのしょう。

おそらく、著者が経験したダブルチェックの方法が非効率で意味のないもの
だったのでしょう。そんな方法は世の中に多くあり、無駄なので改善する必要
はあります。そこは同意。しかし、だからと言ってダブルチェックそのものが
無駄なものといってしまうと、少し言い過ぎかと。

ただ、やらされている?ことに疑問を持ち、自分なりの考えを持つことは大切
だと思います。

夢夢

テスト駆動開発をしろということだと思うが・・・

Ahf

遅くなりましたが、コメントありがとうございます。

山無駄さんの言われる通り、最終的にはリスクとコストの天秤になるのだと感じます。

日本企業に多いのは、リスクを過大に意識しすぎて、かけるコスト以上のものを
求められるケースが多いのではないでしょうか。

個人的にはダブルチェックなどの、チェックする機会を増やして対応する手法であるならば、そこは人力ではない方法でのチェックを増やすのが、最も適しているのではないか、と考えています。

もちろん、そこまでのチェック機構を用意できるか、という難しさはありますが・・・。


テスト駆動開発についても共通しているところはあると思います。
上手く実施することが出来ている限りは、非常に優れた手法だと思いますが、
テストの設計自体の誤りに気づけるかどうかは、
その仕様に対してのレビューの質が高いかどうか、となるかと思います。

コメントを投稿する