Fastest Way to Learn ANY Programming Language: 80-20 rule

Sahil & Sarra
19 May 202308:24

Summary

TLDRThe speaker shares their experience learning various programming languages quickly by focusing on the most essential concepts first, inspired by the Pareto principle. They compare this approach to learning Basic English with a limited vocabulary. Emphasizing interactive learning and project-building, they explain how to reinforce knowledge through spaced repetition and gradually expand understanding. The method includes prioritizing key concepts, hands-on practice, and strategically increasing project difficulty to build proficiency and create a portfolio for job opportunities.

Takeaways

  • ๐Ÿš€ Rapid Learning: The speaker learned to code in multiple languages quickly by focusing on the most common concepts and principles.
  • ๐Ÿ“š Initial Struggle: Initially, learning Java took months, indicating a steeper learning curve compared to later languages.
  • ๐Ÿข Corporate Experience: The speaker applied a similar approach at Amazon and Google to quickly become proficient in Python and C++.
  • ๐ŸŒ Historical Parallel: The concept of Basic English, created in 1945, is used as an analogy for learning programming languages efficiently.
  • ๐Ÿ“ˆ Pareto Principle: The script introduces the Pareto principle, suggesting that mastering 20% of a language's concepts can cover 80% of practical use.
  • ๐Ÿ” Focus on Core Concepts: Learning the top 20% most popular concepts in a programming language is emphasized as the key to quick mastery.
  • ๐Ÿ”„ Adaptation: The top concepts may vary slightly between languages, so it's important to research and adapt to each language's specifics.
  • ๐Ÿ›  Interactive Learning: Engaging in interactive exercises and projects is recommended over passive learning to truly understand programming.
  • ๐Ÿ” Spaced Repetition: To combat forgetting, the script suggests using spaced repetition to reinforce learning and retention.
  • ๐Ÿ“ˆ Incremental Learning: A breadth-first approach to learning is advocated, gradually expanding one's knowledge base by building on familiar concepts.
  • ๐Ÿ’ผ Practical Application: Building projects with increasing difficulty helps in spaced repetition and learning new concepts, also building a portfolio.
  • ๐Ÿค– Acceptance of Incompleteness: The speaker acknowledges that it's impossible to learn everything about a language, encouraging a focus on practical application rather than total mastery.

Q & A

  • What strategy did the speaker use to learn multiple programming languages quickly?

    -The speaker applied the Pareto principle, focusing on the top 20% most popular concepts that make up 80% of the code used in the language, and used interactive learning and building projects to reinforce these concepts.

  • How did the speaker learn Basic English, and how does it relate to learning programming languages?

    -The speaker learned Basic English by focusing on its simplified vocabulary of 850 words and basic grammar rules. This approach relates to learning programming languages by focusing on the most common and essential concepts first.

  • What is the Pareto principle and how is it applied to learning programming languages?

    -The Pareto principle states that 20% of effort results in 80% of outcomes. In learning programming languages, it means focusing on the most commonly used concepts and constructs that cover the majority of coding tasks.

  • Why is interactive learning recommended over casual learning when it comes to programming?

    -Interactive learning is recommended because it involves actively coding and solving problems, which helps in better understanding and retention of concepts compared to passively watching tutorials.

  • What is the Ebbinghaus Forgetting Curve and how does it impact learning?

    -The Ebbinghaus Forgetting Curve illustrates how quickly we forget newly learned information over time. It highlights the importance of spaced repetition to improve retention.

  • What is spaced repetition and how can it be applied to learning programming languages?

    -Spaced repetition is a learning technique that involves reviewing information at increasing intervals to improve retention. It can be applied to programming by regularly revisiting and practicing core concepts.

  • Why is it important to build projects with increasing difficulty when learning programming?

    -Building projects with increasing difficulty helps reinforce basic concepts through repeated use and gradually introduces new, more complex concepts, facilitating continuous learning and skill development.

  • What are the two main problems the speaker addresses when learning a new programming language?

    -The two main problems are how to remember what is learned and how to learn the remaining 80% of concepts not covered by the top 20%.

  • How does the speaker recommend dealing with the remaining 80% of programming concepts after mastering the top 20%?

    -The speaker recommends a breadth-first approach, gradually expanding the knowledge base by learning new concepts that are closely related to what is already known, through building increasingly complex projects.

  • What are some examples of the top 20% most popular concepts in programming languages?

    -Examples include different data types (int, float, strings), control structures (if-else blocks, loops), and basic constructs like functions and classes.

  • Why does the speaker believe that watching video tutorials alone is not enough for learning programming languages?

    -Watching video tutorials alone is not enough because they typically provide code that already works, while programming requires hands-on practice, debugging, and problem-solving skills that are developed through active coding.

  • How does the speaker's approach to learning programming languages differ from traditional language learning methods?

    -The speaker's approach emphasizes focusing on the most common and essential concepts, interactive practice, and project-based learning, whereas traditional methods may focus more on comprehensive coverage and passive learning.

