Learn Python with Talk Python's 270 hours of courses

10 Tips and Ideas for the Beginner to Expert Python Journey

Episode #427, published Sat, Aug 19, 2023, recorded Wed, Jul 19, 2023

Getting started in Python is pretty easy. There's even a t-shirt that jokes about it: I learned Python, it was a good weekend. But to go from know how to create variables and writing loops, to building amazing things like FastAPI or Instagram, well there is this little gap between those two things. On this episode we welcome Eric Matthes to the show. He has thought a lot about teaching Python and comes to share his 10 tips for going from Python beginner to expert.


Watch this episode on YouTube
Play on YouTube
Watch the live stream version

The 10 tips:

* Know your goals
* Have a project in mind
* Don’t limit your learning to what’s needed for your project
* Read good code
* Know your tools
* Learn how to test your code
* Know what’s good enough for any given project
* Embrace refactoring
* Write things down
* Go meet people

Episode Deep Dive

Guests Introduction and Background

Eric Matthes is an experienced Python educator and author of Python Crash Course (No Starch Press). He taught in public schools for many years, focusing on math, science, and programming. Eric’s unique path includes watching his father program kit computers in the 1970s, studying physics, teaching students of all ages, and eventually writing one of the best-selling Python books on the market. He also writes a weekly newsletter called Mostly Python on Substack, exploring deeper technical topics and teaching Python enthusiasts of all levels.

What to Know If You're New to Python

If you’re relatively new to Python and want to get the most from this conversation, keep these essentials in mind:

  1. Understand that Python’s simplicity means it’s easy to learn basics quickly but there’s always more depth to explore.
  2. Having a small project in mind helps you apply fundamental concepts (like for loops or conditionals) in meaningful ways.
  3. Expect to evolve your code as you learn. Refactoring is normal and a sign of growth.
  4. Big web frameworks like Django or FastAPI may feel advanced, but simple examples and personal projects will guide your learning path.

Here are a few resources to go deeper:

  • Python Crash Course: Eric’s book for beginners who want a project-based way to learn Python fundamentals.

Key Points and Takeaways

  1. Bridging the Gap from Beginner to Expert Many people learn Python basics (variables, loops) in a short time, but reaching expertise requires deeper exploration of projects, workflows, and community practices. Python's ecosystem includes an incredible variety of tools and libraries—what distinguishes experts is the ability to apply these tools appropriately in real-world scenarios and keep refining their understanding.
    • Links and Tools:
      • FastAPI (an example of an advanced framework you might grow into)
      • Instagram (mentioned as a large-scale Python use case)
  2. Define Your Goals Eric stressed the importance of clarifying why you’re learning Python—be it for a career shift, to automate tasks, or simply for curiosity. Having explicit objectives will direct your energy and keep you motivated when the initial excitement tapers off.
  3. Have a Project in Mind Coding is more meaningful if you apply concepts to a concrete project you care about (e.g., climate data analysis, a personal website, or an IoT gadget). This approach helps you see immediate value and guides which parts of Python you focus on first.
    • Links and Tools:
      • Django (for web projects)
      • PyCon US (where you can meet others and find project inspiration)
  4. Don’t Limit Learning to Your Immediate Needs While a project provides focus, staying curious about broader Python topics (e.g., concurrency, data science tools, new syntax) will pay dividends later. This also keeps learning fun and positions you to tackle new challenges as they arise.
    • Links and Tools:
      • Mostly Python (Eric’s newsletter covering varied Python topics)
  5. Learn How to Test Your Code Testing is simpler than many fear. Start with end-to-end or high-level tests to ensure your application works as expected. Tools like pytest make this process straightforward, giving you confidence in your software and freeing you to experiment without fear of breaking everything.
  6. Embrace Refactoring Great code rarely appears in its final form immediately. Instead, write a working version first, then refine it step by step. Python’s flexibility (and helpful testing) encourages continuous improvement rather than getting stuck on perfect designs from the outset.
    • Links and Tools:
      • Heroku (discussed as an easy way to deploy, then refactor for new platforms later)
      • Code Smells (general concept, not Python-specific, but relevant for refactoring)
  7. Read Good Code Reading code from established open-source projects (like matplotlib or Pandas) can be intimidating, but it’s one of the best ways to see how experienced teams structure, document, and refine their code. Pay special attention to how they handle complexity and readability.
    • Links and Tools:
      • GitHub (huge resource for discovering open-source Python projects)
  8. Know Your Tools (IDE, Version Control, etc.) Invest time learning your editor or IDE. Tools like Visual Studio Code and PyCharm offer features like auto-formatting, linting, and built-in testing. A basic grasp of git and GitHub (or any version control system) will also help you collaborate and experiment confidently.
  9. Meeting People and Community Engagement Python’s community is famously welcoming. Attending local meetups, joining online forums, or going to bigger conferences like PyCon opens doors to collaboration, feedback, job opportunities, and long-lasting friendships.
    • Links and Tools:
      • PyCon US
      • Local Python user groups (search your city + “Python meetup”)

Interesting Quotes and Stories

  • On Quick Learning vs. Depth: “There’s a T-shirt that jokes ‘I learned Python. It was a good weekend,’ but there’s always more to discover beyond loops and variables.”
  • Growing Through Real Problems: Eric shared a story about using Python to analyze damage at a shipping company, ultimately discovering systemic issues that saved money and changed corporate policy.
  • Love of Teaching: Eric talked about bridging science/math topics and programming, seeing parallels in how both require methodical thinking and clarity.

Key Definitions and Terms

  • Refactoring: Improving the design of existing code without changing its functionality.
  • End-to-End Testing: Testing a complete workflow (e.g., from user input to final output) rather than individual functions in isolation.
  • Code Smells: Symptoms in code that might indicate deeper design problems, e.g., excessively long functions or misleading variable names.
  • Virtual Environments: Isolated Python environments where dependencies are managed to prevent conflicts between projects.

Learning Resources

Here are a few places to deepen your knowledge on testing, frameworks, and beyond:

Overall Takeaway

Moving from a Python beginner to a confident, capable developer isn’t a simple “weekend” affair—it’s an ongoing journey of hands-on projects, understanding core fundamentals, testing and refactoring your code, and connecting with the vibrant community around you. By embracing curiosity, continuous learning, and collaboration, you’ll keep leveling up and discovering more of what makes Python such a powerful and rewarding language.

Links from the show

Eric on LinkedIn: linkedin.com
Mostly Python Newsletter: mostlypython.substack.com
Python Crash Course Book: nostarch.com
Watch this episode on YouTube: youtube.com
Episode transcripts: talkpython.fm

--- Stay in touch with us ---
Subscribe to Talk Python on YouTube: youtube.com
Talk Python on Bluesky: @talkpython.fm at bsky.app
Talk Python on Mastodon: talkpython
Michael on Bluesky: @mkennedy.codes at bsky.app
Michael on Mastodon: mkennedy

Talk Python's Mastodon Michael Kennedy's Mastodon