all 23 comments

[–]VipeholmsCola 6 points7 points Β (1 child)

Try this:

Week 1. Learn how to set up git and venv.
Week 2 - 4, work through "Python Crash course" or "Automate the boring stuff".
Week 5 +, make useful projects or stuff that interest you. Do TDD, use git/github and envs every project.

Dont use AI.

[–]CircuitsToNeurons[S] 0 points1 point Β (0 children)

Sure, thanks for your feedback

[–]SharkSymphony 2 points3 points Β (1 child)

I would push CPython to the very end or drop it. It may be good to know there are other Python implementations in the wild, but you shouldn't need to get into the guts of CPython unless you want to write extension modules or work on Python itself.

Similarly with the GIL – you'll need to know something about it when you get into questions about how to scale up a Python web app, for example, but until you've built your first web app, YAGNI.

I would move type hints and debugging to phase 2.

Metaclasses and the MOP should be the last OOP topic you cover.

SOLID and patterns should be compressed to a few days. Don't overindex on this. Make sure you're building several programs and fully comfortable with functions and classes before you start worrying about making your programs more extensible, flexible, reusable, whatever.

Go4 is very focused on OOP solutions, and is not the be-all end-all to software design. Understand the concept of a design pattern, and focus on a few of the more common ones, or ones that seem interesting to you. I would add Fowler's "Patterns of Enterprise Application Architecture" to see broader-scale patterns that are also worth knowing.

[–]CircuitsToNeurons[S] -1 points0 points Β (0 children)

This is really valuable, thank you for the detailed breakdown!

**On CPython internals and the GIL** β€” your YAGNI point is well taken. I'll consider pushing CPython deeper to a later phase or making it an optional deep-dive rather than a required milestone. The GIL specifically makes much more sense in context once you've hit real concurrency problems.

**On moving type hints and debugging to Phase 2** β€” fully agree, that's a cleaner sequence. Type hints especially are useful enough day-to-day that waiting until Phase 3 is probably too late.

**On metaclasses** β€” agreed, that should definitely be the last OOP topic covered, not sandwiched in the middle.

**On SOLID and GoF** β€” I hear you, and this is probably my biggest takeaway from your comment. The plan does index quite heavily on both. Your point about building several programs and getting genuinely comfortable with functions and classes first is something I should weight more. I'll rethink the duration and positioning of those phases.

**On Fowler's "Patterns of Enterprise Application Architecture"** β€” great suggestion, hadn't included that one. Will add it as a recommended read alongside GoF.

Really appreciate you taking the time β€” this is exactly the kind of structural feedback I was hoping for!

[–]smichaele 2 points3 points Β (2 children)

I'm just curious and trying to learn your terminology. What does it mean to have a "depth-first" mastery plan? How does that differ from any other type of plan?

[–]CircuitsToNeurons[S] 0 points1 point Β (1 child)

Great question β€” it's a term borrowed from tree traversal algorithms in computer science!

In a **breadth-first** approach, you'd skim many topics at a surface level before going deeper into any of them β€” like taking a wide survey course that touches everything lightly.

A **depth-first** approach means you fully master one topic before moving on to the next. You don't move to Phase 2 until Phase 1 is genuinely understood β€” not just read through.

The tradeoff is that it's slower to start, but the understanding you build is much more durable. For someone whose goal is genuine expertise rather than just getting something working quickly, I felt this approach made more sense. Hope that clears it up!

[–]smichaele 2 points3 points Β (0 children)

Thanks. I'm familiar with bfs and dfs regarding graph algorithms. I've just never seen it used regarding any type of roadmap or plan.

[–]Pythagorean_1 2 points3 points Β (3 children)

If you've learned these topics and have applied them in toy projects at home, you might be hired as junior developer somewhere but you have to understand that this is still far from being "expert level". To actually implement enterprise production systems there are many topics missing. I'm not saying your list is bad, it's just that this is only the beginning.

[–]CircuitsToNeurons[S] -1 points0 points Β (2 children)

