エンジニアのためのミスを減らすチェック方法
1年目の新人に、サーバのキー(ハッシュ文字列)20個あまりを ファイルサーバに保管するようお願いしたのですが、 文字列のキーをコピペしてく作業なので、きっと間違いが出ると思い、 他の人にもチェックしてもらったところ、やはりミスがありました。
具体的には、キー文字列が欠けていて、正しくコピペしきれていませんでした、というありがちな話。
本作業としては、間違い自体は検知・修正して正しく保管できれば良いので、 それでこの作業はおしまいなのですが、仕事に慣れてきたせいもあり、 普段、慎重な確認や注意が必要なはずの仕事を少し適当に済ませてしまう傾向があるので、 この後、彼になぜミスったかなどを考えてもらいました。
そうしたら、だいたい以下のような考察と、相談を頂きました。
【質問】
1. チェックの観点
2日に分けて(次の日にもう一度)見直しチェックをしたのに、それでも間違えてしまった。 これはチェックするべき観点を誤っているからではないか? どんなことに気をつけたら良いのでしょうか?
2. チェック方法
漏れなく誤りを検出できるような良いチェック方法はないでしょうか?
3. 意識の問題
そもそもチェックに対する意識が低いのではという認識がある。 どうしたらもっと意識を高められるでしょうか?
自分の胸に手を当ててしばし考え、そしてだいたい以下のような回答をしました。
【回答】
1. 仮説を立てていない
2回に分けてチェックをしても同じミス(見過ごし)をしてしまったのは、 彼が見直しチェックをする前に、 「どんなミスをしてしまう可能性があるのか」を考えていなかった、 つまり仮説を立てていなかったことに起因しています。 エンジニアの仕事に準えて言えば、テストケースを考えていないとも言えます。
どんなミスが考えられるか、から考えてチェックする箇所を考えれば、 チェック観点ははっきりしますし、集中できます。
但し、新たな仮説を考えず、類似作業を経験すればするほど、 慣れてしまって「思い込み」が強くなり、チェックの観点が狭くなるので注意が必要ですね。
第三者にダブルチェックを行ってもらう理由もここにあります。
2. 機械的な確認方法を考える
- と併用して、これを考える必要があります。 いくら意識を持ってチェックをしても、人間の目でチェックする限りミスは避けられませんし、時間もかかり非効率です。
その点、機械的なチェックができれば、誤りなく効率的に出来ます。
もちろん、最終的に自分の目でも大丈夫かの念押しをする方が良いですが、便利なツールをうまく活用したいところです。
今回新人に行ってもらったのはキー文字列の保存ですから、正しく保存出来ているかを後からチェックするには、WinMerge などのdiff用ツールや、Excelのセル2つに文字列を貼り付けて関数でチェックするなどの方法が便利です。
【Excel関数の例】
=exact (A1,B1)
=if(A1=B1,"OK","NG")
=len(A1)
使い分けとしては、
・ファイルが完全に一致するかの比較 → diffツール
・ログなど、文字列が行ごとに一致するかの比較、桁数の確認 → Excel
こんな感じでしょうか。
言うまでもありませんが、チェック方法(特にExcel自作の場合はロジックなど)が正しいかどうかの検証は大前提なので怠らないこと。
機械的なチェックが難しいもの(例えば出ている画像やレイアウトなど)は目視だけが頼りになるので、横に並べるなどして差異が目に入りやすい、比較しやすい工夫をした上で、指差し確認するしかありません。
3. 間違えたらどんな影響があるのか(どれくらいヤバイのか)を考える
最後はこんな感じですが、でも大事です。
どんな作業でもそうですが、失敗したら、また誤りに気づかなかったら、その後どんなまずいことになってしまうかを考えれば、それだけ真剣にチェックするというものです。
ただこれは大失敗した or 大失敗しそうだった、という経験がないと本当の意味で学べないというのが欠点です。
裏を返すと、経験をすると身に染みて分かるようになります。
なので、失敗して障害を起こすのは決してオススメはしませんが、会社orチームがピンチにならない程度に、失敗はたくさんした方が良いです。
実力のある人は失敗どころか、挫折するほどの経験を持った人ばかりです。
大失敗を経験できるのは貴重なのです。
その代わり、同じ失敗は繰り返さないことが大事です。
大きな失敗をした場合は次はないので、ハイプレッシャーが掛かるようになり意識は最高に上がりますw
こんなところでしょうか。
何年も仕事をやっていれば当たり前の事ばかりですが、こうやって整理して教えたことを、後輩がまた後輩に教えてくれればいいなと思います。