Outlines

00:00

๐Ÿš€ Rapid Learning of Programming Languages

The narrator shares their journey of learning multiple programming languages like Python, JavaScript, and C++ in just a few weeks each. They contrast this with their initial experience of learning Java, which took months. The key to their success at companies like Amazon and Google was a strategy that allowed them to quickly become proficient in new languages.

05:04

๐Ÿ’ก The Principle of Basic English

The narrator introduces the concept of Basic English, a simplified version of English created post-World War II to help spread the language globally. Basic English utilized only 850 words and simplified grammar, making it easier for non-native speakers to learn. This principle is linked to the Pareto Principle, where 20% of efforts lead to 80% of outcomes, a concept that the narrator applies to learning programming languages.

๐Ÿง  Applying the Pareto Principle to Programming

The narrator explains how the Pareto Principle can be applied to programming languages by focusing on the most commonly used concepts, which constitute 20% of the language but cover 80% of practical use. This involves identifying and mastering these core concepts to quickly become proficient in any programming language.

๐Ÿ”„ The Ebbinghaus Forgetting Curve

The Ebbinghaus Forgetting Curve illustrates how quickly we forget newly learned information. The narrator explains how revising concepts periodically can significantly enhance retention. This technique, known as spaced repetition, is crucial for learning programming languages and retaining new concepts effectively.

๐Ÿ“š Breadth-First Learning Approach

To tackle the remaining 80% of programming concepts, the narrator advocates for a breadth-first learning approach. This involves gradually expanding oneโ€™s knowledge by building increasingly complex projects. These projects reinforce core concepts through repetition and introduce new ideas in manageable increments, ultimately broadening the learner's expertise.

๐Ÿ”จ The Power of Building Projects

Building projects is highlighted as the most effective way to learn programming languages. Projects offer practical application of core concepts, provide spaced repetition, and introduce new concepts incrementally. The narrator emphasizes the importance of choosing projects with escalating difficulty to ensure continuous learning and skill development.

๐ŸŽฏ Final Tips and Project Recommendations

The narrator concludes by stressing that learning everything about a programming language is unnecessary for practical proficiency. Instead, focusing on building a portfolio of projects not only aids learning but also impresses potential employers. The narrator hints at an upcoming video that will detail five recommended projects for beginners.

Mindmap

Keywords

๐Ÿ’กPareto Principle

The Pareto Principle, also known as the 80/20 rule, states that 20% of your efforts lead to 80% of your results. In the video, this principle is applied to learning programming languages by focusing on the most essential 20% of concepts that cover 80% of the language's practical usage.

๐Ÿ’กBasic English

Basic English was a simplified version of the English language developed to make it easier for non-native speakers to learn. It consisted of only 850 words and simplified grammar rules. The video uses this concept to illustrate how focusing on a core subset of concepts can expedite learning a new programming language.

๐Ÿ’กSpaced Repetition

Spaced repetition is a learning technique that involves reviewing material at increasing intervals to improve long-term retention. The video discusses this method in the context of learning programming languages, suggesting regular review of key concepts to reinforce understanding and memory.

๐Ÿ’กEbbinghaus Forgetting Curve

