「エンジニアの学び方─効率的に知識を得て,成果に結び付ける」まとめ
記事の要約・引用。一部自分の言葉で若干表現を変えたかも。
1. 効率的に学ぶには
知識には3つの軸がある
- 「広い視野」軸
- 学ぶべき対象を見つける。勉強会・ブログ記事・ニュース記事。
- 「深い理解」軸
- 学びの効率化と応用のために必要
- 「応用対象」軸
- 自分の理解を応用して成果を出すために必要。
学びには3つのフェーズがある
- 「知識収集」フェーズ
- 情報収集
- 「抽象化」フェーズ
- 知識からモデルを作る
- 「応用」フェーズ
- 成功すると、正しく理解できているという自信が生まれる
やる気不足
- やる気と成果は鶏と卵の関係。何かをやって成果を出すことで、次のやる気につながる。
- 最初の一歩を踏み出す事が重要。
2. 最初の一歩をどう踏み出すか
- やる気がでない場合、「勉強」を漠然とした大きなタスクとしてとらえていて、その大きさに圧倒されていることがよくある。
- 近いゴールを設定し、そこまで走ることを目標にすることが必要。
必要なところから学ぶ
前提条件
- 目標が明確化されている
- 達成したかどうかを判断できることが必要
- 目標が実現可能である
- 「たどり着けそう」であることが必要
- 大まかに全体像を把握している
大まかに全体像をつかむ
- 論文を最初から読んでも全然頭に入らない時、印刷し、25分間で章見出しとキーワードを赤ペンで囲う作業をした。
- 論文を理解するというあいまいな目標の代わりに、時間を区切って明確なゴールを作り、大まかな構造を頭に入れようとした。
片っ端から写経する
時間を区切ろう
- 本1冊を丸ごと写経するとどれくらいの時間がかかるでしょう。ゴールが見えないのでは、やる気がなくなります。そこで、時間を区切りましょう。たとえば「今から25分でできるとこまで写経するぞ」と目標を設定するのです。
- 25分やってみると、やる前よりもいろいろなことがわかるようになります。「知りたいこと」が生まれているかもしれません。全体像がなんとなくわかったかもしれません。
- もし何も得られた感じがしないのであれば、その本はあなたのニーズやレベルに合っていません。
3. どうやって深く理解するか
自分の知識が浅い気がする原因
- 「深い理解」方向の知識が足りない
- 「抽象化のフェーズ」に慣れていない
- 「情報収集」だけでは成果は出せません。得た知識を自分の中で「抽象化」してモデルにし、自分の問題に応用して、はじめて成果が出ます。
なぜ抽象化が必要?
- 抽象化によって応用範囲が広がります。抽象化は一般化・汎用化なのです。
どうやって抽象化するか
比較から学ぶ
- 同じ目的についての異なる著者の本を数冊、比較しながら読む。
歴史から学ぶ
抽象から学ぶ
- 応用できる知識かどうかのチェックポイント
- 自分の言葉で説明できるか?
- 自分の経験に基づいた具体例を挙げることができるか?
- 自分の目的を達成するためにその知識を使えるか?
作って学ぶ
試してみて結果が期待どおりかを検証する
- 本で読んだり勉強会で「なるほど、わかった」と思ったとします。
- 「わかった」は「仮説」であり、「検証」が必要です。
- 検証のためには、自分の理解をもとに行動をして、その結果が自分の期待どおりであるかをチェックする必要があります。
モデルが修正されるサイクル
作るものを高度にしすぎない
- 遠すぎる目標を立てない
- 作るものはプログラムとは限らず、「まだ知らない人、1日前の自分に説明するとしたら、どう説明するか?」を考えてブログ記事を書くのも「作る」です。
プログラミングは検証がしやすい
- 他人の手を借りずに検証のサイクルを回せる
- もしミュージシャンだったら、曲を作って演奏し、反響を見るまでにどれくらいの時間がかかることでしょう。
- プログラマは理解を深めるうえでとても恵まれた環境にいるわけです。これを活かさないのはもったいないことです。
3のまとめ
- モデルは正しくなくても、ないよりはマシ。
- モデルがあれば、答えを知らない問題に対しても自分なりの答えを出すことができるようになります。