人々はソフトウェア エンジニアになり続けます。コンピューター サイエンスの新卒者もいます。新しい挑戦やより高い報酬を求めて、他の業界から来る人もいます。
学ぶことを決して止められないことを、すべての人が学ぶようになります。いつの日か、あなたの会社のコードベースの新しい領域がどのように機能するかが問題になるでしょう。別の日には、チームが採用したばかりの新しいライブラリまたはフレームワークになります。
「新しい X をどのように学習すればよいか」という質問 (X はこれらの 1 つです) には、多くの答えがあります。 「X で何かを構築する」は、私が目にする最も一般的なものです。それは悪いことではありませんが、最適化のコツではないにしても、エンジニアを団結させるものは何でしょうか?
ソフトウェア エンジニアになる前は、学習について勉強していました。私はそれに関するコースを受講し、本や論文を読み、それを日課として実現しました。先日、就職の面接で新しいライブラリに慣れるために、その知識を何百万回も使用していることに気付きました。
私は確かにそれを実際に体験しましたが、有意義な方法で「何かを構築する」ことによってではありませんでした.私がやったことの背後にある原則は、他の人がその分野に参入する (またはすでにその分野に参入している) 人が知りたいと思うかもしれないものであることに気づきました。
学習に関する文献から飛び出す 4 つのテーマは次のとおりです。
それぞれについて説明すると、「何かを構築する」ことが、それを関与させるための完全に優れた方法であることがわかります。また、根底にあるアイデアが、より的を絞った一口サイズの方法でどのように使用できるか (そして実際に使用されているか)、またはより多くの学習を行う方法で建物をどのように方向付けることができるかについても説明します。
これを最初に挙げたのには理由があります。これは大きなものです。文献では「能動的想起」または「生成」とも呼ばれる検索は、ここでは特定の意味を持ちます。つまり、「認識」の反対です。受動的にリストから選んだり、もう一度調べたりするのではなく、最初から資料を掘り起こすほど、覚えやすくなります。
また、何をするのが正しいのか正確にわからない新しい状況でそれを使用できるようになります。これはエンジニアにとって大きなことです。検索練習を行うための特に効果的な2つの方法は、セルフテストと「精緻化」、つまり自分自身または他の人に何かを口頭で説明することです.
「インターリーブ」の概念は、学習する資料の順序を混同することを指して、学習文献で非常に重要です。たとえば、概念 A、B、および C について学習時間の連続したブロック (AAABBBCCC) で学習する代わりに、交互のもの (ABCABCABC) またはシャッフルされたもの (ABCBACACB) でそれらについて学習するのが最善です。
もう 1 つの効果的なツールは、使用されているものの例を研究することです。これは、ソフトウェア ガイドやドキュメントの一般的な機能です。これは、概念が新しい状況でどのように機能するかを示しています。前のセクションで、リコールがオープンエンドの状況で何をすべきかを知るのにどのように役立つかを覚えていますか?これは似ています。孤立した方法ではなく、さまざまな環境に囲まれた方法で何かを学習することで、脳はそれとのより多様な関連付けを作成し、それがどのように機能し、どのように使用されるかをよりよく理解します.
これら 2 つは非常に単純ですが、学習プロセスにとってそれほど重要ではないため、これら 2 つをまとめました。新しい概念を学ぶには、それらに繰り返し触れる必要があります。あなたも眠らなければなりません。それを回避することはできません。これらは生物学的必需品です。睡眠は記憶を定着させます。
何かを学ぶのに必要な複数のセッションの間隔を空けることの有効性は、それ自身の名前である間隔効果を持っており、実際には、19 世紀後半にハーマン エビングハウスによって学習科学の分野で最初に発見されたものの 1 つです。望ましい難易度はゲームの名前です。何かを思い出すために脳に負荷をかけるほど、時間をさかのぼって覚えることができますが、それでも覚えてしまうほど、それは定着します。
Duolingo は、これら 4 つすべての使用方法を非常によく示している組織の 1 つです。正しい単語を最初から検索する演習があり、古い語彙を新しいレッスンに追加し、毎日アプリに戻ることを望んでいます (そして、教えることを恐れません)。
「何かを構築する」こと、特に新しいアプリ フレームワーク (本来、アプリ構築のすべての部分に影響を与えるもの) を使用することは、真に優れた学習方法であり、4 つの R がすべて含まれる可能性があります。あることを行うための最良の方法を、多くの場合、さまざまな状況で、記憶から思い出す必要があります。以下の点に注意してください。
野生で行われたプロジェクトでは、必然的に、特定のツールを他のツールよりも多かれ少なかれ使用するようになります。何かを本当に学びたい場合は、時間がかかる可能性のあるエッジケースや、時間を節約できるニッチなツールも理解する必要があります。したがって、それについて構造化してください。学習しているセクションの 1 つに集中してください。可能であれば、ピースをインターリーブします。一度にすべての部分を学ぼうとしないでください。お気づきでしょうが、Duolingo は言語全体を投げかけるだけではありません。各レッスンで紹介する新しい語彙の特定のセットを選択し、最終的には完全にカバーします。
ドキュメントをあまり頻繁に見返さないでください。回収練習を行います。的を絞った小さな課題を自分に課してください。たとえば、新しいライブラリを学習する場合、いくつかのメソッドを取り上げて、「これらの部分で何ができるでしょうか?」と言うことができます。そして、それを行う方法を見つけます。次に、それらの別のチャンクを取り、同じことを行います。時間をかけてこれを行い、学習セッションの間にしっかりとした睡眠をとってください. (私は新しい日付フォーマット ライブラリを 1 つだけ自分に与えましたが、それで十分な場合もあります。)
それができる限り楽しく、GitHub を埋めることができる限り、ソフトウェアで何か新しいことを学ぶためにプロジェクト全体は必要ありません。さまざまな状況で手を汚し、その間に睡眠をとれば、あなたは金色になります.
ここにも掲載されています。