The Ebbinghaus Forgetting Curve illustrates how information is lost over time when there is no attempt to retain it. The video references this curve to explain the importance of spaced repetition in retaining programming knowledge.

๐Ÿ’กInteractive Learning

Interactive learning involves engaging with the material through hands-on activities rather than passively consuming information. The video advocates for this approach in learning programming, emphasizing the importance of coding exercises and projects over watching tutorials.

๐Ÿ’กBreadth First Learning

Breadth first learning is an approach where one gradually expands their knowledge base by learning concepts that are closely related to what they already know. The video recommends this method for learning programming languages, suggesting building projects of increasing complexity to steadily broaden one's understanding.

๐Ÿ’กTop 20% Concepts

The top 20% concepts in a programming language are the most fundamental and widely used elements, such as basic data types and control structures. The video advises focusing on these concepts first to quickly become proficient in a new language.

๐Ÿ’กProject-Based Learning

Project-based learning involves acquiring knowledge and skills through the active exploration of real-world problems and challenges. The video highlights the importance of building projects to apply and reinforce programming concepts, aiding both retention and practical understanding.

๐Ÿ’กLearning by Doing

Learning by doing is a hands-on approach to education where learners gain knowledge by performing tasks and solving problems. The video promotes this method for learning programming, encouraging viewers to practice coding by working on real projects.

๐Ÿ’กProgramming Languages

Programming languages like Python, JavaScript, and C++ are formal languages used to communicate instructions to a computer. The video discusses strategies for quickly learning new programming languages by focusing on core concepts and practicing through project development.

Highlights

Learned Python, JavaScript, and C++ in a few weeks each.

Struggled with learning the first programming language, Java, spending months watching tutorials.

Delivered a Python project within two weeks of joining Amazon without prior experience.

Used the same approach to quickly learn C++ at Google.

Applied the principles of BASIC English to learn new programming languages quickly.

The top 20% of programming concepts are used in 80% of the code.

Recommends interactive learning over casual learning for better retention.

Emphasizes the importance of spaced repetition for retaining learned concepts.

Suggests building projects with increasing difficulty to expand knowledge.

Stresses that learning new concepts close to what is already known makes the process easier.

Highlights the Pareto principle (80/20 rule) in learning programming languages.

Ebbinghaus Forgetting Curve shows that concepts are forgotten quickly if not reviewed.

Revisiting concepts multiple times through spaced repetition increases retention.

Building projects helps in both spaced repetition and learning new concepts.

Choosing the right projects not only aids learning but also enhances resumes.

Transcripts

play00:00

This is how I learned to code in Python, Javascript and C++ by spending only a few weeks on each

play00:05

of them.

play00:06

But, learning a new language was not always as easy as this.

play00:10

When I learnt my first programming language which was Java, I spent months watching online

play00:14

tutorials and following along.

play00:16

But when I joined Amazon, I delivered a project in Python within the first 2 weeks.

play00:20

I had never written a single line of code in Python before working on this project.

play00:24

Later when I joined Google, I used the same approach to quickly pick up C++ and be useful

play00:28

to my team.

play00:29

And I have done this over and over again to learn other languages like JavaScript, Go

play00:33

and Dart.

play00:34

But, how am I able to do all this?

play00:35

Did I take some magic pill that made me a Python wiz overnight?

play00:38

Truth be told, itโ€™s actually very simple.

play00:41

For thousands of years, great civilizations and powerful leaders have tried to uncover

play00:46

the secrets of learning a new programming language.

play00:52

To find the answer, we have to go all the way back to 1945.

play01:00

World War 2 has just ended and after winning the war, the British want to spread English

play01:05

throughout the world.

play01:06

As you might already know, English is not exactly a very easy language to learn as a

play01:10

non-native speaker.

play01:11

So, they created this simplified version of English called Basic English.

play01:15

Basic English had only 850 words.

play01:17

For comparison, there are around 170,000 total words in English.

play01:22

In addition to fewer words, Basic English also had simplified grammar rules, with a

play01:26

focus on basic sentence structures.

play01:28

To popularize the language, the British used state owned radio called British Broadcasting

