Methods from prolific learners to help you accelerate your learning
We all know that life-long 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. But if you’re short on time, here are some bite-sized pointers.
Be curious, experiment, struggle. Break a topic into chunks. Build something, then teach.
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.
- One thing at a time, if you can
- isolate the smallest “thing”
- “learn to play one note” on the piano
- make a list of the things you need to learn, start at the bottom, work your way up
- Get it working, and keep it working
- make small, cautious changes
- treat learning like a fun exploratory experiment
- Cause errors on purpose
- test the limits
- Start small, and build from there
- Teach others
- strive for change
- measure everything
- track progress visually
- Learning Principles
- learning is learnable
- take care of yourself (hydrate, breaks, concentration spans, sleep)
- teach someone else
- change your mindset (expect to replay it back)
- expect to teach it (or write about it in a blog post without checking out the original learning resource)
- identify gaps in your knowledge
- implement right away (take action): “Which three things can I learn and put into action right away?”
- take breaks (when your brain gets distracted, it’s time for rest)
|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 and How to Teach
- Consume information to be made aware of what’s out there to learn
- Build something that you want using the technology you want to learn
- Teach what you learned in the process of building
Generate Desirable Difficulties
Do the exercise before teaching the concepts. We need to get out of our comfort zone to learn.
Mix up what you’re learning. E.g., build exercises upon one another.
Explain what you’ve learned in your own words.
Go through learning material again after one week.
- 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?
- 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.
- Look/Scan existing code in the new language (curiosity and questions)
- Take easy/small programming exercises/problems and solve them
- Skim reference material/book with 80/20 rule
- Create a small program with what you’ve learned, e.g., small app (user input, storage, retrieval, user interface)
- Go through the learning material in detail, use that to improve your program (implement); (optional:) get an expert to critique your work
- Teach it someone else (blog post, video)
- Go back to step 1 and look at code again
- Read the Getting Started
- Build the most basic “Hello World”
- Find a few vids / tutorials, watch & read them
- Dig into more complex docs
- Turn Hello world into something more complex
- Teach it to someone else (blog / video)
- Choose a concept you want to learn about
- Pretend you are teaching it to a student in grade 6
- Identify gaps in your explanation; Go back to the source material, to better understand it.
- Review and simplify (optional)
- The Feynman Technique: The Best Way to Learn Anything
- Flavio Copes: Divide and Conquer Learning
- Dave Ceddia: How I Learned React
- Mastering Vim Quickly: Learning to Learn Effectively
- Kalid Azad: Learn Difficult Concepts with the ADEPT Method
- Kent C. Dodds: Solidifying What You Learn and How to Teach
- Tim Ferriss: How to Master Any Skill
- John Sonmez: The 7 Steps To Learn Any NEW Programming Language You Want (FAST!)
- Nader Dabit: How to learn a new programming technology