Published on

How I Learn New Skills

Passion Led Us Here

I still remember when I first started learning to program, I had no clue what I was doing! I was watching YouTube tutorials at the family computer and taking free-form notes on massive sheets of blank paper. I still have these notes stashed away somewhere, I’ll add a picture of them here when I can retrieve one.

I did this for many weeks so that I could start “programming a game”– the ultimate goal for my younger self. I was treating the process like how I might’ve learned math or English in grade school. I remember the many times I “gave up” and decided that coding was too difficult for someone so young.

What I didn’t know at the time was that I was learning how to learn. I was forcing myself to find the solution to each problem I encountered.

It’s not easy, but this is the process that has repeatedly given me a path from knowing nothing to feeling competent in a few things.

1. Start With Curiosity

Curiosity is my main driving force. That and the desire to succeed. Without the curiosity, I wouldn’t have started down any path on my own and without the desire to succeed, I would not continue down these paths. If you find yourself curious about a topic or question, capture that feeling and run with it.

2. Just Try It

In the beginning, this is the hardest part. You don’t even know where to start! This step is filled with self-doubt and resistance. My favorite way to push through the starting phase is as follows:

  1. Watch and learn from others. Start from the most basic concepts. YouTube is typically where I begin; videos feel much more approachable to me in the beginning.

  2. Follow along. Simply watching the video and taking notes is not effective in my experience, you really need to do the thing! For me, that means installing the tools on my machine and typing the code as it is being taught.

    • During this step, feel free to take small tangents by pausing the video and trying something different to see if it works– it probably won’t, but that’s ok! Don’t go too far down these tangents, the purpose is to recognize minor gaps in your understanding.
  3. Persist! I often feel like I’m waisting my time or banging my head against a brick wall– but at some point, things will begin to click, and that is the goal. Sometimes watching (and doing) the same tutorial 3 times is what makes the difference.

3. Assess Your Progress

After a few hours/days/weeks of practice, do you feel like you’re on the right track? Are you enjoying the material? Do you think there’s a better resource out there to learn from? These are questions I ask myself on a regular basis when learning something new and it allows me to make tweaks to my learning strategy. Don’t take this step lightly; think about your goals and think about the progress you’ve already made.

4. Go Fail

This is my favorite step. The goal is to learn how much you don’t know by trying to apply this knowledge. There are certainly several ways you can go about this, here are my favorites:

  • Create a fake YouTube video of you teaching the material you just learned
  • Try to build a program that seems achievable with your current knowledge

When doing either of these, you’ll hopefully spot large gaps in your understanding. It works for me every time! It's important to know when to stop and move on to the next step. Typically I’ll stop once I know what the next big thing I need to learn is.

5. Identify, Patch, Repeat

Once you’ve identified the “next big thing” you should learn, it’s time to patch those gaps by going back to step 2.

The goal is to loop between steps 2 thru 5. Hopefully the amount of time you spend per-cycle decreases as your gaps begin to shrink and you improve your learning strategy. That said, there will be challenges as you advance that take longer than anticipated, so don’t fixate on your speed of progression.

That’s It!

I’ve used this strategy to learn nearly every programming language I know, every framework, and even learning skills like 3D modeling, video editing, and more.

I wrote in a recent blog post that “Most of my side-projects are a side-effect of learning new technologies,” and this technique is exactly why. At some point I “Go Fail” and end up succeeding– what a great feeling that is.

Common Pitfalls

I’ve noticed myself getting caught in these pitfalls before, I’d like to share them to save you some time:

  • Learning doesn’t happen on social media.
    • Watching Instagram stories or reading tweets may feel insightful, but doing will teach you so much more.
  • Don’t set expectations.
    • Goals ≠ Expectations. Expectations will lead to disappointment and frustration, goals will evolve and motivate.
  • Drugs will not help you learn.
    • Especially in the beginning, drugs will distort your perceptions and/or slow you down. Be as objective as possible when learning a new skill.
  • Make time to learn.
    • I understand how difficult it can be to learn something new if you’re working a full-time job. All I can say is make the time... easier said than done!
    • Consistent practice is key. It’s almost exponential. The more time you put in each day, the faster you’ll grow. Three hours a day is better than one hour a day. 7 days a week is better than 3 days a week. Taking a week off is death.
  • Stay curious!
    • That curiosity is the main driving force for me and it keeps me from staying stagnant. Whatever your driving force is, recognize it, and nurture it.
  • Check the ROI.
    • Life is short and there are a trillion things you can invest your time into. If your goal is to make a living from this new skill, check and see how much the average person is making. It may influence your next steps.
  • Don’t pay for knowledge.
    • The only exception I’d make is for a highly recommended book. Technical books have never disappointed me.
    • For programming, the Internet is filled with amazing (free) resources. Paid courses are always just repackaged information and rarely go into depth on a topic.