職質アンチパターン

無責任な事を書きたい

じこはおこるさ

これはきかんしゃトーマスアドベントカレンダー20日目の記事です.

サービスやシステムが運用・運営フェイズに入るとほぼ間違いなく事故が起きる.理想的には事故が起きないことがベストだがそうした状況はほぼ間違いなく存在しない,つまり事故はいずれ起こるので,我々はそうした不慮の事故に備える必要がある.上の動画は今,社内の一部で流行っている歌で,非常に示唆に富んでいて,良い.

さてスタンスを予め明らかにしておくと,事故やオペミスは起こるものだし,その点については仕方がない事だと思っているが,その事故からは学習すべきだと思っている.

事故が起きた時はそれをいち早く終息・復旧させることが再優先だと感じていて,それを遂行するためには手段を選り好みせず,かつ冷静に行うことが重要だと思う.
よく「犯人探しをするな」みたいなことを言われるけど (まあ犯人という言い方は悪いんだが) 実際に事故を起こした人から話を聞いて状況確認することは重要だと思う.事故が起きた時というのは,現場は混沌に包まれていて,断片的にしか事故のヒント (どこに影響しているか,どれくらいの範囲に影響していのか,何が原因なのか,など) が無く,その上多くの場合気づいた人が作業をすることになるので,推測で作業をすると更に状況が悪化する可能性がある.
実際に事故を起こした人は一番その状況に詳しいはずなので,その人から状況を確認することで,現場の混沌を抑え,落ち着いて作業することが可能になると思う.まあもしくは事故を起こした当人が復旧作業に当たればいいんだけど,そうも言ってはおれん状況というのはあるので (人手が足りないとか) 状況合わせて対応する必要がある.
で,この時点で頑なに自分のミスを認めない (保身の為に無罪を主張する) メンバーと出会うというケースにぶち当たることがあるんだけど,こういうケースはチームの文化を改善していく必要がある兆候のように感じる.多分そういう時,事故を起こした人は「自分のミスを認めることで吊るしあげられるのではないか」という恐怖を抱いているのだと思っていて,そういうことにならないようなチームの空気を育んでいく必要があるのではないかと思う.或いはチームの問題ではなく本当の人間性の問題というケースがあるけど,そうした場合は知らんので適宜やっていく必要がある.というかサービスに対する愛情なんかがあれば保身とかそういうこと考える前に再優先でサービス復旧させようとすると思うのだけれど,まあこれは別の話ですね.

次に事故が終息したら,原因の調査をした上で再発防止の仕組みを考えていく必要がある.原因については,事故の対応をしている中でだいたい分かるケースが多いと感じているけれど,実はちょっと違ったみたいなケースがあるので精査する事も重要だと思う.原因さえ分かれば後はその再発を防ぐ機構を作れば良いだけなので作業自体は簡単だと思う.「オペミスは起こるもの,起きても仕方がない」と言うだけで再発防止の策を練らないのは愚かとしか言いようが無いので,この点に関しては徹底的にやっていくべきだと思う.一度起きた事故を何度も繰り返しているようでは話にならない.

という感じで事故からは学習するべきで,学習した結果同じようなミスが金輪際起こらなくなれば我々はその事故の対応に時間を取られることが無くなって,もっと生産的な活動に従事することができるようになると思う.学習は尊い.

ところで話は変わるようで変わらないんですが,事故を起こしやすいインターフェイスを作ってしまうのも事故の1つだと思う.どれだけ人間が注意深くオペレーションをしたとしても,それが事故を誘発するインターフェイスとともに作業をしなければならないのであれば,遅かれ早かれ事故は起きる.事故が起こりにくいインターフェイスにすることが,再発防止の近道であるパターンもあると思う.

そして話は変わって,これは単純に腹に据えかねたので言いますが,「プログラミングは難しいので,どうしてもミスを犯す.ミスを犯すのは仕方がないので,例え自分のミスが原因で事故が起きたとしても自分には責任がないので絶対に謝らない」みたいなスタンスは狂っていると思っていて,「ミスを犯す」という部分については同意できるところだけれど,だからといって責任が無くなるわけではないと思う.というかこれは,責任がどうこうと言うよりもチームメンバーとして協業しやすいかどうかの問題になってくると思う. 信頼の話だ.

[追記]
謝るとかどうでも良いからまずちゃんと誠実に,正確に対応してくれって話です.
[追記ここまで]

当時の様子