The Learning Algorithm

The Learning Algorithm

When I moved from Puerto Rico to Chile in High School I took a programming class that changed my life. Because of the difference in school years, the class had already stared at the new school. So my teacher gave me the book and a series of problems to solve through self-study. If I was able to finish them by the end of the class then I'd get a passing grade.

How Do I Learn?

People think I spent most of my time teaching, but the reality is that most of my time is spent writing (for teaching) and learning. My learning approach hasn't changed much since high school. It goes something like this:

  1. Learn by reading documentation or watching videos
  2. Take notes of what I consider important
  3. Practice as soon as possible
  4. Teach it to someone else

Let's go through these.

Learning Often

Giving yourself time and permission to learn is probably the most important skill to develop. If I take 30 minutes to learn something that will eventually save me hours, then it makes sense to spend the time doing it. Although I learn by reading or watching videos or reading documentation, it doesn't really matter how you learn. Different people enjoy different types of learning.

No alt text provided for this image

According to the 2021 Stack Overflow survey, almost 60% of the more than 80k respondents learned how to code from online resources. That's compared to 54% from school and 51% from books/physical media. Whichever way you choose to learn, this is a critical skill for developers.

Take Actionable Notes

No alt text provided for this image

If you don't have time to practice right away, then go over your notes as soon as possible. Try to?revise and add to them . The note taking process can be a stressful exercise. Research shows that going over your notes and reviewing shortly thereafter can help you learn faster.

The difference between normal notes and then ones I use for learning is that I focus on writing things I want to practice later. I learn from videos, documentation or articles, so those are easily bookmarked for access later. Learning materials can have a lot of fluff, so I'm really interested things I want to reinforce with practice.

Practice with Purpose

It's tough to learn something well that's not going to be useful in the future, so reading documentation is a waste unless you're willing to do something with it.

If you're reading from documentation, try to give yourself a realistic problem that will help you expand your knowledge about the topic.

Teach it

No alt text provided for this image

This is one secret all teachers know. The best way to understand something is to try to explain it. One of the ways I did this in high school is by becoming a lab assistant. Having to help people with their own problems made me really dig into topics.

If you've taken some of my courses, you know that I am almost always building something on each course. I always learn with more purpose if I have a goal in mind.

What does Research Say?

Little did I know that the way I was learning in high school was being codified by researchers and instructors for decades and formalized in the 70's by Malcolm Knowles as the?learning principles ?for adult learners.

No alt text provided for this image

The focus of the book is on Andragogy: how and why adults learn. I think it maps well to how I learned programming in high school. Here's the key concepts.

Prior Experience?- Learners have a wide range of experience levels

Self-concept?- Learners like to feel like they're in charge

Need to know?- Learners want to know why they need to learn something

Motivation?- Learners are better motivated by internal pressures

Readiness?- Learners want training when they need to know something

Orientation?- Learners are encouraged by solutions to real problems

I'm going to skip the first two here, since I they're self-explanatory. Different learners clearly have difference experience level and they also like to feel like they're in charge. Those are things that all teachers think about when teaching a topic. Let's talk about the others.

Need To Know

You will be more successful learning if you understand why you need to learn something. When I taught in college one or more students would always want to know why something was important. What they were really saying is why do I need to learn this? What's in it for me? I don't blame them. CSS and JavaScript are getting ridiculously complicated.

That's why in my approach to note taking I don't write down everything, just the things that I think are important enough to remember or try. If I don't feel like I need to learn something, I'm just going to look it up again later.

Motivation

This relates to another concept in Andragogy. We can be motivated by all types of things, an increased salary, a new job title, etc. The motivations that work the best are things like job satisfaction, self esteem and quality of life.

How does this translate to practical learning for developers? For me, I choose to learn things that will improve my quality of life as a developer. I don't worry about using shiny new frameworks (although it's my job to cover them) unless I think that it's going to substantially improve my quality of life.

