こんにちは、Mochiです。
🤔 プログラミングって結局どんなふうに学ぶのが1番効率がいいんだろう?
🤔 周りよりも効率的にプログラミングを学んで、圧倒的に成長できたらいいのにな...。
そんな方に向けて、この記事ではこれまで私が試行錯誤の上に見つけた、効率的なプログラミングの学び方をお伝えします。
私はこの学び方を通して、プログラミング初心者からWebアプリケーションを作って表彰されるレベルにまで成長することができました。きっとみなさんもこれまでと比べて効率的にプログラミングを学ぶことができ、より成長できるようになります。
では早速、効率的に学ぶコツを見ていきましょう。
効率的に学ぶコツはアウトプットと理解度にある
まず、効率的に学ぶとは何でしょう?私は「より少ない時間で、より深い理解度の、使える知識を得ること」だと考えています。
時間がかかってしまえば、それは効率的とは言えません。そのため、効率的であるためには少ない時間が求められます。
また学んだ成果として、理解度が重要です。理解度には次のようなレベルがあり、レベル3のいつでも使える理解度を得ている状態が理想的な「学べた状態」だと考えています。
- 何となくわかっているが、説明するのは難しい
- 説明はできるが咄嗟に知識として使うのが難しい
- いつでも引き出してすぐに使える
このような「効率的な学び」のためには、アウトプットをする必要があります。
理由は、インプットでは理解度を高めるのに限界があるためです。インプットはいわば理解度を0から50%等にする行動ですが、さらに理解度を90%近くに上げるためにはアウトプットが有効です。(完璧な100%は基本的に到達できない領域だと考えています)
アウトプットは理解度を高めるだけでなく、記憶をより長く保持するのにも効果的です。人は思い出すタイミングで記憶を強固にするためです。
では、「効率的な学び」の前提を踏まえて、私がこれまでに失敗してきた学び方と効率的な学び方をお伝えします。
失敗した学び方
まずは私がこれまでに行って、失敗したと感じている学び方をお伝えします。
インプットだけで、コードを書かない
私はとにかく書籍や動画でインプットして理解し、コードは書かずに次の章やセクションに進むという方法を取っていた時期がありました。
この方法は速く書籍や動画を進めたい一心でやってしまっていたのですが、長期的に見ると効率的な方法ではありませんでした。
なぜならインプットしただけだと理解したつもりになってしまうからです。確かに速く進められるのですが、理解度も記憶も曖昧なまま進むので、最終的に使える状態の知識は少ないです。
使える知識にするためには「インプットしたら、試しにコードを書く」ようなアウトプットが必要でした。効率的に学ぶために速く進めたい焦りがありますが、高い理解度を得るのには、そのための時間が必要なのです。
理解をせずに、とにかくコードを書く
次によくやってしまった方法が、とにかく書籍や動画に書かれているコードを書くという方法です。
ここではコードの意味や構造を理解せずに、とにかく文字を覚えて目の前に移すという行動をとってしまっていました。
理解せずに写した場合、ほとんど得るものはないと考えています。ただの文字写しマシーンになってしまっていて、アウトプットの質が低いからです。
「このコードは何をしているんだろう」「なぜここに書くんだろう」と考えながら、理解を深めるために書くことが必要でした。
より効率的に学ぶアウトプットドリブン学習法
これらの失敗を改善し、より効率的に学ぶために私が行っている「アウトプットドリブン学習法」を紹介します。
この学習法は次の順番で行います。
- インプット
- 概念は自分自身に説明する
- コードは自分の頭で考えて書く
- 自分用のドキュメントでさらにアウトプットする
それぞれの過程を説明していきます。
1 - まずはインプットから
いきなりアウトプットをすることはできないため、まずはインプットから始まります。
書籍を読んだり、動画を見たりして理解しながら知識を頭に入れていきましょう。おすすめのプログラミングの本を知りたい方は、こちらを参考にしてみてください。
🫱 初心者におすすめのプログラミング勉強本10選|最適本が見つかる!
この時のコツは、知らない言葉は調べることです。1つわからない専門用語や単語があると後々の理解に響く可能性があります。そのため、Web検索やAIを使って調べましょう。
2 - 概念は自分自身に説明する
本の節など一定区間のインプットを終えたら、早速アウトプットをしていきましょう。
プログラミング関連のインプットには次の2種類があると考えています。
- 概念
- コード
「概念」は継承やオブジェクト指向のような、考え方のことを指しています。このような概念はコードを書くのが難しいこともあるので、自分自身に説明するアウトプットがおすすめです。短い時間で効果的に理解度を深められます。
例えば、オブジェクト指向について本で読んだ場合は、自分の言葉で「オブジェクト指向とは何?」という問いに対して説明をしてみましょう。
うまく説明できない部分は自分が理解できていない部分です。本などを読み返して、理解度を深めたら、スムーズに説明できるようになるまで繰り返し自分に説明してみましょう。
3 - コードは自分の頭で考えて書く
次にインプットしたメソッドやプロパティ(フィールド)など、実際にプログラミングで書かれている知識である「コード」についてアウトプットします。コードは自分の頭で意味や動き、使い方を考えながら実際に書いていきましょう。
本や動画を見ながら写していくとついつい何も考えずに写してしまいます。そのため、コードを書く際には本や動画を一時的に閉じて、思い返しながら書いてみるのがおすすめです。
さらに「こう書いたらどうなるんだろう?」という自分なりの考えや興味を持って、サンプルコードに書かれていない内容を書いてみるのも理解度が深まるためおすすめです。
コードを書くのは時間がかかりますが、コストパフォーマンス(時間に対する理解度の向上)は抜群です。長期的に考えると絶対にやっておきたいことです。
4 - 自分用のドキュメントでさらにアウトプットする
コードを書くことまでが最低限やってほしいことですが、さらに理解度を高めるために私は「自分用のドキュメント」を作成しています。
このドキュメントには主にクラス、プロパティ、メソッド、利用例を書きます。これにより知識の整理と理解度の向上ができます。
例えば、JavaのFileReaderオブジェクトについて次の画像のように書いています。
理解度を上げるだけではなく、このドキュメントを見返すだけで使い方がすぐに思い出せる利点もあるので、おすすめです。
まとめ
この記事ではこれまで私が試行錯誤の上に見つけた、効率的なプログラミングの学び方をお伝えしました。みなさんのより良い学びに少しでも役立っていたら嬉しいです。
効率的にプログラミングを学んだ上で、稼げるエンジニアになりたいという方には次の記事を読むのがおすすめです。ぜひ参考にしてみてください。
🫱 ゼロからプログラミングで稼げるようになるまでのロードマップ
プログラミングの学び方だけでなく、エンジニアとしての思考法を身につけたいと考えている方には次の本がおすすめです。
🫱 世界一流エンジニアの思考法