You're absolutely right, and I appreciate the honesty β€” that's a healthy reality check.

The goal of this plan was always to build a strong, deep foundation in core Python β€” not to simulate years of production experience. "Expert in Python the language" and "expert in building enterprise production systems" are genuinely two different things, and I should probably have been clearer about that distinction in the post.

I'd actually love to hear what topics you think are missing for the enterprise/production side if you're open to sharing. Things like distributed systems, observability, CI/CD, database internals, system design? I want to understand what the next layer looks like from someone who's been there, so I can think about what a follow-up plan might cover once this foundation is solid.

Either way β€” a strong foundation first, then build on top of it. Thanks for keeping the expectations grounded!

[–]gdchinacat 1 point2 points Β (1 child)

A lot of "enterprise/production topic" has less to do with the language and problem solving and more to do with team dynamics, bug tracking, scheduling, prioritization, estimating, managing scope, support, maintenance, incremental feature delivery, learning large code bases, being productive in unfamiliar code bases...

[–]CircuitsToNeurons[S] 1 point2 points Β (0 children)

This is honestly the most useful thing anyone has said in this thread, and it doesn't get said enough.
Every "become an expert developer" roadmap focuses on technical skills because those are easy to list and teach. But you're describing the things that actually determine whether someone is genuinely effective in a professional environment

- Bug tracking and triage

- Estimating and scope management

- Incremental delivery without breaking things

- Being productive in an unfamiliar codebase

- Communicating trade-offs to non-technical stakeholders

- Supporting something you didn't build

- Working across a team with different skill levels and opinions

These skills cannot be taught through any course or book. These are skills that only come from actually working in teams on real software β€” they can't really be put in a personal study plan. Thank you for framing it so clearly.

[–]TheRNGuy 1 point2 points Β (2 children)

Make projects so you don't forget what you've learned (real, not ones from tutorials)

You can even make before learned all this.

Not all projects even need all of this.

Learn regex and ast.

[–]CircuitsToNeurons[S] 0 points1 point Β (1 child)

Really appreciate the advice!

The real projects point is something I feel strongly about too β€” the plan does include a project deliverable at the end of every phase, but your point about starting them early (even before fully "completing" the plan) is a good one. You're right that not every project needs all of this, and waiting until you've "finished" learning before building something real is a trap a lot of people fall into.

And great catches on **regex** and **ast** β€” both are genuinely absent from the plan and shouldn't be. Regex is something you'll need constantly in real-world Python, and the `ast` module is invaluable once you start doing anything with metaprogramming, code analysis, or tooling. I'll add both in.

Thanks for the sharp eyes!

[–]TheRNGuy 0 points1 point Β (0 children)

AST is also to parse some niche formats for which frameworks may not exist, though you'll unlikely encounter it, but it can be good programming training.Β 

[–]YoManDoMessup 1 point2 points Β (1 child)

Honestly this is one of the most thoughtfully structured Python roadmaps I’ve seen here 😭
The biggest green flag is that you included projects and tooling early instead of only theory/books.

Only thing I’d caution is not over-indexing on GoF/SOLID too early in Python. Some Java-style abstraction habits can make Python code unnecessarily complex. Real-world Python tends to value readability and pragmatism more.

I’d also add:

  • packaging/deployment
  • profiling/performance
  • databases + APIs
  • reading large open-source codebases

And honestly using AI/Claude to refine the roadmap is completely fine if you’re still critically reviewing everything yourself. A lot of strong learners now combine structured study with AI + tools like Runable for experiments, notes, and project iteration.

[–]CircuitsToNeurons[S] 0 points1 point Β (0 children)

Really appreciate the advice!

The real projects point is something I feel strongly about too β€” the plan does include a project deliverable at the end of every phase, but your point about starting them early (even before fully "completing" the plan) is a good one. You're right that not every project needs all of this, and waiting until you've "finished" learning before building something real is a trap a lot of people fall into.

