📋 蓋し手順書はプログラムである

作業手順書のレビューでいろいろ指摘をしていく中で、 「作業手順書は作業者を動かすためのプログラムである」 というのは、作り手の意識として悪くないんじゃないかと思ったのでメモ。

作業手順書をどう作るか

作業者に判断の余地を残さない

  • 確認するための手順まで書く
  • 判断基準を一意に定め、作業者にゆだねない
    • 確認基準が作成者と作業者(またはレビュワーとレビュイー)間でズレていると事故が起こる

よくはない 前日のバッチ処理が正常終了していることを確認する

よい cat path/to/logs/yyyyMMdd.logを実行し、最終行に「正常終了」のログが出力されていること

状態に思いを馳せる

  • この手順が終わったときにどういう状態なのか、ということを想像することで、次の手順が明確になる
    • 本番環境に手を加える前の準備が全部済んでいるのかとか、何が検証されていて何が未検証なのかとか
      • ステートフルなプログラムは今どきじゃないけど、現実はステートフルなので仕方ない
  • 後輩にや同僚にコードを読むコツを聞かれたときなど、冗談めかして 「プログラムの気持ちになって考えるといいよ」 などと言って気持ち悪がられるのだが、9割ぐらいは本気で言っている
    • 手順書も一緒で、何も知らない作業者の気持ちになって作らなければならない

「書いてあることだけをやれば完璧」であること

  • 作業者が書いてあることだけをやって、問題なく作業が完了するものであるべき
    • 担当者への連絡、社内への連絡など、システムには直接関係しないものであっても、作業者がするのなら手順に入れる

終わりに

ここまでやればレビューで手順の問題点を指摘できるようになり、意味のあるレビューになるかなと思っています。ギリ及第点というところでしょうか。 最近はオペミス一撃のダメージがめちゃくちゃデカいので、多少面倒でも事前にケアしていきたいですね。