心がけていること


早く
賢く
効率よく

・・・オシム

これは、仕事(お金をもらっている)をする上で心がけなければならないことです。
最近、デバッグについて教える(時には、代わりにデバッグしたりする・・・)ことが多いです。なので、それについて書きます。

デバッグの基本

今のところ、自分が正しいと考えるデバッグの手順をメモします。
#完全な持論。


1.情報収集
=事象の把握(原因ではない)
必要な情報を集め、正確に把握する。
状況によっては、ここで再現性の確認も行う。
例:ログ収集、画面の動作チェック、同じようなつ処理を持つ、ほかの箇所の動作との差異を確認など。

2.分析
1で収集した情報に対する分析。
過去に発生したものと類似していないかや、事象が複数発生しているのであれば、共通点も見つけるなど。

3.仮説
2.を元に、「あたりをつける」ということ。
勘ではNGです。あくまで、ロジカルに。

4.検証
3.に基づいて検証。
障害であれば、この前に改修を行う。ただし、改修前に、テスト環境などで再現させることが必須。でなければ改修された確認ができないことになる。

下位作業は、常に上位作業の結果を元に行います。(1の作業結果を元にして、2を行うといった具合に。)


あまりに簡単なものは、「1.情報収集」→「4.検証」と、2つだけを行うことで、”解決したと感じている”経験があるかもしれません。ただし、それは「2.分析」、「3.仮説」を飛ばしているのではなく、実は「1.情報収集」と同時に「2.分析」、「3.仮説」をやれているだけです。または、よほど運が良い、もしくは、直前のものと同様の事象だった場合です。

デバッグが下手な(時間がかかる、解決できない)人の傾向

いきなり「あたり」をつける

根拠なく、”思い込み”で、いきなり「あたり」をつけて、「検証」作業を行っている。

自分に原因はないと思い込んでいる

この”思い込み”をもとに「あたり」をつけ、「検証」作業を行っている。

やみくもに調査する

「あたり」をつけることもなく、ただひたすら何か手を動かしている。

ここまでを考えてみると、「思い込み」がネックなような気がします。


例えば・・・「突然、家の電気が消えた」から、どういう手順で「停電だった」までにいきつくでしょうか。


「電気が消えた」
↓↓↓
次に、何を行うでしょうか?おそらく、「ブレーカーを確認」(情報収集)でしょう。
↓↓↓
その結果、「ブレーカーはおちていない」(情報収集)場合、次に何をするでしょうか?
↓↓↓
「隣近所を見てみる」(情報収集)
↓↓↓
「隣近所も電気が消えている」(さらに、情報収集)
↓↓↓
これらを考えてみた(分析)結果
↓↓↓
「停電では?」と仮説を立てる。
↓↓↓
隣近所の人に、同時刻に電気が消えたか聞いてみる。(検証)

極端な例ですが、おそらく、デバッグが下手な人は、「隣近所を見てみる」前に、「回線が〜」などと考え(根拠なくあたりをつける)、回線を調べたりする。そうすると、無駄な時間、作業となってしまいます。


上記にあてはまる人は、おそらく気が焦ってしまって、そのような行動をとるのでしょう。もしくは、何かをやっていることで、自分を安心させているのでしょうか。


そのような人に「落ち着いてやりなさい」「ロジカルにやりなさい」は、漠然としていますし、指示が曖昧ですし、おそらく改善されないでしょう。なので、デバッグに関して、具体的指示に落とすと、「1〜4の作業を手順どおりに行うこと」、さらにそれぞれに対して、より具体的な作業指示を出すこと、です。これは緊急性を要するものこそ、必要な手順です(ミスが許されない)。これこそが、


早く
賢く
効率よく

です。