play01:32

Corporation or BBC to create a show named โ€œEnglish by Radio ''. This show taught Basic

play01:38

English vocabulary and pronunciation to non-native speakers and was a huge success.

play01:43

But how could just 850 words and a few basic grammar constructs help people learn English?

play01:48

And can we use the same principles to learn a new programming language?

play01:51

To answer that, we need to know a few things about how the languages exactly work.

play01:56

Imagine a circle that contains the top 10% most popular words among the 170,000 total

play02:01

words in English.

play02:03

This circle would contain words like I, me, you, eat, drink etc.

play02:08

Then we have another circle around it that contains the next 20% most popular words.

play02:12

This would contain words like overpaid and programmer which makes sense.

play02:16

And we can keep making these circles until we cover all 170,000 words.

play02:21

In case you are curious, the outermost circle contains words like nincompoop and teetotaler.

play02:27

For simplicity, letโ€™s combine the innermost two circles together and the rest of the circles

play02:31

together.

play02:32

Now imagine that you start reading one of the best novels of our times called โ€œFifty

play02:36

Shades of Greyโ€ which has a total of 150,000 words.

play02:39

What youโ€™ll find is that roughly 80% of these 150,000 words in the book lie in the

play02:44

inner circle and the rest of the 20% words come from the outer circle.

play02:48

For those who donโ€™t know, this is also known as Pareto principle.

play02:51

Pareto principle states that 20% of your effort results in 80% of your outcomes.

play02:56

And this powerful principle is the main idea behind the BASIC English as well as the secret

play03:02

to learning a new programming language really fast.

play03:04

I applied the same principle to learn French and now, โ€œJe peux parler en franรงais mais

play03:09

mon accent est marrantโ€.

play03:10

โ€œLearning a new spoken language is one thing but learning a language that a computer understands

play03:15

is totally differentโ€, you might say.

play03:17

Well, letโ€™s try to test this hypothesis.

play03:18

Letโ€™s build the same circles for the vocabulary of programming languages.

play03:23

What would be the top 10% most popular concepts here?

play03:25

I believe it would include different data types like int, float, strings or Array etc.

play03:30

Maybe โ€œif elseโ€ blocks and for loops would also be part of this circle.

play03:34

Maybe writing functions and classes would also be here.

play03:37

If you move outside to the next circle, you might have concepts like polymorphism and

play03:41

inheritance etc.

play03:42

And you can keep drawing these circles until you reach the outermost circle that might

play03:46

have I donโ€™t know, maybe iterators or generators.

play03:48

Now if you pick all the Github repos in the language of your choice, you will find that

play03:53

80% of the code would be coming from the inner 20% circle.

play03:56

And following what we learnt from the BASIC English example, we will focus on this 20%

play04:01

circle first.

play04:02

But as we do this, we need to be careful about 2 things.

play04:05

Number one, this 20% circle though fairly similar might vary a little bit across different

play04:10

languages.

play04:11

For example, in Java, you might have an Arraylist and you will call it just List in Python.

play04:14

Or in Javascript, you might have async/await which might be very different in other languages.

play04:19

The point is, this top 20% circle might change depending on the language you pick.

play04:23

So, you would want to do your own research on the top concepts for the language of your

play04:26

choice.

play04:27

Number two, when you are trying to learn these concepts, you need to change your method of

play04:31

learning.

play04:32

If you were trying to learn a new spoken language, letโ€™s French for example.

play04:35

No matter how many movies or TV series you watch in French, you will not be able to speak

play04:39

French unless you actually try to talk in French.

play04:42

In the same way, no matter how many lectures or video tutorials you watch in Javascript,

play04:46

you will not be able to code in Javascript unless you actually try to code in Javascript.

play04:50

In a video tutorial, you will usually get the code that already works and if you copy

play04:54

it, sure enough, it will work for you as well.

play04:57

But, programming is the art of breaking and fixing things.

play04:59

Thatโ€™s why I recommend interactive learning instead of casual learning.

play05:03

For example, if you want to learn Python, you can go to learnpython.org and do exercises,

play05:08

break things and fix them as you learn new concepts.

