Tải bản đầy đủ (.pdf) (33 trang)

Systems are for people who care about winning repeatedly Goals are for people who care about winning

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (547.02 KB, 33 trang )

The fastest, most effective way to learn
a new programming language - any language

“Systems are for people who care about winning repeatedly.
Goals are for people who care about winning once”
James Clear

1


Copyright 2020

Introduction

How this program is organized

Section 1
What is the Master Learning Method?

Section 2
Activate your Mindset.

Section 3
Acquire Your Sources.
Create Your Plan.

Section 4
Filter Your Sources
Build a Knowledge Chart
Develop Measurable Goals
Update Your Plan.



Section 5
Gather Your Tools.

2


Section 6
Execute Your Plan.
Build Your Master Mind Map
Directed Learning
Testing to Find Gaps in Your Knowledge
How to Take Good Notes

Section 7
Critique The Process in the Retrospective.

Section 8

Bonus Section 1

Bonus Section 2

Bonus Section 3

3


Write this last.
You’re about to embark on an amazing, and sometimes frustrating journey.

1. Hook the reader
2. Tell a story about the reader’s current pain
3. Tell them what they’ll learn
4. Describe the author’s background/origin
4.5 What this is and what it is not
5. Set up the book with a call to action

4


Introduction
Technology is accelerating the creation (and destruction) of careers. Data
Science is the fastest growing technology field right now, but the professional
title of Data Scientist has really only been around since 2008 (https://
en.wikipedia.org/wiki/Data_science). Think about it. A high-paying career that
touches nearly every industry is only 12 years old. If you wanted to pursue a
career in Data Science, four years of college may not be the answer. Selfeducation may be the best answer.

A 2016 Stackoverflow.com poll reported that 69.1% of software developers
appear to be self-taught.

Like most of the people that responded to that Stackoverflow.com poll, I’m a
self-taught Web Developer. I’ve learned by trial and error, practice, and a whole
lot of reading, but no formal education. Sure I went to college, but not for Web
Development. I’ve had a long career working for some of the most iconic
companies in the US - all because I was self-taught.
Years ago, I started looking for a new role as a Web Developer, and kept
getting passed over. I had no problems in the interview process, but as a
Developer, you’re often asked to perform some sort of coding exercise to show
your knowledge. Despite my years of experience, I failed the coding exercise

almost every time. Something was wrong with my knowledge. I had to figure out
what I was missing.

Being passed over for a role you felt you were perfect for is very humbling.
You start to question your skills. Occasionally you’ll question your entire career.
You analyze every part of the interview process and try to figure out what went

5


wrong.
Looking back on the roles offered to me in the past, I realized that in every
interview that resulted in a job offer, I didn’t have to do a technical skills test, or
white boarding exercise.
I decided to look at what I knew and how well I knew it. I realized there were
a lot of holes in my skillset. I needed to rethink the way I learned to code.
There’s a term to describe what I was experiencing. It’s called “The Illusion of
Competence”. I had convinced myself that I was proficient in skills that I only
read about. I believed that if I memorized a few key terms, I could easily do the
work. After all, I’ve been doing this for over 15 years now. Needless to say, I was
wrong.
I had to figure this out. My career depended on it. I needed to go back to the
beginning.
It’s a funny thing about learning. I was never taught how to learn. We're
taught in school reading, writing, arithmetic, science, computers, history, and a
host of subjects, but rarely are we taught the best way to learn this information,
let alone how to master it, or even retain it.
How do you get the most out of a programming book? Clearly just reading it
isn’t enough. Memorization is good for vocabulary, but programming is much
more involved than just reciting definitions of words. You’re taught rote

memorization in school, and even the critical thinking essays involve mostly just
recalling facts. I realized that the skills needed to be a programmer go much
deeper than just learning information. It also requires abstract thinking - the
ability to take multiple concepts and combine them to create something new. I
decided to start with learning how to learn.
I spent years researching and experimenting with learning techniques. I

6


studied all the experts I mention throughout this program. I read research
papers, blogs, and gathered information from the 300+ books I have in my
library. This program is the result of that work, and I’m thrilled to share it with
you.

