業務中に問題が発生した時、どういった手順で解決するかの備忘録です。
初投稿なので、問題等ありましたらご指摘お願いします。
#0. まずはじめに
問題が発生した時は、パニックに陥りがちです。
ですので、私は混乱しかけたら、以下の手順に沿って事実を書き並べるようにしています。
#1. 問題の確認
根本的に、問題が発生した時には何が問題なのか理解できていない事が頻発します。
なので、まず問題が何かを確認します。
###i. 何が起きたか
問題が発生した時点で何が起きたかを確認します。
ex)プログラムがエラーを出力した、△が出力された、朝起きたら家を出る時間を過ぎていた、etc...
###ii.問題が発生する前はどうだったか
問題が発生する前も何かしらの不具合は抱えながらも実行はできていたことと思います。
その実行結果を確認します。
ex)予定していたレイアウトとは違う画面が出力されていた、○が出力されていた、昨日までは目覚ましが鳴っていた、etc..
###iii.問題は何か
何が問題なのか改めて確認します。
ex)自分の記述したコードに間違いがあった、目覚ましが鳴らなかった、etc...
ここまで書き出して、問題を再確認します
#2. 問題の特定
次に、確認した問題に対して情報を集めます。
##i. 問題個所の特定
どこに問題の原因があるかを確認します。
プログラムであればエラーコードを確認しますし、実生活であれば発生した原因を確認します。
ex)○行目のコードがエラーを出力している。目覚まし時計の針が進んでいない、etc...
##ii.問題発生理由の確認
なぜその問題が発生したかを確認します。
プログラムなら先ほど確認した特定位置を確認しますし、実生活であれば原因に不備がないかを確認します。
ex)セミコロンが抜けていた、目覚まし時計の電池が切れていた、etc...
##iii.仮説を立てる
どこで起きているかは分かったが、ついぞなぜ起きているかがわからない場合があります。
特に、不慣れなフレームワークなどを使っている時などには頻発します。
ex)新しくControllerとViewを足して、それに対してのリンクも貼ったのに、そのページに遷移しようとするとエラーが出力される。
その場合は、目安の時間を切って、仮説を立てます。
ex)ルーティングを行うファイルがどこかにあって、それに追記しなければいけないのにしていないのではないか
そして、私たちの友達であるGoogleに聞きます。
私は15分を目安に調べ、見つからなかったら先達に質問することにしています。
#3. 問題の解決
ここまで調べたら、問題を解決していきます。
##i.解決に必要な時間の見積
まず、修正にどのくらいの時間を取られるかを大まかに見積もります。
- たとえば、自分が書き込んだ修正によって、プログラム全体の不具合が見つかったなら、それはもう自分の手に負える工数を超えています。
- たとえば、セミコロンが抜けているだけだったら、それは修正に30秒もいらないでしょう。
##ii.見積の報告
問題は大きくても小さくても対応に時間がとられます。
私の場合は、タスクの終了が1時間以上遅れるような修正作業と、手に負えない問題に関しては、報告を行っています。
とりあえず上長の方に現在どこまで来ていて、どういった問題が発生しているか、またどのくらいで修正できるか、または対応が難しい旨を報告します。
結果、上長の方がその問題に対応しきれると判断したなら、自分でその問題に対応しますし、無理だと判断したなら巻き取ってくださるでしょう。
##iii.問題の解決
見積もりを行った際に目星をつけておいた修正点を修正していきます。
また、見積もりが甘く、修正にさらに時間がとられそうな場合は、上長の方に再度さらに時間がかかりそうな旨をお知らせして、再度指示を仰ぎます
#extra. 問題解決の方法がわからない場合に、質問する場合の注意点
時間を軽く見積もるタイミングで、どこをどう直せばいいかがわからない場合がよくあります。
この場合は上長の方にわからないので教えてくださいと質問をすることになります。
その場合は以下の点に気を付けて質問を行うようにしています。
###1. 何についての質問なのかを整理する
問題の確認を行ったタイミングの内容を再度確認します。
上長の方は忙しいので、突然質問が飛んできても何の内容かわからないと思います。
ですので、現在対応中のタスクがわかるように質問を行います。
チケットが発行されているなら、その番号やURLを書くなどするようにしています。
###2. 仮説と、その仮説の結果をまとめる
わからないことが起きた時、仮説を立てたと思いますが、質問をするということは仮説は間違っていることでしょう。
ただ、どういうアプローチを行ったかは上長の方に伝える必要があるかと思います。
ですので、どういった手順で何について調べたかを確認し、まとめます。
「○○であるだろうと仮説を立て、その仮説に沿って調査を行いました。結果××であることがわかり、仮説は間違っていました。」と言った感じです。
#最後に
個人的な問題解決の手順をまとめてみました。
この手順が絶対に正しいわけではないとは思いますが、ご指摘などありましたら書き込んでいただけると幸いです。
最後までお読みいただきありがとうございました。