play05:12

Similarly, for Javascript, you can use W3 schools.

play05:15

I am sure you can find this kind of platform in other languages as well.

play05:19

Now that you know what to learn and how to learn it, there are 2 problems left for us

play05:23

to solve.

play05:24

How to remember what we are learning and How to learn the rest of 80% concepts in the circle.

play05:28

To solve the first problem, we need to first understand the Ebbinghaus Forgetting curve.

play05:33

Herman Ebbinghaus was a German psychologist who is well known for his work on memory and

play05:37

learning.

play05:38

He conducted experiments where he would give himself some nonsense words to remember and

play05:42

then test himself at various intervals to see how many of these words he could remember.

play05:46

What he found became the backbone of how we teach kids in the modern school system.

play05:50

What you are seeing is the famous Ebbinghaus Forgetting curve.

play05:53

This graph is a classical exponential decay graph.

play05:56

What this means is that right after we learn something new, we start forgetting it very

play06:00

quickly.

play06:01

But this rate of forgetting slows down over time and in the end, we only retain a small

play06:04

fraction of what we learnt.

play06:06

But what if I tell you that there is a way to retain more of what we learnt.

play06:09

Ebbinghaus also studied the impact of revision on our retention.

play06:13

What he found was that if you review the concepts again, you can increase the number of words

play06:17

you remember in the end.

play06:18

And if you repeat this multiple times, your retention can keep increasing.

play06:22

And this is called Spaced Repetition, which many of you might have already heard about.

play06:26

This is the reason why if you try to learn a new language using an app like Duolingo,

play06:30

they keep repeating the same words again and again in the exercises.

play06:33

But how do we apply the spaced repetition to learning a new programming language?

play06:37

The answer to this question is also the answer to the second problem that we still need to

play06:41

solve.

play06:42

So, letโ€™s quickly cover the second problem and then we will talk about the solution.

play06:45

The other pending problem we have is that we have still not figured out how to learn

play06:49

the remaining 80% of concepts.

play06:51

For this, we need to take a breadth first approach to our learning.

play06:54

What this means is that instead of taking some random long deep path from the inner

play06:58

circle to the outside boundary, we just keep enlarging our inner circle.

play07:02

In other words, we slowly keep increasing the breadth of our knowledge.

play07:05

The biggest advantage of doing this is that we are only learning new things that are close

play07:09

to what we already know and this makes learning them very easy.

play07:13

But how exactly do we do this?

play07:15

To remember more of what we have learnt so far and to learn the remaining 80% concepts,

play07:19

all we need to do is build projects.

play07:22

But not just any projects, we need projects with increasing difficulty.

play07:25

I will tell you which exact projects to build in a moment.

play07:28

But, building projects helps you in 2 ways.

play07:31

Number one, as you build projects, you will encounter the top 20% concepts again and again.

play07:36

And this will help you achieve spaced repetition.

play07:38

Number two, as you build projects, you will need to learn some new concepts on the go.

play07:42

If you choose your projects carefully and slowly increase the difficulty, you can constantly

play07:47

expand your inner circle to become the same size as the outer circle.

play07:51

One thing that you should be aware of though is that you will never be able to learn 100%

play07:55

of what there is to learn.

play07:56

But look at you.

play07:57

You donโ€™t know everything about the language that you speak and you are doing just fine.

play08:00

So, donโ€™t obsess over learning everything.

play08:03

As I mentioned, choosing the right projects is extremely important.

play08:06

Doing this will not only help you learn faster, it will provide you with a portfolio of projects

play08:11

that you can write on your resume to impress the hiring managers.

play08:14

If you want to know about the 5 projects that I recommend to all beginners, you can watch

play08:17

this video.

play08:19

My name is Sahil and I will see you in the next one.

Rate This
โ˜…
โ˜…
โ˜…
โ˜…
โ˜…

5.0 / 5 (0 votes)

Related Tags
Coding SkillsLearning HacksProgramming LanguagesInteractive LearningPareto PrincipleLanguage AcquisitionTech EducationCode MasteryEbbinghaus CurveSkill Development