What Makes the Program Different
This program won’t teach you a new programming language. This program is
much more than just a tutorial. I will teach you the fastest, most effective way
to learn a new programming language - any language. Whether you’re
completely new to programming, or you’ve learned a language (or two), this
program will teach you valuable skills in knowledge building. The techniques
mapped out in this program have helped me learn valuable coding skills that
have landed me jobs that pay well over six figures.
I truly believe that if I just taught you JavaScript or Python, I’d be doing you a
disservice. This is probably the one tool in your arsenal that won’t be obsolete in
a matter of months. If you can learn new skills while excelling in your career,
you’ll never be “obsolete”, and your skills will always be in demand.
Inside the Master Learning Method, you’ll learn:



Why your mindset determines whether you succeed or fail.



Where to find the best free learning materials.



The best methods for note taking.



Apps and online tools to use to capture your knowledge.



How to “deconstruct” a programming language so it’s easier to learn.



Why just using memorization to learn is a waste of time.



How teaching others what you’ve just learned is the best way to retain
information.



The best place to go for help when you’re stuck.


7


The Master Learning Method is the foundation for learning a programming
language in the fastest, most effective way. When you complete the program
you’ll be a Minimum Viable Expert (MVE) in your chosen programming language.
An MVE has the “bare minimum” level of knowledge to be considered an expert
on that subject. This is your target performance level.
The path to become an MVE consists of 6 phases:
First we activate our mindset.
Once we’re in the right frame of mind, we need to acquire our learning
resources.
Once we’ve gathered our knowledge sources, we focus on creating a
schema for learning.
Now that we have a plan, we gather the tools we need to succeed.
Now the magic happens in the execution phase.
Finally, we review how effective our system is through a retrospective.

A note about affiliate links...
This program contains affiliate links. It's a small attempt to modestly profit from
a free offer. Every program or tool recommended in this system is one that I
personally have used and found effective. Feel free to type the web sites into
your browser if you don't feel comfortable using the affiliate links. I won't be

8


offended.


9


Section 1 - Master Your Mindset

“Begin with the end in mind”
Peter Senge

If you've ever taken a course or read a book on productivity or reaching your
goals, you've probably heard that understanding your "why" is a powerful
motivator.
Why do you want to learn a programming language? Will it get you that
promotion, or let you start that business? Will it let you finally be able to build
that app you’ve thought about for years?

Your motivation for learning this new skill or subject is the drive that will
keep you going. It's the fuel for your fire.

Your "why" is the anchor for the Master Learning Method - it's the cornerstone
of your Mindset.

Why your Mindset is so important
You may have heard the phrase "Growth Mindset". Experts agree that it's the
key to learning new concepts, but what is a Growth Mindset, and why is it
important to gaining knowledge? A Growth Mindset is the belief that people are
are always capable of learning new things. Our minds aren't fixed. Our minds
are created so that throughout our lives, new experiences will continuously
change us and we will grow from them. Embracing this concept is essential in

10



mastering new skills because you must first believe your can learn a new skill
before you can learn that skill.

Another concept of the Growth Mindset is that every situation is an opportunity
to grow. Having a Growth Mindset means taking a failure and turning it into a
learning experience. Throughout your journey to master a programming
language, you’ll eventually fail at something. It might be a coding exercise, or an
online skills test, or when you’re actually trying to build an application. Use that
failure as a learning experience - try to figure out where the failure occurred.
Then, try to fix the failure. You’ll learn a lot from the exercise.

Thomas Edison once said, "I have not failed. I've just found 10,000 ways
that won't work." This is the essence of the Growth Mindset.

Declaring Your Intention
Your Learning Intention Statement is a simple sentence that states what you
plan to do and when you plan to do it by. In this case, your Learning Intention
Statement should be something like, “I will learn to program JavaScript by
________ date.”
I’m sure you’re confused about adding a deadline in your Intention Statement.
That date will likely change, but just the fact that you’ve determined a date will
increase your chances of success.
Take your learning intention and write it down. Under that, write down your
"why" and put it somewhere you'll see daily. Keep it in the forefront of your mind
as you go on your journey.

11



If you find yourself fading, or losing interest, think about your "why" and picture
how you'll use this knowledge to reach your goal.

