Murga

個人的に言いたいコト・主張・気持ち。

「~~なはず」と言った数だけトラブルは起こる

  • この設定項目は正しいはずだから、違うところをチェックしてみよう
  • Git の使い方を間違えるような開発メンバはいないはずだし、master ブランチへの Push を禁止する必要はないだろう
  • この Excel 管理台帳はみんなちゃんと書いてくれてるはずだから、このとおりに作業すれば間違いないはず

僕がいた前職の連中のレベルが低かっただけかもしれないが、僕はこれまで、こうした「はず」という言葉で予防や確認を怠り、その結果本番障害を起こしたり、データを消失させたりしている連中を数多く見てきた。

やらかした当事者ではない僕の方が、そういうものを見ては「『はず』なんて不確かなことは言わないようにしよう」と注意しているのに、やらかしている連中はいつまでも「大丈夫なはず」と言って同じような失敗を繰り返している。

ちなみにだが、上述の「はず」は、次のようなトラブルに発展した。どれも最初から予見できていて、対策も簡単なことだったが、その瞬間の面倒臭さを嫌った結果、障害報告書を書いて関係各所に謝りに行くという、お金にならない面倒な仕事が増えることになった。

  • 正しい「はず」と決め付けていた設定項目が間違っていて、障害復旧が遅れた
    • 正しいはずだと思うなら、その場で正しいことを確認すればよかったのだ。確認だけなら30秒もかからなかっただろうに
  • ローカルで master ブランチに切り替えたまま開発を始めたメンバがそれをそのままリモートの master ブランチに Push して、履歴が不必要に汚れた。その後も master ブランチの Revert コミットをローカルにうまく取り込めなかった別のメンバが「うまく同期できない」などと混乱
    • どうせみんなスキルねえんだから、管理画面からチェックボックス一つで設定できる「master ブランチへの Push 禁止」くらい設定しておけばよかったのだ
    • 「間違えないはずだ、間違えてはならない」と思っているだけでは、絶対間違える。「間違えても大丈夫なようにしておく」のが鉄則
  • Excel 製の管理台帳に非表示の行が紛れていたり、行削除によって行番号がズレていたりして、結果オペミス。その日のうちに原因特定がしきれず本番リリースが中止に
    • 「誰かがちゃんとしておいてくれているはず」とかいう謎の思い込みで、資料の事前確認を怠った (全体に目を通しておけば、中身が間違っていること自体はすぐに気が付けた)
    • ちょっとした関数を仕込んでおけば、資料の整合性や破損も検知できたのに、関数を組むのを面倒臭がったか、関数を組むスキルがなかったかで、結局目視確認しないといけない資料に成り下がっていた

前職が特別酷かっただけで、転職した今なら、技術レベルの高い人たちばかりだから大丈夫なはずだろう。そう思った僕が今度は甘かった。

  • 今は手作業でやっていれば大丈夫なはず、自動化は必要になったときに考えればいい
  • 目視で確認したら合ってた、どこも間違っていないはずなのにどうして…

どこかで聞いたような言葉が飛び交う。

  • 手作業でやっていたことでやっぱりミスがあった。手作業でやった時に証跡も撮っていなかったので、何をどう間違えたのかすら正確に追えなくなっていた
  • 目視確認したところが間違っていた (カンマとピリオドの見間違い)。Diff とったり EXACT 関数を仕込んだりしておけば、目視確認すらしなくとも間違いが炙り出せていたのに、思い込みによって原因調査に時間がかかった

僕はこういうモノを見つけるたびに、「ココで『大丈夫なはず』って思い込んだことが障害に繋がりますよ、ちゃんと diff コマンドで比較しましょうよ」と忠告したり、「管理台帳にミスがあったらリリース作業もミスっちゃうことになるんで、管理台帳の内容が正しいか確認する関数を末尾に仕込んでおきましたから、ココ見てくださいね」と仕組みを作って共有したりしてきた。

でも彼らは、diff コマンドが使えなかったり、Excel 関数とその説明を見ても理解できなかったりする。スキル不足も罪だが、それよりも多かったのは、自分が実際にやらかした後でも、こうしたチェック機構の重要性を理解しないで「今度は大丈夫なはず」などと抜かしやがるパターンだ。

こうなると、もはや彼らはわざと本番障害を起こしたい、不注意によってミスして罪滅ぼしの仕事を増やしたい、ただのマゾ共なんだとしか思えなくなってくる。どこかよその企業や外国から送り込まれた工作員なんじゃないか?と。そうでなかったら、こんなにも悲惨な結末が見え透いている状況を、「大丈夫なはず」なんて無視したりしないだろう。

現に僕が「コレじゃ大丈夫とは言えません、半年以内に絶対コレが原因でリリース障害に発展しますよ」「代わりにこうやって仕組み化しましょう、例えこのツールを使わなくても、こういう観点でチェックする機構がないとこういう手順漏れが発生し得ます」とまで忠告しているのに、「いやでも大丈夫でしょう、今のところ問題ないし」などと聞く耳を持たないのは、もう意図的にバグらせたいとしか思えない。

みんな普段は良い人だし、僕が個人的に嫌われているから話を聞いてもらえないワケでもなさそう (他のことでは意見を取り入れたりしてもらえているので) なのに、こうした「僕が発生を予見している問題の種」に対しては無頓着なのは、何でなんだろう。


僕が強く提言したにも関わらず、対策を「しないこと」を決定されて5ヶ月後。別のメンバが担当したリリース作業が途中で失敗した。「原因はココの有効期限切れじゃないですか?」と指摘するとそのとおり。「手順書にココをチェックする観点が記載されてないから、ココの設定の存在を知らない人は分かんないですよね」と言って、ようやく手順書に僕が指摘していた内容が取り込まれた。

ほうら僕が言ったとおりじゃないか。「半年以内」と言ったのはデタラメじゃなくて有効期限から逆算しての話なんだよ。全部半年前に説明していたぞ。

半年とか1年とか、そういう単位でしか注目されないところは特に忘れ去られやすいし、繰り返しオペレーションすることでもないから、問題が起こりやすいのに、それをあえて「対策は何もしない」と上司命令を下したんだ。


「大丈夫なはず」「問題ないはず」

彼らは今後もこう慢心して、どうしようもないミスを繰り返すんだろう。多分だけど、彼らはきっとこういうミスを繰り返したいんだ。理由は知らないけど。

僕はそんなのに巻き込まれるのは御免だ。「僕は忠告した」「僕は改善案も提案した」「それでも無視されたから、自分だけは問題を起こさない仕組みを作っておいた」と言えるようにしておこう。正しいのは俺だ。

システム障害はなぜ二度起きたか みずほ、12年の教訓(日経BP Next ICT選書)

システム障害はなぜ二度起きたか みずほ、12年の教訓(日経BP Next ICT選書)