Known unknownsの隔たり

僕はお昼休み英会話してるか、どっかで一人でご飯しながら本を読んでるか、チームメンバーとご飯食べてるんだけど、最近は詳解システム・パフォーマンスを読んでいる。

その中でknown unknownという概念が紹介されている。それは、システムチューニングの局面においてknown-known,known-unknown,unknown-unknownという分類で説明されている。

known-knownは知っていることを知っていること、例えばtopコマンドでプロセスごとのCPUの使用率を見れることを知っているし、見たことがある。

known-unknownは知らないことを知っていること。topコマンドを知っているけど、使ったことはない(観測してない)

unknown-unknownは知らないことを知らないこと。これはtopコマンドを知らないこと。

この中でunknown-unknown状態でシステムパフォーマンスやトラブルシューティングに取り組む場合、見当違いな結論にもなるだろうし、またはとても非効率な状態で取り組むことになるだろう。これを少しでもknown-unknownにするためにはひたすら本を読むとか、識者に教えてもらうとか、インターネットで調べるとかそういう手段になると思うのだけど、unknown-unknownの場合、個々人の経験でいうとインターネットの検索で補われることはあまりないように思う。なぜならそもそも知らないことを知らないので能動的な検索が的外れな検索になってしまうことが多いからだと考える。

一方で識者が少しでも周囲をknown-unknownにしてあげられたらそれはそれで生産性が上がるわけだから、そういった活動をやっていかねばなぁと思った。

known-unknownについては昔deeeeeeeeeeeeeeeeetくんもブログに書いていて、そちらのほうが定義は正確だと思うので気になる人は読んでみてください。