オライリーの「スタッフエンジニアへの道」という本を読んだ。ちょっと前から聞くようになったスタッフエンジニアについて書かれた本である。本の内容は大変面白いと思うが、本の1章と2章の内容が全く持ってピンとこなかった。章の内容自体はスタッフエンジニアの役割とやることに関して「地図」のメタファーを用いて説明するものだった。
これは決して本が悪いというわけではなく、私が本を読めるほどの知識と経験が不足していたから、という側面が強いように感じた。正直、本というのは開かれた知識で、読んだらそれ相応のリターンを得られるような感覚はあった。確かにハイレベルの哲学の本も、ハイレベルな数学の本も、確かに理解できることはなかった。こういったものは具体的な知識が無いからだと思っていたのだが、どうやら抽象的なメタファーの世界でも・概念の世界でも同じことが言えるようだ。
今回はそんな経験から「本を読む行為」に関して自己分析をすることが出来た。本を読む行為として私が行っていることと、そこから導かれた3つの目的を残しておく。ただの自己分析であり、万人に当てはまるものではない。
ここで言う「本」というのは小説のようなフィクションは基本対象外である。というか、昔は読んでいたが最近はいまいち読んでいない。星新一だけは今でも定期的に振り返って読んでるけど、なんとなくマーフィーの法則っぽい感じが好みだったりする。ただ、「プロジェクト・ヘイル・メアリー」は最高に面白かった。
本を読む行為
本の虫というほど本は読んでいないが、週1は最低、最近は週2程度で読んでいる。年間100冊程度が増えるほど家に本棚がないため、本のタワーが崩れるかが心配である(というか何回か崩れているんだが)。Webシステムを作っているITエンジニアということもあり、オライリーに代表されるような技術書(技術書の中だと雑食気味だ)や、脳科学の本が好きだったりするのでそういった本も多い。ビジネス書や自己啓発っぽい本や哲学書や歴史書も稀に読む。
「自分の成長のために読んでいる」という感覚はいまいちなかったりする、ように自覚している。技術書であれば趣味の範疇であり、ビジネス書であれば転職したあとのSaaS企業がThe SaaS企業、Theベンチャーであるため、そういった知識がなかったから読み始めたら面白かったので読み始めた(これも趣味の範囲かも)である。結局は知識の収集がシンプルに楽しいという感覚が強い。収集するだけしてあとから役立つこと・あとから点と点が紐づくことに快感があるため、全く今のベクトルの方向にない本はあんまり読まない傾向はある(例えば魚図鑑とか。でもこういうのもたまに読むと面白いんだよな)。
ただ趣味とはいえど、本を読むのには目的が合った。シンプルで新しい知識をつけるためだった。
高専4年生のときに読んだ「メタプログラミングRuby」は間違いなく私の人生を変えた一冊なんだが、私が買った技術書の中で、確か最初の3冊の中のどれかであった。授業ではほぼC言語を触っていて、ちょっとJavaでOOPをRubyとSinatraでWebプログラムを書くぐらいしかしなかった私にとって全く知らない世界がそこには広がっていて、すごくワクワクしたのを未だに覚えている。
当時は別にバイトをしていたわけでもなく技術書を買う余裕はなかったが、それでも学生の間に15冊ぐらいは買ったし、図書館でも古い本を読んだ気がする(The Art of Computer Programmingは難解だった記憶がある)。
その時に読んだ「ウェットウェア・リファクタリング」という私の人生に影響を与えた一冊に出会い、新しい世界を広げることに感動し、以降も本を読む習慣が生まれた。
このモチベーションだと新しい知識がない本に対する価値は相対的に下がっていく。正直結構そういう気質を最近まで持っていた。が、そういう視点だけでは無いなということに気づいた(ので、思うがままに書いている)。
本を読む3つの目的
別に本を読む目的は無限にあると思っているが、その中でも「あえて本をカテゴリ化するなら」みたいな視点で、現在は3つの視点があるなと思った。
新しい知識を得る、そして内省し自分の「抽象」に落とし込める
上記には「新しい知識を得るため」と記載した。しかしながら新しい知識を得られるタイプの本を読んでいるとふと全く違うことを考えている自分がいたりする時がある。全く違うとはいえど、本を読みながら勝手に自分の世界に持っていったりする感覚だ。
例えば一時期意図的にマネジメントの本を大量に買い込んだ時がある。マネージャーが変わったり、自分が先頭に立ってなにかプロジェクトをやるという経験が増えたためだ。技術職向けのマネジメント本というのも多くあるが、いずれにせよかなり抽象的に書かれていたりメタファーが多分に含まれているケースが多い。人との会話は個別事例ごとに全然違うため、一定全体を表すためには抽象的にならざるを得ない。
そうなると私は勝手に想像の世界に飛び移る。自分の想像の中でその抽象的な話を自分の例に落とし込み具体例として解釈するのだ。すごく客観的に面白いなと思うのが、これは私の意識外で行われている。つまり自分としては本を読み進めたいんだが、いつの間にか想像にふけっている自分がいる。「理解するために自分の状況に落とし込んでみよう」なんて思ったことは一度もないので(私の理性としては本は普通に読み進めたい)。一般的な感覚なのかはわからないが、個人的にはかなりこれが役に立っていると感じる。私はこれをシンプルに知識の内省と呼んでいる。夜なんだが、自らが経験したこと・判断したことを振り返るときは経験の内省と呼んで、呼び分けていたりしている。
この知識の内省を通すことであ、その知識を自分の中で抽象に落とし込むことができる。1を聞いて10を知るということでもあるが、どちらかというとシンプルに「知識が身についた」という感じ。
ただ、1冊を読んだだけだと「その本の知識を得た」という感じになる。三角測量ではないが、似た系統の本を2冊、3冊と読むことで「そのあたりの周辺知識を」完全に自分のものにできる感覚もある。
内省できるだけの知識がないと、それができない
幸い技術的な本では3冊も読めば良かったりするのだが、様々な解釈が存在する歴史書、あまりにも抽象的な哲学書などはそうはいかない。歴史書に関しては何を内省するんだという話ではあるんだが、私の無意識は優秀なのか、案外勝手に何かを知識の内省をしているっぽい。夢を見ている感覚らしくあまり記憶に残っていない(が、何か記憶にはしっかりインデックスされるらしく、必要なタイミングでパッと出てきてくれる)。
ただいずれにせよ背景知識が必要なハイコンテキストで、そして私の知識がないような物に関しては文章を読んでいても全く頭に入らない感じがする。冒頭で書いたピンとこなかった話も同様で、その本の2章を読んでいるときは一切無意識下で知識の内省をすることがなかった。というか、もはやアラビア語を読んでいるかのように(私はアラビア語は全くわからない、一応)目が滑る感覚があった。 これは一般的な感覚かなと思う。シンプルに分からなさすぎて頭がバグっているような感覚だ。
これも冒頭に書いたように知識がないとそういったことが出来ない。逆に言うと知識をつけるとスラスラと読めるようになる。
具体例として今でも強く感じているのが、 テトリスを1時間強で作ってみた という伝説的な動画を思い出す。動画タイトル通りでC言語でテトリスを書くのだが、これを最初に見たのが中学3年生のときだった。その時は当然意味不明だったんだが、高専2年のときに動画を思い出して、今なら分かるんじゃないかと思って眺めると、後半の一部が分かるようになった。更にそこから1年後に見ると、後半はだいぶ分かるようになった。今見るとWin32APIも多少なら知識はあるので、全体的に分かるようになった気がする(ライセンス10個の部分は未だに意味はわからない)。
これは具体的な知識を身に着けたからシンプルに分かるようになった例だが、「あとから読み返してみると分かる」というのは経験則的にある。そうとういい本じゃないとあとから読み返すことはないんだが、あまりにも難しかったと感じたときは今の知識ではわからないから後で読もう、別の基礎の本を読んでからにしようということを考える夜になった。
知識の内省の結果を確認する
「「何回説明しても伝わらない」はなぜ起こるのか? 認知科学が教えるコミュニケーションの本質と解決策」という本や「プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則」という本は個人的には今まで見聞きした知識が詰まっている本だった。もちろん一部は知らなかったりもしたし、この本を読んでこの辺の知識を身にけた人もいるだろう。
これはあくまで本を読むタイミングの話ではあるのだが、今まで得た知識がまとまっている本を読むこともある。少し前までは、まぁ知っているなぁと流していたのだが、最近はこういった本も重要だと感じた。知識の内省の結果を確認できるからだ。
知識の内省の結果を確認するためには、一定「体系立てられた本」であることが重要だったりする。前者であればタイトルからはあまりそういった雰囲気は感じられないが、認知科学に関して様々な情報がまとめられ、それらが「何故何回説明しても伝わらないのか」という1つの現象に対して複数の視点で解説しているような本である。後者は名前のとおり様々なプログラミングの法則をまとめた本だが、単にまとめたわけはなくカテゴリなどに分けて整理した本である。
複数の知識をまとめた本というのは新しい知識も細切れに収集できるだけではなく、9割知っていて1割知らないみたいな状態で、その1割を補完できる本でもある。そして、様々な情報がまとまっているからこそ、自分自身の獲得した抽象概念と本を比較でき、より高度な抽象概念の獲得に繋がる。
あとから振り返るため
これは「知識の内省の結果を確認する」と同様の性質ではあるのだが、体系立てられた素敵な本というのは「あとから振り返る」ことができる。「忘れたときに読む」という観点もあるが、どちらかと言うと「3年後また読みたい本」という感じだ。
振り返るため本として適切なのは体系立てられた本もそうだし、抽象度が高い、または本質的なことが書かれたような本が良いと思う。例えばリーダブルコードは(私は別に定期的に読んでいるわけではないが)本質的なことが書かれていて、CODE COMPLETEもめちゃめちゃ昔の本なのに今読んでも新たな知見を与えてくれる気がする、高いけど。
ここまで書いて思ったが、振り返ることができる本というのは、それは初めて読んだら「新しい知識を得て知識の内省ができる本」であり、2回目は「知識の内省の結果を確認できる本」でもある。良い本は何度も読めるというのはこういうことなのかもしれない。
まとめ
今まではとりあえずなにか調べたりしたことをブログにまとめたが、今回は完全に自分の中にある概念を文章にしてみた。なので、あまりここから得られる情報はない。