2012年2月25日土曜日

【エンジニアのしがらみ】作業手順書について考えてみた

今回の記事はかなり私事ではあるのですが、
小生エンジニアという仕事を一応やらせていただいており、一サービスを展開している
エンジニアとして毎日を過ごしております。
その中で(私的作業の中に)作業手順書を作成するという作業が結構な頻度で発生しております。
「作業手順書」という言葉が一般的に流通しているかどうかはわかりませんが、
簡単に言うとエンハンスやメンテのときに本番環境にデプロイ作業をする作業をすべて手順書と化し
作業日当日にはそれしかやらないという制約の元作業を行うためのドキュメントになります。
そんなドキュメント、作業手順書を大体、月に5件くらい書いています。
(多いときで10件くらい・・・)
私の中では「結構多い」と感じております。
(たぶん世の中にはもっとたくさんの手順書を書いていらっしゃる方がいると思いますが・・・)
そんな作業を淡々とこなしていることにいささか不安と不振を抱き始めた今日この頃
ちょっと思い立ったので「作業手順書」というものについて少し考えてみました。
本当に少しだけね。

そもそも作業手順書とは何のために作るのだろうか?
から考えてみました。以下考えたこと。

■なぜ作業手順書を作成するのか
・事前に準備した必要以上の作業を行わないことで作業ミス、作業漏れを防ぐ
(しか根本的な理由としてはないのかなーと・・・)

まぁ理由は理解したとして、今現段階で私が疑問に不振に思っていることを
率直に書いてみました。以下。

■疑問点、不信感をいだく点
・本当に作る必要はあるのか
・作業を行う人が手順書を書いて意味があるのか
逆にいうと手順書を書く人が作業を行って意味があるのか
・どこまで詳細に書く必要があるのか
・できる人が作業を行えば、手順書はだいぶ荒くても問題ないのでは
・手順書を作っている人的にはどうでもよいところをガンガン指摘される

ここから導き出される私的デメリット、以下。

■デメリットは
・人的コストが結構かかる
(どこまで詳細に記載するかによってくるが)
・定常化されている手順のコピペ作成によるリスク
(慣れすぎた手順、枯れた手順はレビューでもチェックが甘くなる)
・たとえば新規で作成した手順が本当に正しい手順かどうかを図る指標がない
・一人で手順書作成+作業をしてしまうと他の人が作成、作業をできない手順書が
知らぬ間にできあがってしまう

やはり一番は「コスト」かなと思います。コストとリスク回避が等価交換になっている
のだとは思いますが・・・
とはいえメリットもあるはずということでメリット以下。

■メリットは
・記録を残せる
・誰がやってもできるようになる(属人化解消)
・必要以上の作業をしないことによるミスの防止
・本番に対するビビリがなくなる(ある意味デメリットでもあるのか・・・)

基本的には「安全」とか「リスク回避」とかそんな感じのキーワードが
当てはまるんじゃないかなーと思います。

以上のつらつら書いたことを見返してみてまとめてみました。
まとまってないですが・・・
何の参考にもなりませんが、共感してくる人がいたら仲間ですw

■まとめ
・手順書職人になってしまった段階でこの負のスパイラルからは抜けられない
・極力ムダなこと、余計なことを書かないようにし、修正が少なくなるようにする
(A型の人は手順書作成をするとおわります)
・人的コストを考えると手順書を作る手順をまとめておく(手順書の手順書)

以上
もはや愚痴ですね・・・w
とりあえず書いたけどまた何か気づいたら追記してみよかな。

■P.S 20140108 自動化について
定型化された作業は自動化することでコストを下げられるかなと思っています
最近は(本当に定型化された)作業を自動化するようにしておりJenkinでのCDやcapistranoを使ってのコマンドの削減等をしています
またテストも自動化することで作業手順書に書く(であろう)確認項目の数を減らすようにしています

自動化することは本当にいいことだとは思うのですが、自動化することでデメリットも発生するかなと思っているので一応それも書いておきます
・自動化するためにプログラムやミドルウェアの操作、習得が必要
・自動化用のプログラムを「運用」する必要がある(エンハンス時のテストの修正や不具合修正等)
・教育することができなくなる、自動化されていることでボタン一発で作業やテストが完了するのでこれまで頑張って行っていた作業のノウハウをこれから来るであろう新しい人に教える必要がなくなる
・自動化に終わりはない(どこまでやるか、何のための自動化かを明確にしておく必要がある、たとえばこの自動テストは正常系のみを網羅するテストであるなど)

と書いてみましたが上記のデメリットが必ず発生すると考えても自動化は絶対やるべきかなと思います
やる理由の大きな目的は品質向上やコスト削減ですが、運用しているエンジニア(デプロイエンジニア)的には自動化することで精神衛生上もいいかと思います

自動化の作業を仕事でできるのが一番いいですが、小生は中々に難しい環境で結局あと回しになってしまっています
自動化を推進するプロジェクトとかチームで仕事ができるといいなと思っている次第です(そんなチームにしたいなとも思っています)

0 件のコメント:

コメントを投稿