概要
SOFT SKILLS ソフトウェア開発者の人生マニュアルに記載されていた、効率的な学習方法がとても良かったので具体的な手順をまとめます。
この方法で学習するようにしてから、学習効率は数倍良くなりました。
前提
私達はみな、実際にやってみて、さらに教えるとよく学べるように作られている。
独学のときに重点を置くべきことは、できる限り早く実際に試せるポイントに到達して、行動を起こすこと。
学びたいテーマの本を最初から最後まで読んでから、実際に学んだことを試そうとすると、学習のペースが非常に遅くなり、本の前半を読み直す必要が出ることが多い。
そもそも、本に書かれていることの多くは、実際の学習よりもリファレンスに適しており、本当に必要な情報は20%程度(技術書を最初から最後まで読み、実際に使うのはその本で取り上げられていたテクノロジーのごく一部であることはどれだけあっただろう)。
TL;DR
テクノロジーを身につけるために知らなければならないことは以下3つ。
- どうすれば始められるか: 学び始めるための基礎的な知識はなにか
- テーマの幅: 学ぼうとしているものの規模はどれくらいで、なにができるのか。最初から細部を子細に知っている必要はないが、自分に何ができ、この技術で何が可能化の概要が分かれば、細部は後からでも知ることができる。
- 基礎: 使い始めた後、基本的なユースケースはなにか、その技術を使うために知っていなければならない最も基礎的ないことはなにか。私が学べるのは 20%だが、その20%で日常の用途の80%をカバーするためには、どの20%を学べばよいのか。
この3つだけがわかっていれば、予めすべてのことを知らなくてもテクノロジーを効果的に利用できる。
私が知らなければならない他のことは、進みながら学べる。
以下で、これらを学ぶ具体的な方法を、10のステップで記す。
ステップ1-6: 事前調査
概要
ステップ1-6は調査のためのステップで、一度だけ行えばいい。
ここでは、何を学ぼうとしているかと、どのようにして学習の成功を判断するかをはっきりさせるために、予備的な調査を行う。
また、目標達成のために最も役立つ参考資料を選び、目標に到達するまでのプランを書き出す。
これら6ステップを行う間に、実際にテーマについて学習するために必要な準備作業をすべてこなす。
ステップ1: 全体像を掴む
何かについて学び始めた最初のときは、何を学ばなければならないかを本当に理解するために必要なことすら知らない。
この「未知の未知」を後回しにして学習を進めてしまうと、情報の強弱の判断がつかないため本のすべてをすみまで読む必要がでてしまって、かなり時間がかかってしまう。
そのために、テーマについて全体像を理解しておく必要がある。
学びたいテーマの本を持っているときは、イントロダクションを読むといい。
ない場合は、ざっくり調べてみればいい(ChatGPTに聞くので十分かもしれない)。
ここでの目標は、テーマについて学ぶことではなく、どういうものかや規模感をわかることであるため、あまり時間をかけずにざっと終わらせる。
ステップ2: スコープを決める
膨大な選択肢の中から、実際に学びたいことをはっきりさせるために、焦点を絞り込んでいく。
例)
元のテーマ | 適切なスコープ |
---|---|
C#を学ぶ | 簡単なコンソールアプリケーションを作るために必要なC#言語の基礎を学ぶ |
このステップでは、適切なスコープを区切ったテーマを学ぶ理由も考えていることに注意する。
理由を示すとスコープを定義しやすくなるためである。
スコープはできるだけ焦点を絞り込んだものにする。
スコープを広げたくなる誘惑に負けないように。
他のサブテーマについて学びたいときはまた別の学習プランで学べば良い。
ステップ3: 成功の基準を決める
目標達成の確認のために、成功基準を決める。
注意点として、成功基準は定量的or定性的に評価できるものでなければならない。
例)
悪い成功基準 | いい成功基準 |
---|---|
C#の基礎が身についている | C#で主要な言語機能をすべて利用している小さなアプリケーションをかけるようになる |
HTMLを使ってウェブページを構築する方法を知っている | HTML5を使って、インターネット上に自分の経歴書と仕事の例を表示するホームページを作れるようになる |
ステップ4: 参考資料を見つける
あるテーマについて、多くの異なる参考資料を集めて学習に役立てる。
選択したテーマについて学べる参考資料をできる限り多く見つける。
この時点でクオリティは考えなくていい。
後のステップでフィルターにかけて最良のものを選ぶ。
基本的な情報源は以下の通り。
- Web
- 参考書(おすすめの参考書をWebやYouTube、Amazon、ChatGPTで調べる)
- YouTube
- オンライン学習サイト(Udemy, Coursera etc...)
- 先人に聞く
ステップ5: 学習プランを作る
ステップ4で選んだ参考資料の目次をざっと読むなどして、学習プランを作るためのインプットをする。
多くの本は、私の目標達成のために私が覚えなければならないことよりも多くのものを扱っているため、この工程を行う。
ステップ6: リソースをフィルターにかける
ステップ4で集めたすべての参考資料を対象として、私の学習プランに最も役に立ちそうな内容を持つものを拾い出す。
ステップ7-10: 学習
概要
ステップ7-10までは、学習プランの中に作った個々のモジュールごとに繰り返す。
ステップ7-10の目標は、「学習→実践→学習→教え」(LDLT)方式を使って学習内容を身に着けていくこと。
まず、学ぶ対象を使い始められるようにする方法を学ぶ。
次に、その対象で遊んでみて、自然な発見からえられた疑問を集める。
そして、役に立つことができるところまで対象について学ぶ。
最後に、学んだことの中に含まれる隙間を埋め、深い理解を通じて頭の中に学習内容を定着させるために、学んできたことを人に教える。
ステップ7: 使い始められるようにする方法を学ぶ
ほとんどの人が犯す学習方法についてのよくある過ちが2つある。
- 行動に移すのが早すぎて、何も知らずに対象の中に飛び込んでしまう。
- 対象の中に飛び込む前に準備しすぎてしまうと言う問題で、これは行動するのに映るのが遅すぎる。
夢中になって、そのモジュールのために用意したすべての参考資料を読んだり見たりしてしまいがちだが、最も大きな成功がえられるのは、その誘惑を断ち切ったときである。
とにかく始めるために、次のステップにおいて自力で実験できるようにするために必要な最小限のことだけを学ぶことに集中する。
教材を流し読みしたり、章のまとめやイントロダクションを読んだりするのである。
ステップ8: 遊び回り、その中で生まれた疑問を書き出す
表題の通りのことをする。
実践し、探って学んでいく。結果を気にする必要はない。単純に探っていけばいい。
そうやって遊んでいるうちに、脳は自然と疑問を生み出していく。
これらの疑問によって、本当に重要なことが何かを理解することができる。
疑問に思ったけれども答えが見つからないことを書き出していく。
ステップ9: 役に立つことができるところまで学ぶ
ステップ8で、十分に遊んで、おそらく自力では答えが見つからない疑問がうまれてきたはず。
そのような疑問に対して、集めてきたすべての参考資料を動員して、モジュールのことを深く学ぶ。
疑問に対する答えが見つかったり、テーマについて新しいことを学んだときには、躊躇せずに後ろに戻って更に少し遊んで見る。
しかし、集めた参考資料を完全に読んだり見たりする必要はない。
今すぐ学びたいことに関連する部分だけ読み、見ればいい。
ステップ10: 教える
ブログやQiitaに記事をあげるのが一番手っ取り早いと思う。
このプロセスを進めると、自分では理解しているつもりでいながら、そうではなかったことが見つかる。
このステップは省略したくなるだろうが、絶対に省略してはならない。
将来内容を忘れたときに、思い出すときに戻ってくるときにも役立つ。