無気力生活 (ノ ´ω`)ノ ~゜

脱力系エンジニア。てきとーに生きてます。

エンジニアの知的生産術を読んで-1章「新しいことを学ぶには」

この本を出勤時間にちまちま読み進めて、はや1月半に差し掛かろうとしております。このタイミングでようやく一章..._(:3 」∠)_
章ごとにバラバラに読むことを試してみましたが、あんまり理解が進んでる感がないですねぇ(´・ω・`)もし次に同じように細かく読書ログ記録するときは普通の方法に戻そうかと思ってます。

「新しいことを学ぶ」

人間生きていくため、どうしても避けきれないのが、新たな知識を身につけることです。何も仕事や学習だけでなく、現代社会に生きている我々、社会の変化や新たなテクノロジーとの向き合いでも、新たな知識を得なければなりません。

本章では、その新しい知識をしかも効率的に学ぶための知識が詰まった章でした。普段我々が無意識にやっていることも書かれてはいましたが、その言語化を怠ってきた私としては多くの気付きがありました(`・ω・´)

前置きこのくらいにして、早速この章の学びについて書きます。

この本の読書メモ一覧

この章での学び

細かいとこから攻めるのではなく、まず全体を俯瞰するべし

新しい知識を学ぶということはつまり、白紙の地図を辿ることに似ています。どこに何があるのか?何を調べるべきが何もわからない状態。この時点で細かい情報に当たっても自らの知りたいことに到達するにはかなり時間が必要となりそうです。

本書では、まず全体をざっくり理解して詳細にブレークダウンしていくこと推奨しています。知識そのものではなく、知識のインデックスを作る。

人は、それほど多くのものを覚えておくことはできません。我々が、それこそ10代の頃に学んだ知識、どれくらい覚えているでしょうか?正直、私はほとんど理解していませんが、当時使った教科書なり参考書を見れば、だいたいどのくらいに書かれているかは思い出せるような気がします。

まずは全体をざっくり理解し、内容を俯瞰できるところから始める。そして本当にその知識が必要になったら、そこから細かく読み込む方法が効率的であると書かれています。

これ日頃コード読んでる方は割とやっていることかと思います。クラス名を見て、メソッド名を見て、そして内部の実装を読む。大枠から段階的にブレークダウンすることによって素早く実装を理解して仕事する。それにとても良く似ていると感じました。

知識のサイクル化

仮に、なにか新しいことを学ぶとして、どのような方法を取るでしょうか?

本書では、知識を得るサイクルを以下として定義されています。

  • 情報収集
  • 抽象化・モデル化
  • 実践・検証

全く知らない分野の知識であれば、まず先人の知恵を借りるところから始まるかと思います。 本やインターネットですね(`・ω・´)ここが情報収集。ただし、この段階で生きた知識となっていることは稀です。ただ本を読んだだけで自身の知識に置き換えてないからです。

ここから、読んだ結果生まれた思考を自らの体験と比較し落とし込む。これが抽象化です。 抽象化とは、似た部分以外の差を理解することだと、私は理解しています。

これは、プログラミング言語の理解の仕方に似ていますね。新しいプログラミング言語を学ぶとき、自分の得意な言語と比較してどうか?をよくやると思います。共通しているところはこれまでの延長上で理解できる知識。共通でない差がある部分はその言語独自の知識。 このように切り分けると、自らがその時持ち合わせてる知識と紐付き、理解がグッと進みます。こうして理解した知識は、他の似たような分野でも応用がきくようになります。

さて、ここで応用がききそうな知識が生まれました。ここで組み立てた知識を実践して検証することで、その知識が正しく有用であると判断できます。こうして得た知識を土台にどんどん新たな知識を積み上げていく。試行錯誤を繰り返してこのサイクルを回すことで、どんなに新しい知識であっても理解していくことができるそうです(`・ω・´)

雑な例えをすると、ググったコードの書き方はすぐ忘れるが、失敗を繰り返してようやく達成できた記憶は長く覚えている。といったところでしょうか?

この章を読んで感じたこと

他章と比べても特にページ数の多い章だったと感じてます。それだけ著者の方が話されたい内容が詰まった超重要章だったのではないでしょうかね。私が読んだだけでは拾い切れないことが多く、これ完全に理解するにはもう少し時間がかかりそうかと感じてます(´・ω・`)

さて、残り5章、6章ですね。今の私に必要なものは5章、「考えをまとめるには」を読んでいきたいと思います。残り2章、今月中に読みきれるか( ˘•ω•˘ )