An Engineer's Learnings from Learning How to Learn

Musings on Metalearning

First Principles

  • Great cut from a great animal
  • Tender and Juicy on the inside (AMAP)
  • Brown (not black) crust on the surface (AMAP)

Sous Vide

My Story


What was missing

  • No Context to why I was learning math/cli in java
  • Those who were teaching me didn't know how to teach
  • Used words I didn't understand when teaching me
  • I was afraid to say I don't know
  • I didn't have the tools to know how to get beyond where I was

Meta Learning

Learning how to Learn

The Mental Model of Learning

Why Learn how to learn?

  • Technology continue to develop. We need to constantly learn new skills
  • In knowledge work, those who have the most knowledge and skills are the most valuable
  • It's incredibly rewarding to apply skills. If your skill is learning how to learn, you can make learning anything fun and exciting.
Stage 0
unconscious unknown
Stage 1
conscious unknown
Stage 2
conscious known
Stage 3
unconscious known
Stage 0
unconscious unknown
Stage 1
conscious unknown

Ask Questions

Talk to experts

Take a step back and ask for context

Break down the sub-skills in an area

Stage 1
conscious unknown
Stage 2
conscious known

To get to know a subject, you have to study it.

Understand the skill

Follow tutorials

Get a baseline understanding

Stage 2
conscious known
Stage 3
unconscious known


Pattern Matching Machine

Holistic Learning

Learn by Relating

The Feynman Technique

How to gain understanding and pinpoint

areas you are struggling with

Step 1

Write the name of the concept at the top of a blank piece of paper.

Step 2

Write down an explanation of the concept on the page. Use plain English. Pretend you are teaching it to someone else (e.g a new student). This should highlight what you understand, but more importantly pinpoint what you don't quite know.

Step 3

Review what you have pinpointed you don't know. Go back to the source material, re-read, and re-learn it. Repeat Step 2.

Step 4

If you are using overly wordy or confusing language (or simply paraphrasing the source material) try again so you filter the content. Simplify your language, and where possible use simple analogy.

ADEPT Method

How to Teach someone

Map (Analogy)

arr = [1, 2, 3, 4, 5]

for (i = 0; i < arr.length; i++) {
    arr[i] = arr[i]*arr[i];

//[1, 4, 9, 16, 25]

Map (Diagram)

Map (Example)

arr = [1, 2, 3, 4, 5] => {
    return elem * elem;

//[1, 4, 9, 16, 25]

Map (Example Cont.)

var transformers = [
    name: 'Optimus Prime',
    form: 'Freightliner Truck',
    team: 'Autobot'
    name: 'Megatron',
    form: 'Gun',
    team: 'Decepticon'
    name: 'Bumblebee',
    form: 'VW Beetle',
    team: 'Autobot'

robotsInDisguise = => {
  return transformer.form;

// [ 'Freightliner Truck', 'Gun', 'VW Beetle' ]

Map (Plain English)

Do this to every element in the array

Map (Technical)

You have an array of items and want to transform each of them. The result is a new array of the exact same length containing the manipulated items.

Learn by Understanding Effective Teaching

Search for:


Analogies - ELI5 <Topic>

Diagrams - Diagram <Topic>

Examples - Tutorial <Topic>

Plain English Explanation - Plain English <Topic>

Formal Definitions - <Topic> Wikipedia


About Learning

1. "I Don't Know"

It's better to admit you don't know something than to pretend like you get it. It helps no one in the end, and like a small lie that blows up to be a huge deal in a TV show, the longer you pretend you know something when you don't, the worse it gets.

I've always been ready to admit I don't know something. You probably hear me say this a lot.


Lean into the things you don't know. When reading/hearing about a phrase or idea you're not familiar with, make a note of it and spend some time learning about it.

2. Chapter 1 of Tech Books

You don't need to know everything about every topic.

When you hear a new buzzword or term, grab a technical book on that and read the first chapter. It usually includes a part on why you should learn it and what this technology gives you. It also tells you what it is.

Minimum Effective Dose to not be lost when you hear a certain idea.


Time commitment: 10-20 minutes of reading per topic.

3. Prioritize Subjects

Don't do something too similar. Use new topics to learn about the greater context.


Especially true in programming languages. If you know Ruby (OO, Dynamically Typed, Interpreted), try Go (OO, Static Type, Compiled), or Elixir (FP, Static Type, Compiled), but not Python, which is more similar

Let's you learn about the bigger picture of programming, not just another language

4. Learn Related Disciplines

Server Side

Web App

Client Side

Web App





5. Find Opportunities To Learn

Think of your challenges/frustrations at work as opportunities to learn


1. Volunteer for things you have no idea how to do. Ask if you can help out in things someone else is doing

2. Read your error messages and understand what it's trying to tell you. Ask questions about how this all fits in to the greater context.


Ask why a fix fixes the error you're having

The Perfect Egg

Kalid Azad


ADEPT Method


Scott Young

Rapid Learner Course (OKTA)


Feynman Method


Holistic Learning


Appendix A

Going from Step 2 to Step 3:

Deliberate Practice

Peak: Secrets New Science of Expertise



Appendix B

The Food Lab