Accountability Setting up a system of accountability to keep you on track now will save you
emotional and mental energy in the future.
Having a structure in the beginning means all you have to do is follow it and
not think about it. Your energy will want to be focused on learning your new
skill, not worrying about when you're going to focus your time.
Even before we get into the process of determining the best way to learn your
new skill, set aside some time daily to work on it. The schedule will likely need
to be adjusted as you progress, but having that time blocked out from the
beginning will require less energy from you to stick to your plan as you go
along.
The good news is now that you've become part of the Master Learner family,
you're invited to join our free Facebook Group where we help each other in our
accountability and share tips and tricks with each other on how to achieve our
goals.
The information you need to join has been sent to you in the series of welcome
emails. If you're having trouble finding that information, please send an email
to

What have we learned?


A Growth Mindset is key to learning a new subject.



Setting a deadline for your journey will increase your chance of success.




Having a method of accountability will keep you on schedule.

12


Section 2 - Acquisition
Section Overview
1. Gather information sources.
2. Research the skill and any related topics.
3. Look for patterns and “overlap”.
4. Create your plan.
The second step of the Master Learning Method is to acquire your resources.
Now that you’ve determined your why, and you’ve activated your growth
mindset, it’s time to get to work gathering the study resources you need to begin
your journey.

There are practically unlimited resources on the Internet to learn any
programming language in existence. The key is to know where to look to get the
best information that works for you. Another factor to consider is whether you’re
willing to pay for some of your resources, or try to learn programming from
completely free sources.
One thing to do is to look at a curriculum used in schools to teach that subject.
It can be a syllabus from a class. There are now free courses online offered from
major institutions like MIT.
There’s links in the bonus section to free online college and university
courses.
When you’re looking for resources, make sure you understand what “level”

the materials are at. Basic programming books should contain all the basics you
need to thoroughly understand before moving into more advanced topics.
To become an MVE, you’ll need multiple sources of information at all levels of

13


knowledge of the language.
Keep these resources handy. They’ll be used to develop your Learning
Roadmap in the future.
Subscription learning sites such as LinkedIn’s Learning portal, or courses
from Udemy are all options. Before choosing to use online courses for your
knowledge source, you need to be aware of the drawbacks. Online courses are
typically much more expensive than other sources. You’re also tethered to the
instructor’s teaching speed. You may learn a programming language faster, or
slower than the instructor is teaching you. There are some major benefits to an
online course though. Often the instructor walks you through coding exercises
where they give you insight into their thoughts about solving a problem. You
literally get to look over their shoulder while they work. If you decide that online
courses are for you, one tip is that you can often watch the videos at a faster
speed than normal. It’s a good way to get through some of the basic talking
points so you can focus on the actual knowledge transfer. Another tip - look for
tutorials that have the transcript of the tutorial on the page. Take a look at it and
see what parts of it look to be important. Be sure to look for courses that were
created in the last year. Technology moves fast and tutorials can become quickly
outdated.
The same goes for books. If a book doesn’t offer information on the latest
version of a programming language, you shouldn’t waste your time on it.
Packtpub is a publisher of programming books. They offer a subscription to their
online catalog and you get access to publications that are still being written,

with the latest information. Apress has a similar option. Both sources tend to
force you to read the books online only.

Some of the best resources I’ve found have been from great developers that
have created courses on the programming language or framework I was wanting
to learn. They usually have sample chapters, or videos for you to check out, and
I highly recommend it. If the creator doesn’t sound like they know what they’re

14


talking about, you should think twice about buying the course. Sometimes a
creator will offer “early bird” access to their courses. This is a great way to save
money, as long as you understand that the product may be incomplete at time
of purchase. If you’re serious about your timeline, you should think twice about
purchasing incomplete content.

