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:
- Codewars
- Python Morsels
- Advent of Code, 2025
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.
| Avoid | Better approach |
|---|---|
| Asking the LLM to write the whole solution for you | Write your own solution first |
| Using the LLM immediately when you get stuck | Try first, then use it to unblock yourself |
| Letting the LLM design everything | Ask it to help break down the problem |
| Agreeing with everything it says | Ask it to critique your work |
| Treating the LLM like a friend who will always support you | Treat it more like a teacher who challenges your thinking |
| Delegating your thinking | Keep 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