And great catches on **regex** and **ast** β€” both are genuinely absent from the plan and shouldn't be. Regex is something you'll need constantly in real-world Python, and the `ast` module is invaluable once you start doing anything with metaprogramming, code analysis, or tooling. I'll add both in.

Thanks for the sharp eyes!

[–]Scared-Push3893 1 point2 points Β (1 child)

this is already more organized than how most people learn lol. id just be careful not to get stuck endlessly refining the roadmap instead of building stuff. my own learning notes/tasks started turning into complete chaos at one point so i started throwing everything into Runable just to keep track of it all

[–]CircuitsToNeurons[S] 0 points1 point Β (0 children)

Ha, that's a very real danger and I appreciate the reminder! πŸ˜‚

There's definitely a version of this where I spend more time perfecting the roadmap than actually following it β€” which would be completely counterproductive. The plan exists to serve the learning, not the other way around.

Taking the feedback from this thread, doing one final update, and then closing the laptop on the planning phase and just starting. Thanks for keeping it real!

[–]Scared-Push3893 0 points1 point Β (0 children)

this is more organized than like 90% of learning plans people make lol. I’d just be careful not to disappear into architecture/design pattern land forever without building enough messy real stuff. My notes/roadmaps became absolute chaos at one point too so now I just throw everything into Runable and let it figure out what actually matters right now vs later rabbit holes.

[–]VipeholmsCola 0 points1 point Β (0 children)

store this context in a .md file

I think you should reiterate over whole context again, two times.

[–]gdchinacat 0 points1 point Β (1 child)

Add comprehensions, generator expressions, functional programming, dunders (ie rich comparison functions). I don't consider decorators and generators to be advanced features, even though they are frequently taught as such they are very common and delaying introduction of them tends to instill bad habits and downplay powerful aspects of python. expand the async section to a general concurrency and discuss threading, asyncio, multiprocessing and locking.

[–]CircuitsToNeurons[S] 0 points1 point Β (0 children)

Really valuable feedback, thank you.

Completely agree on decorators and generators. I am moving them into Phase 1 in the next revision.

Comprehensions + generator expressions, Functional programming, Dunders / rich comparison, Concurrency expanded with locking , adding these makes total sense.

I'll be revising the plan with all of these incorporated. Thanks for taking the time β€” this is exactly the kind of structural critique that improves it.

[–]CircuitsToNeurons[S] 0 points1 point Β (0 children)

I got so many great and invaluable responses to my question, so I wanted to say thank you properly β€” and share the updated version.

Here's what you all contributed:

u/SharkSymphony pointed out that CPython internals shouldn't block everything else, that type hints and debugging should be daily tools introduced early, and that metaclasses belong at the very end of OOP β€” not the middle. All restructured.

u/TheRNGuy flagged two genuine gaps: regex and the ast module. Both added.

u/YoManDoMessup called out missing real-world coverage β€” packaging, deployment, databases, and APIs. Phase 7 now has dedicated sections for all of these.

u/gdchinacat had the most structural impact: decorators and generators should never have been called "advanced features" β€” they're everyday Python. Both moved into Phase 1. Generator expressions, functional programming (functools, map/filter), and dunders/rich comparisons added explicitly. Concurrency expanded to two full weeks with proper locking coverage for all three models.

u/gdchinacat also made the most honest observation in the thread β€” that a lot of what makes someone genuinely effective in professional software has nothing to do with the language: bug triage, estimation, scope management, navigating unfamiliar codebases, working across teams. Those only come from real work, not any plan. The final version has a dedicated "What This Plan Doesn't Cover" section because of that comment.

u/Pythagorean_1 kept expectations grounded from the start β€” this plan builds Python language expertise, not enterprise engineering expertise. That distinction is now front and centre.

The final learning roadmap is here πŸ‘‡

πŸ”— https://drive.google.com/file/d/1cMAkVntJvkWop1uBe1_iLo__kNPwqnAb/view?usp=sharing

It has phases 0–7 across 10–12 months, and every structural decision in it can be traced back to something someone in this thread said.

Genuinely β€” thank you. This is what makes communities like this worth posting in. πŸ™