はじめに
ちょっとした家電トラブルなんていうのは日常茶飯事ですよね。
そして、プログラマがスルっと家電トラブルを解決するのは、エンジニアだからではなく、トラブルを切り抜けるための考え方を知っているからです。
『文章題で身に付くプログラミング思考入門️』は、日常や文章問題からプログラミング思考を身に付けていく、簡単で身近で、あなたをちょっと輝かせてくれるシリーズです。
今回は、デバッグ思考について考えていきます。
これまでのまとめ
対象者
- プログラミングの考え方を学びたい人
- プログラミングに挫折したことのある人
- 論理的思考を鍛えたい人
- 文系の人
- エンジニアの思考を理解したい人
概要
ところで、そもそもデバッグとは、プログラムに潜むバグ(虫)を取り除くことを言います。
ではデバッグ思考の3ステップとは何かというと、
- 問題をいかに特定し
- 原因に対応し
- 再発を防止するか
です。
この考え方が日常的に染み込んでくると、堅牢なプログラムを書けるようになるだけでなく、日常に溢れる「またやっちゃった」も減ってきます。
さて、難しく考えるのも何なので、電気ケトルでお湯が沸かないバグが発生したことにしましょうか。
一つずつ見ていきましょう。
問題をいかに特定するか
電気ケトルでお湯が沸かない理由はたくさん考えられますね。
例えばどんな可能性があるでしょう?
なるべく多角的に、たくさん可能性を挙げてみましょう。
- 水が入っていない
- ブレーカーが落ちている
- コンセントが壊れている
- コンセントが刺さっていない
- 電源コードが断線している
- ヒーターが壊れている
- スイッチが壊れている
- スイッチを入れていない
- 気温が低すぎる
- ...
いろいろな視点から可能性が挙げられますね。
根本的に大事なのは、どれだけ柔軟に、多角的に物事を考えられるか。その思考力です。
これらのどれかが原因であるかもしれないし、いくつか複合的な原因が絡まっているかもしれないし、これらのいずれでもないかもしれませんね。
結局のところ、実際の原因が特定できるまでは何が原因かがわからないわけですから、予想するための頭の柔らかさというのがそもそも重要です。
「ヒト」「モノ」「コト」「環境」「社会」で観点を分けたあと、それぞれ細分化していくとそれなりに柔軟に物事が見れるようになるかなと思います。
例えば「ヒト」なら、一人称、二人称、三人称、赤の他人、家族などですね。
自分から見たらこう、あなたからはこう、彼から、又聞きした人から、家族から見たらこう。
見え方は全ての人から違っているはずだという前提で、なるべくたくさんのものを受け止める柔らかさです。
トレーニングである程度鍛えられます。常に多角的な視点を持とうと意識することはとても大事ですし、それはイコール伸び代です。
原因に対応する
そもそも「お湯が沸かない」とはどういう状態なのでしょうか?
その特定をしなければ話が始まりません。
- 水が入っていない
- 電気の供給元に問題がある
- ケトルが壊れている
- 使い方を間違っている
- 環境が使用に適していない
他にもあるかもしれません。なので、
その「お湯が沸かない」状況を明確にした上で、もう一度不具合を再現するのです。
実際のところ日本製の家電は高品質なので、あまり壊れませんよね。
使い方を間違っているとか、家電以外に原因があることがほとんどです。
マニュアルで指定された使い方と違う点を洗い出して、
段階的に一つずつやり直して確認し、不具合を再現することによって原因を特定し解決します。
全てのプロセスと環境がマニュアル通りで、それでもお湯が沸かないのであれば、そこで初めて電気ケトルの故障が可能性として挙がってきます。
再発を防止する
そして、再発防止のための具体的なアクションとルールを起こします。
例えば蓋の閉め具合が甘かったなら、確実に閉められる方法はどんな方法なのかを色々試します。
試した結果、両手を使えば確実に閉められることがわかったので、毎回両手で閉めるようにするルールを作る。といった具合です。
原因が特定され、問題が一時的に解決されても、同じ不具合が続出するなら本当の意味での解決ではありませんよね。
具体的なアクションとルールに落とし込むことで、本当の意味での解決に繋がるのです。
次回は、手順の入れ替えについて考えていこうと思います。
まとめ
デバッグ思考の3ステップとは、
- 問題を特定する
- 根本的に大事なのは、どれだけ柔軟に、多角的に物事を考えられるか。その思考力です。
- 原因に対応する
- 段階的に一つずつやり直して確認し、不具合を再現することによって原因を特定します。
- 再発を防止する
- 具体的なアクションとルールに落とし込むことで、本当の意味での解決に繋がるのです。
です。
最後に
ここまで読んでくださってありがとうございます!
少しでも役に立ったら「いいね」をください。続ける励みになります!