未知の物事に向き合い知識を身に着けるには

システムを運用するということは常に未知の領域に踏み込んで行く事となる。昨日までの常識が今日通じるとも限らないし、全く知らなった事がある日突然常識となる。進化の早いIT業界でどのように知識を得て、長く活用していくか、向き合い方でその後の理解度が大きく変わってくる。

IT業界は知らない事に直面する事が多い。インターネットで検索すればほぼ解決策が見つかるが、情報の取捨選択は全て自己責任。上位に来たサイトに載っているサンプルを使って要求が満たされれば、それ以上深堀りする事もなく、次の疑問に移っていく。

そんな仕事の進め方をしていたある日、ふと気が付く。同じ問題をまた同じ所で調べている、知識が全く定着していない、と。どうすれば知識が定着するのか、答えは常にアップデートされるが今時点では、正しい情報を探す・調査過程を記録する、この2つに集約された。

正しい情報を探そうと意識し始めると、自然と問題点に関連する様々な情報を目にするようになり、問題が解決されたとしても探索が終わらなくなる。例えば次のような疑問が当たり前に出てくる。

このパラメータを変更すれば、事象が解消される事はわかった。じゃあこのパラメータは一体何を設定しているのか。ソフトウェアにどのように作用しているのか。より良くできそうなパラメータが他にもあるが試せるだろうか。

こういった深堀りをして、そこで得られた知識や思考の過程を記録に残すことで、知識が定着し始めたと実感した。アウトプットが増えた事も定着に寄与したと思う。そういう事を数年続けると、それ自体がデータベースとして活用出来るようになる。いいことづくめだ。

詳解システムパフォーマンスと言う本にKnown-Unknownsと言う言葉がでてくる。自分が行きついた調査方法はまさにこれだった。

この本は、OSが返すCPUやメモリの値が何を意味しているのか、どう読み取ればいいのかを、わかりやすく詳細に記した良本。該当箇所を引用する。

Known-Knowns:知っていることである。パフォーマンス指標をチェックしなければならないことを知っていて、現在の値も知っている場合だ。たとえば、CPUの使用率をチェックしなければならないことがわかっていて、その値が平均10%だとわかっているときがこれに当たる。
Known-Unknowns:知らないことがわかってることである。指標をチェックできることとサブシステムが存在することはわかっているが、まだみていないときだ。たとえば、プロファイリングすればCPUがビジー状態になっている原因をチェックできることがわかっているのに、まだしていない場合がこれに当たる。
Unknown-Unknowns:知らないことを知らないことである。たとえば、デバイスからの割り込みがCPUを大きく消費することを知らないため、デバイス割り込みをチェックしていない場合がこれに当たる。
パフォーマンスは、「多く知れば知るほど、知らないことが増える」分野である。「システムについて知れば知るほど、Unknown-Unknownの存在に気づき、それらはチェックできるKnown-Unknownになる」というのも、同じ原則だ。

独自の解釈を入れると、Known-Knownsは、分かったつもりになってそれ以上詳細を調べずに終わる事も含む。時間的な制約や興味の有無などあるが、知見を得る良い機会を放棄する事になり、もったいない。

Unknwon-Unknownsは、分からない事を分からないまま放置する事も含む。これを当たり前にしてしまうと、調査をする思考がとても浅くなってしまうので、何か道筋を見つけるまで頑張るか、わかる人に自分が納得出来るまでちゃんと聞くべきである。

Known-Unknownsは引用の最後が全てを物語っているが、ただ問題解決するだけではなく、その問題を引き起こした要因は何か、どうすればそれが起こらなくなるか、と言った関連技術の情報収集を自発的に行うようになるため、問題解決の質が格段に上がる。

時間は有限、たかが1つの問題と手を抜かず、そこから1つでも自分の知らない情報を集め残す事を意識し仕事の質を上げ、今後の主役となるITの世界で生き抜く力を身に着けていきたい。

この記事が気に入ったらサポートをしてみませんか?