My blog, for example has gone from Jekyll to Eleventy and I'm now thinking it's time to try Astro. Besides the fact that it's my job to stay ahead, Switching from one platform to another was motivated by making the blog easier to update.

If you don't work on having a motivation to learn something, you're not going to be successful.

Orientation

People want to learn from real world problems. That's my problem with a lot of documentation and even some tutorials. I teach the same way I learn...by working on something realistic.

It's pretty popular to see things like this on social media today.

No alt text provided for this image

A bit of code that explains how promises work. I love seeing those, but I rarely use them to learn. That's because the problems aren't taught or presented in context.

This is from a course I did that shows you not just the code for the spread operator, but how you might use it to solve a problem you can relate with.

If you see a code png or gif on social media and it's something you want to try later...bookmark or save the code and then make a note to try it later. Try modifying the code for some extra retention.

Readiness

People don't learn new things until they have to. That's the reason that developers use Google or Stack Overflow so much. Deadlines are a fantastic way to learn, so you can create your own by defining some accountability.

No alt text provided for this image

Recently, GitHub announced access to its?code search engine . Some of this functionality was already in GitHub, but now GitHub launched it as it's own service programmed with Rust for ultimate speed.

Here's some techniques to target your readiness. As a boss, you can ask your workers to talk about a new topic at a meeting, or ask them to have a day of learning where they get to share what they learned with each other. Writing a regular blog post and having a weekly stream is definitely motivating me to learn new things constantly.

Learn More

No alt text provided for this image

In the?next episode ?of The Toolbox, I'll be talking about learning and give you more examples of how I approach it. I'll show you a demo of the GitHub's Code Search as well asa a new Terminal I'm beyond excited about called Warp. Click below to get an invite and see you then.

Tim Brockman

Builds Intelligent Software Solutions

2 年

Thanks for the great article. It's really helpful to keep the intent of teaching in the back of my mind when studying. It helps me stay focused. Especially if I'm studying to fulfill a requirement or pass a cert.

Laurice Kennel

Production Support Engineer at City of Philadelphia, Opera Singer

2 年

Great article. Lots of actionable information I can use in my own learning process. Thanks!

要查看或添加评论,请登录

Ray Villalobos的更多文章

  • It's PLAI time

    It's PLAI time

    Since I've started teaching about Artificial Intelligence at LinkedIn and Stanford, I get a lot of questions about how…

  • The Ubiquitous 360

    The Ubiquitous 360

    I meet lots of people who wonder if AI will be a fad, like Web3 or other past technology bubbles. However, AI is…

    1 条评论
  • The Subtle Changes

    The Subtle Changes

    Many important changes go unnoticed, but they can be indicative of AI's future direction. Some of these don't seem…

    2 条评论
  • The Marketing Age

    The Marketing Age

    Something funny happened on the way to AGIs. Although we are getting excellent assistance from the modern crop of AI…

    5 条评论
  • The AI Edit

    The AI Edit

    When AI does something you weren't expecting it sort of shocks you. I wasn't really expecting it to be good at a lot of…

    9 条评论
  • The 2024 Paradox

    The 2024 Paradox

    We got a decade of activity in 2023 with Chat GPT exploding into the scene, becoming the fastest growing product in the…

    1 条评论
  • The Auspicious Reboot

    The Auspicious Reboot

    I know. It's been a while since I posted an episode of the newsletter and so much has happened since.

    2 条评论
  • Hold on to Your Bots

    Hold on to Your Bots

    Last year, I thought I'd start 2023 with a new series..

  • The Future Proof

    The Future Proof

    Are you ready for 2023? It's going to be a wild ride. Everyone's worried about Chat GPT, GPT3 and all of the AI that's…

    2 条评论
  • The Missing Fear

    The Missing Fear

    When I hear from developer managers and people looking for developers, one topic keeps coming up. How do you get…

社区洞察

其他会员也浏览了