Create Your Plan
Now that you’ve gathered your materials and have an idea of the amount of
resources you’ll be using, it’s time to create a plan.
Creating a plan is as important as knowing your “Why”. Life moves quickly
and a lot happens to distract us during a single day. Scheduling time to do the
work of learning is essential to stay on track and reach your learning goal. I
recommend scheduling at least an hour a day to focus on your work. If you can
allocate more time, do so. As you plan, remember that the brain is like any other
muscle in your body - it has a finite amount of energy to use each day. Don’t
spend too much time each day focusing on your learning. Take breaks regularly.
Taking a break can actually be beneficial in the long-term learning process. It
allows your mind to process what you’ve studied and it helps cement it in your
memory. You can help this happen if you just briefly mentally review what you’ve

learned as you’re taking a break.

What have we learned?
Having a plan is essential for success.

15


Section 3 - Schema

Section Overview
1. Build The Knowledge Chart
2. Look for patterns and overlap

A schema is a representation of a plan in the form of an outline or a model
(Oxford dictionary />This stage of the process involves creating the plan you need to learn your new
skill or subject.
If you are a complete novice, your schema is going to be extensive.

Deconstructing the programming language.
Skills
Subskills
Most of the things we think of as skills are really a combination of smaller
skills. Often in programming, a limited number of smaller skills combine in
multiple patterns to make up the larger skills.

The first thing we’re going to do is create a Knowledge Chart. In it, you’ll
categorize the content you need to learn. You’ll be constantly adding to this
chart as you dive deeper into your resources and the programming language.


16


Using your favorite note taking tool (or a piece of paper), create three
columns.
Label the first column “Concepts”. Label the second column “Facts”, and
label the third column “Procedures”. You’ll likely need quite a bit of room for the
content. Don’t limit yourself from the beginning by not planning for it.

Notes for the Master Learning Method using Speare
Discovering mental models and identifying mental hooks
A mental model is the basic element of learning. In his book, The First 20
Hours: How to Learn Anything Fast, author here describes mental models as “…
a way of understanding and labeling an object or relationship that exists in the
world”.
Mental hooks are metaphors and analogies you can use to remember new
concepts.

17


Initially most of your content will go into the Concepts category.
Concepts are your mental models. For example, the concept of a function is
the idea that a block of code in a specific format will perform some action when
“executed” (made to do the instructions inside the block). These concepts
should be parts of programming that require deep comprehension.
The Facts column should contain terms and anything that needs to be
memorized. In programming, the facts can consist of programming terms like
variables, and objects, and basic rules of programming like how to assign a
value to a variable. If you’re completely unfamiliar with programming, it’s very

likely this column will be empty. Don’t fear. It will be populated as you move
through your journey.

The Procedures column should consist of anything that requires action. This
is where you catalog all the things that should become second nature to you as
you program. Procedures are typically actions like “Handling Events”, or
“Creating multiple Objects”, or “Organizing the code into separate files”.
You’ll probably want a blank piece of paper or something in your note taking
system to contain terms and concepts you’re not sure about. It should be a
place to write things down you’ll need to research to understand, and decide
which category it should go in.
As you build the Knowledge Chart, you’ll want to add numbering to the
items. The idea is to be able to link them together by adding a reference.
How do I know what to put in my Knowledge Chart?
If your sources are books, look through the table of contents. You’ll have to
use some judgement here, but basically write down anything from the TOC that
you don’t know, or what looks important. As you go through multiple sources,

18


you’ll probably start to see some repetition of terms or concepts. The more
repetition you see, the more likely that concept is a major component of
understanding that programming language.
The Benchmark/Exclude method Benchmarking is finding the common ways to which people learn a skill or
subject, which can help you define a default strategy. One thing to do is to look at
a curriculum used in schools to teach that subject. It can be a syllabus from a
class. There are now free courses online offered from major institutions like MIT.

The site edX.org has a free course on JavaScript basics. I used the syllabus

to populate my Knowledge Chart.

3. Look for patterns and overlap - this will help identify major components of
the topic

19


How to write code: syntax, semantics, and resource management
The language's paradigm: object-oriented, functional, logic, etc.
The artifact ecosystem: how to build and run executables and how to use
libraries
Tooling: editors, compilers, debuggers, linters

Develop Measurable Goals Now that you have some idea as to what you need to learn, let’s talk about
goals and deadlines.
C. Northcote Parkinson coined “Parkinson’s Law” that states, “Work expands
to fill the time available for its completion”. In other words, without a sense of
urgency and a deadline, a task will last as long as you let it. So we need goals
and deadlines.
Your learning goals need to be specific and easy to measure. So, can you be
specific about learning a programming language that you don’t know? Clearly it
won’t be an exact science, but with your Learning Roadmap you can see what
lies ahead and block some time to work on it.
Timebox Sprints For most people, focusing on a single task for a long period of time isn’t
easy. I’m no exception. I’ve developed a process that I call “Timebox Sprints” to
help me focus and stay on task. I take a piece of paper, or some digital method
of entry and add the date, the time, a section for an objective (just a sentence), a
larger section for “actions”, and a final section for “outcomes” (once again, just
a sentence). The idea is simple. 1. State your intention in the objective section,

something like “learn what a function is in JavaScript”. 2. Set a timer or alarm for
50 minutes. 3. Do whatever it takes to reach your objective. 4. Write down in the

20


“actions” section what you did. In this case, you’d actually write about what a
JavaScript function is. You’d add any sources you read, or websites you visited.
You’d complete the objective. 5. When the time is up, you enter in a statement
into the “outcomes” section. Did you complete your objective? Did you reach
your goal? Do you feel like you understand the objective? If yes, write that
down. If no, you have a decision to make. Do you just need more time to reach
the objective, or would another method be more effective. This part is really a
“gut” feeling. If you’re not comfortable with the resources you used to complete
the objective, perhaps you need to try other sources. You can set up another
Timebox Sprint to research the objective and find other sources of information.
Compare the new sources of information with the one you used. Are there
differences? Are there too many similarities? If there are, you need to keep
searching. If the source you’ve found seems like it’s written in a way you
understand better than the first source, try reaching the objective with the new
information.
Timing You’ll want to try to space out your Timebox Sprints. The important thing is
that you learn the objective and understand it on a level that an expert would
know it. That kind of understanding takes time. You may even need to schedule
another round of Sprints to practice some of the coding principles. Remember,
the Procedures in your Knowledge Chart are things you should know well
enough that they seem to be almost second nature. If you were asked to write a
function, you should be able to type out the structure for a function with little to
no effort.
What have we learned?


21


Section 4 - Tools
Section Overview
Tools

The tools you’ll need fall into 4 categories.
1. Note taking tools
2. Memory aid tools
2. Programming tools
4. Creation tools

Note Taking Tools
Evernote
Bear
Notion

Programming Tools
VS Code
Eclipse
Codepen.io
Codesandbox
JSBin.com

Creation Tools
GitHub.com

22



Hosting sites
Medium.com - blogging
WordPress.com - blogging
Youtube.com - videos

Tools like Trello are great for things like this, but the one drawback of Trello is
the inability to show large blocks of text in the default view. Speare is an app
similar to Trello that is designed to support writing. It has multiple boards like
Trello, but each item in the board is meant to be large blocks of text. Speare is
also designed for writers. You can take the contents of each board and compile
them into a single text document.

What have we learned?

23


Section 5 - Execution
Section Overview
Execution
How to take good notes
How to remember what you learn for the long term

E is for Execution
Now that you’ve got your Master Mind Map, and the tools you need to learn
your programming language, let’s get to work.
Here’s where the bulk of the work will happen.
Becoming a Minimum Viable Expert (MVE) in a programming language means

going through 6 distinct stages. Education experts have created these
stages to guide you through the process of mastering a subject.
Remember
Understand
Apply
Analyze
Evaluate
Create
Now it’s time to take your Knowledge Chart and build your Mind Map.

Mind maps are great tools for brainstorming. They’re also good for triggering
memory recall. That’s how we’ll be using it. There’s many tools you can

24


use to create a mind map, but pencil and paper work also. This is
basically a visual representation of an outline. Your subject is the “parent”
and the “children” branch off of the parent. Think of a family tree. Your
mind map can be any shape and the children can be spread out in any
direction.

The Master Mind Map.

A very small version of the Master Mind Map I’ve created for Metalearning a
programming language. The program used was WriteMapper.

1. Metalearning - draw a map (Done)
2. Focus - sharpen the knife (schedule time and milestones)
3. Directness - go straight ahead


25


×