How to Learn Python

About This Note

These notes are based on the talk “How to Learn Python” from Python Unplugged on PyTV.

The speaker is Mark Smith, Head of Python Ecosystem at JetBrains.

What I liked about this talk is that it was not only about Python resources. It also shared practical advice on how to learn programming more effectively, along with a few mindsets that are useful for long-term growth.

The 3 Stages of Learning

One of the main ideas from the talk is that learning has three parts, and you should work on them at the same time because they support each other.

Stage 1 - Learning by copying

This stage is about learning the basics and becoming familiar with core concepts.

Helpful resources include:

  • Tutorials

    • The official Python tutorial on Python.org
    • Django Girls
  • Online courses

  • Mini-challenges
    These are easy to overlook, but they are very useful.

  • Books

    • Learning Python — Mark Lutz
    • Django for Beginners: Build Modern Web Applications with Python — William Vincent
  • Interactive practice

    • JetBrains Academy

Stage 2 - Learning by Doing

This feels like the most important stage.

At some point, you need to stop only following along and start building things yourself. Your projects do not need to be big or impressive.

You don’t learn to climb mountains by going around them… you learn to climb mountains by climbing mountains. — Frank Dick

Ways to learn by doing:

  • Work through exercises from books
  • Build small projects
  • Recreate something you like in a simplified way
  • Explore something just because it seems fun
  • Contribute to open source

Project idea books mentioned or related to this approach:

  • Python Crash Course — Eric Matthes
  • Tiny Python Projects — Ken Youens-Clark
  • The Big Book of Small Python Projects — Al Sweigart

You can also use coding challenges for practice:

Stage 3 - Learning by Studying

This stage is about learning from other people and from existing code.

Ideas:

  • Read code written by others, including open-source projects
  • Learn from experienced developers through:
    • blogs
    • social platforms such as Mastodon or Bluesky
    • YouTube
    • newsletters
  • Read books that improve how you think about programming

Recommended books:

  • The Programmer’s Brain: What Every Programmer Needs to Know About Cognition — Felienne Hermans
  • Python books by Al Sweigart

Advices

1. Programming is a team sport

It helps a lot to learn with other people.

A good setup is to have a learning buddy who is:

  • at a similar level, or
  • slightly more experienced than you

That makes it easier to ask questions, stay motivated, and keep going.

2. Turn off AI completion while learning

AI tools can be helpful, but if they complete everything for you too early, they can reduce the struggle that helps you learn.

When you are still building foundations, it is important to think through the code yourself.

3. Learning can feel overwhelming

When there is too much to learn, it helps to narrow your focus:

  • pick one thing
  • learn that thing
  • repeat

4. Learn your tools gradually

You do not need to master everything at once, but you should slowly become more comfortable with the tools you use.

5. Do not be afraid of error messages

Error messages are part of learning.

Learning with LLMs

Use LLMs in a way that supports your thinking instead of replacing it.

AvoidBetter approach
Asking the LLM to write the whole solution for youWrite your own solution first
Using the LLM immediately when you get stuckTry first, then use it to unblock yourself
Letting the LLM design everythingAsk it to help break down the problem
Agreeing with everything it saysAsk it to critique your work
Treating the LLM like a friend who will always support youTreat it more like a teacher who challenges your thinking
Delegating your thinkingKeep thinking for yourself

A Note on AI and Coding

Coding is changing quickly, and AI agents can be very useful. But they are most useful after you have learned how to write code yourself.

Learning as an Experienced Developer

A few useful reminders:

  • Perfect is the enemy of progress. Write something that works first, then improve it.
  • Do not fall behind on purpose. Keep learning new things over time.
  • Follow newsletters, podcasts, and the broader Python ecosystem to stay current.
  • Learning programming is a long journey. It is really an ongoing process of self-improvement.

References

  • Talk: How to Learn Python on PyTV