SSブログ

デバッグを支える知識(3) [プログラマー現役続行]

以前、「デバッグを支える知識」として次の記事を書いています。
また、デバッグの科学的手法を「デバッグの科学的手法」で述べていますが、再度『ビューティフルコード』の第28章から引用すると以下の通りです。
1. プログラムの失敗を観察する
2. 観察と矛盾しない失敗の原因についての仮説を立てる
3. 仮説を使って予想する
4. 予想を実験でテストして、さらに観察する
 a. 実験と観察が予想を満たすなら、仮説をさらに精緻なものにする
 b. 満たさないなら、別の仮説を立てる
5. 仮説がこれ以上精緻にできなくなるまで、手順3と4を繰り返す。
この「仮説」を立てるために必要なのが「知識」です。バグに直面したときには、仮説を立てるために必要な知識が不足していても、今日ではある程度ネットで調べて補えます。しかし、本質的な知識の欠如は、デバッグを阻みます。

メルペイ社で働き始めて、私にとってはGCP(Google Cloud Platorm)やKubernetesは初めての経験です。そもそもAWSもほとんどやったことがないです。結果として数時間ではなく、数日の単位で行き詰まったデバッグが今までに3件ありました。3件とも解決はしましたが、最近経験した3件目は、ほぼ完全に行き詰まった状態で、それまでの状況を再度整理して社内のSlackで流したら、「○○をやってみたら」という返事があり、それで解決しました。
※ 1996年9月に日本オラクルに入ってからデータベースを勉強した経験に似ています。

解決してしまえば、現象を説明できる原因、それにもらった助言の意味を理解できたのですが、私自身は、現象から原因への仮説を立てるのがほぼ行き詰まっている状態でした。このような経験により仮説を立てるための知識が少し増えたことになりますが、やはり、1時間で解決したかった種類の不具合でした。

コメント(0)