Learning Strategies That Experts Use
Tags: learn, learning, codenewbie
Published: 2020-12-29 13:03:51

---
title: Learning Strategies That Experts Use
published: true
date: 2020-12-29 00:00:00 UTC
tags: #learn #learning #codenewbie
cover_image: https://www.rockyourcode.com/static/img/2020-12-29-book.jpeg
canonical_url: https://www.rockyourcode.com/learning-strategies-that-experts-use/
---

> Methods from prolific learners to help you accelerate your learning

We all know that [life-long learning](https://fs.blog/2015/11/lifelong-learning/) is necessary for a successful career path in web development.  
Tech is a fast moving field. We constantly need to keep our skills sharp.

Knowing that you quickly need to learn new material does not solve the problem of _how_ to achieve that.

**What methods can we use to learn a new technology, framework or language as fast as possible?**

I’ve collected the tips from several successful life-long learners, so that _you_ can use them to your advantage.

I highly encourage you to check out the [original sources](#original-sources). But if you’re short on time, here are some bite-sized pointers.

## TL;DR

Be curious, experiment, struggle. Break a topic into chunks. Build something, then teach.

## [Flavio Copes: Divide and Conquer Learning](https://flaviocopes.com/how-to-learn/)

> I work in chunks. I take a topic, take a couple courses, read as many books as I can on it, and try to come up with a table of contents of the whole argument. That is going to become the index of an ebook. Then I start writing about each of those chunks, independently. I have a list printed out, and every day I pick 1, 2 or more topics I am in the mood to learn and write about. Following the mood makes things easier. Also, if a day I don’t want to do it, I just skip the day and get back tomorrow fresh and ready to roll.

> Dividing a big topic into chunks is much more human and manageable. If I tackle 1 chunk at a day, at the end of the month there’s quite a bit of chunks under my belt. Each one of them is part of the big picture, and all I have to do is to visualize this big picture. Each chunk is a blog post, and I get the big picture by creating an ebook.

## [Dave Ceddia: How I Learned React](https://daveceddia.com/how-i-learned-react/)

1. One thing at a time, if you can
  1. isolate the smallest “thing”
  2. “learn to play one note” on the piano
  3. make a list of the things you need to learn, start at the bottom, work your way up
2. Get it working, and keep it working
  1. make small, cautious changes
  2. treat learning like a fun exploratory experiment
3. Cause errors on purpose
  1. test the limits
4. Start small, and build from there
5. Teach others

## [Mastering Vim Quickly: Learning to Learn Effectively](https://jovicailic.org/mastering-vim-quickly/)

1. Mindset
  1. strive for change
2. Motivation
  1. mini-habits
  2. measure everything
  3. track progress visually
3. Learning Principles
  1. learning is learnable
  2. take care of yourself (hydrate, breaks, concentration spans, sleep)
  3. teach someone else
  4. change your mindset (expect to replay it back)
  5. expect to teach it (or write about it in a blog post without checking out the original learning resource)
  6. identify gaps in your knowledge
  7. implement right away (take action): “Which three things can I learn and put into action right away?”
  8. take breaks (when your brain gets distracted, it’s time for rest)
  9. nap

## [Kalid Azad: Learn Difficult Concepts with the ADEPT Method](https://betterexplained.com/articles/adept-method/)

| What | How |
| --- | --- |
| Analogy | Tell me what’s it like. |
| Diagram | Help me visualize it. |
| Example | Allow me to experience it. |
| Plain English | Describe it with everyday words. |
| Technical Definition | Discuss the formal details. |

## Kent C. Dodds: [Solidifying What You Learn](https://kcd.im/solidify) and [How to Teach](https://kcd.im/solidify)

### [Solidifying What You Learn](https://kcd.im/solidify)

1. Consume information to be made aware of what’s out there to learn
2. Build something that you want using the technology you want to learn
3. Teach what you learned in the process of building

## [How to Teach](https://kcd.im/solidify)

1. 

    Generate Desirable Difficulties

    Do the exercise before teaching the concepts. We need to get out of our comfort zone to learn.

2. 

    Interleave Practice

    Mix up what you’re learning. E.g., build exercises upon one another.

3. 

    Elaboration

    Explain what you’ve learned in your own words.

4. 

    Active Retrieval

    Go through learning material again after one week.

## [Tim Ferriss: How to Master Any Skill](https://www.nateliason.com/notes/4-hour-chef-tim-ferriss)

### DiSSS

- Deconstruction: What are the minimal learning units, the lego blocks, that you should be starting with?
- Selection: Which 20% of the lego blocks will give me 80% of the results?
- Sequencing: In what order should I learn the blocks?
- Stakes: How can I create real stakes to make sure I follow through on the program I’ve prescribed myself?

### CaFE

- Compression: Can I compress the most important 20% into an easy to grasp 1 pager
- Frequency: How frequently should I practice? Can I cram? What walls will I hit? What’s the minimum effective dose for volume?
- Encoding: How do I anchor what I already know for rapid recall? Acronyms are an example.
- Deconstruction

## [John Sonmez: The 7 Steps To Learn Any NEW Programming Language You Want (FAST!)](https://www.youtube.com/watch?v=8FObMqLtarA)

1. Look/Scan existing code in the new language (curiosity and questions)
2. Take easy/small programming exercises/problems and solve them
3. Skim reference material/book with 80/20 rule
4. Create a small program with what you’ve learned, e.g., small app (user input, storage, retrieval, user interface)
5. Go through the learning material in detail, use that to improve your program (implement); (optional:) get an expert to critique your work
6. Teach it someone else (blog post, video)
7. Go back to step 1 and look at code again

## [Nader Dabit: How to learn a new programming technology](https://nitter.net/dabit3/status/1282674911698464768)

1. Read the Getting Started
2. Build the most basic “Hello World”
3. Find a few vids / tutorials, watch & read them
4. Dig into more complex docs
5. Turn Hello world into something more complex
6. Teach it to someone else (blog / video)

## [The Feynman Technique](https://fs.blog/2012/04/feynman-technique/)

1. Choose a concept you want to learn about
2. Pretend you are teaching it to a student in grade 6
3. Identify gaps in your explanation; Go back to the source material, to better understand it.
4. Review and simplify (optional)

## Original Sources

- [The Feynman Technique: The Best Way to Learn Anything](https://fs.blog/2012/04/feynman-technique/)
- [Flavio Copes: Divide and Conquer Learning](https://flaviocopes.com/how-to-learn/)
- [Dave Ceddia: How I Learned React](https://daveceddia.com/how-i-learned-react/)
- [Mastering Vim Quickly: Learning to Learn Effectively](https://jovicailic.org/mastering-vim-quickly/)
- [Kalid Azad: Learn Difficult Concepts with the ADEPT Method](https://betterexplained.com/articles/adept-method/)
- Kent C. Dodds: [Solidifying What You Learn](https://kcd.im/solidify) and [How to Teach](https://kcd.im/solidify)
- [Tim Ferriss: How to Master Any Skill](https://www.nateliason.com/notes/4-hour-chef-tim-ferriss)
- [John Sonmez: The 7 Steps To Learn Any NEW Programming Language You Want (FAST!)](https://www.youtube.com/watch?v=8FObMqLtarA)
- [Nader Dabit: How to learn a new programming technology](https://nitter.net/dabit3/status/1282674911698464768)

---

If you want, you can subscribe to my blog via [RSS Feed](https://www.rockyourcode.com/index.xml) or [Newsletter](https://buttondown.email/rockyourcode). 😍