Skip to content

Latest commit

 

History

History
48 lines (37 loc) · 5.35 KB

06-help-your-brain.md

File metadata and controls

48 lines (37 loc) · 5.35 KB

Help Your Brain

Effective learning is (very roughly) built of these main pieces:

  • Accurate meta-cognition
  • Concentrated and intentional effort
  • Cognitive Load management
  • Forming & maintaining useful mental models

Some of this you have direct control over and some you don't. Effective learning will happen once you've learned how to improve what you can control and manage what you can't.

  • Accurate Meta-Cognition:

    • This is possibly the most important of all 4 points. Self-learning is also self-teaching, to be able to teach someone you need to know their strengths and weaknesses. Accurately assessing your your abilities (positive and negative) will make all the difference. This applies to practical coding skills - knowing what to practice and what to learn next. And even more importantly it applies to knowing your own state of mind: When are you unsure vs. lost? Are you losing focus? Does your confidence match your abilities?
    • Tips for Improving. This article is about understanding texts, but everything they say applies just as much to understanding source code.
  • Concentrated and Intentional Effort:

    • You will learn most effectively when you are deliberate about every action you take - have a reason and a success measure for everything you study. "Going through the motions" for the sake of repetition is not an efficient way to improve in the long-run.
    • Practicing Deliberate Practice
  • Cognitive Load Management:

    • Cognitive Load is the amount of incoming information your brain has to handle at once. Managing this is so important for learning because you most effectively learn information that has been fully processed by your working memory. If your brain is attempting to process more than it can handle, none of the incoming information can be handled correctly.
      Your goal shouldn't be to completely remove cognitive load, but rather to make sure you are experiencing the right type:
      • Intrinsic Load: This refers to the inherent complexity of what you are trying to learn. Programming is a very complex skill. The best way to limit intrinsic load is to study projects that introduce only one new concept at a time, building on what you have already completed. We have done our best to build this principle into our curriculum.
      • Extraneous Load: This is anything unrelated the concept you are trying to learn. There are certain things that will always fall into this category - background noise, phones, this weekend's plans. Then there are some things that can be extraneous or intrinsic - new language features, dev tools, frameworks, ... It is up to you to decide what you're focusing on and to learn the rest later.
      • Germane Load: This is the good one, you want this one. Germane load is the work your brain does that translates directly into meaningful learning. After you've cleared away distractions, set your concentration, and decided on narrow learning objectives, this is the work your brain has left to do: convert new information into usable mental models.
        You can think of managing Cognitive Load like switching to a more fuel-efficient car - you burn the same amount of gas but move further and faster.
    • Great Overview of Cognitive Load
  • Forming & Maintaining Quality Mental Models:

    • A sign of effective learning is automatization - that lovely moment where you no longer need to think to complete a task. You can talk or eat without thinking about the muscles in your mouth, and if you do try to think about them it gets harder! This is automatization in action. Your brain has built a network of Mental Models that it can fall back on to carry out these routine tasks without increasing your cognitive load. Your brain automatically builds these models as you interact with the world.
      This means you don't have to try to learn. But it also means you have to be very careful about what & how you study. Because programming is so complex, it is possible to understand it in many different ways. An incorrect Mental Model might work for a while, but will ultimately stop you in your tracks when you reach something that works differently from what you understand. Unlearning these automated thought processes is much more difficult than learning them correctly from the beginning. Fortunately there are some very simple steps you can take to overcome this challenge:
      • Explain everything back to yourself.
      • Draw diagrams of how you think things work, and try to apply them to real-life scenarios.
      • Find connections between what you're learning and what you already know.
      • Ask for help early and often, even when you think you understand something. Catch mistakes before they settle in.
    • What are Mental Models?
    • Make a Concept Map
    • In-Depth

In short, your brain wants to learn. Give it a fighting chance!