I’m also a little confused about what you’re aiming to learn!
There are lots of gaps in my Python knowledge (this applies to my CS knowledge in general as well) and I’m trying to close those gaps. I asked gilch about decorators because I encountered them in pytest and was very confused about how they worked.
I didn’t have a project in mind, when I signed up for this apprenticeship, I just saw gilch offering to teach Python and thought I wanted to get better and learning from a mentor could be great.
I have attempted to contribute to open source in the past but have failed (ran into issues building things locally and didn’t know how to get help), would love to try again.
Leaning in to current confusions on e.g. decorators makes sense :-)
To ask a slightly different question—what kind of thing do you want to do with Python? It’s a large and flexible language, and you’d be best served focussing on somewhat different topics depending on whether you want to use Python for {scientific computing, executable psudeocode, web dev, async stuff, OSS libraries, ML research, desktop apps, etc}.
I’ll also make the usual LW suggestion of learning from a good textbook—Fluent Python is the usual intermediate-to-advanced suggestion. After than I learned mostly by following, and contributing to, various open source projects—the open logs and design documents are an amazing resource, as is feedback from library maintainers.
For open-source contributions, you should expect most of the learning curve for your first few patches to be about the contribution process, culture, and tools, and just navigating a large and unfamilar codebase. These are very useful skills though! If you need someone to help get you unstuck, I’m on the Pytest core team and would be happy to help you (or another LWer) with #3426 or #8820 if you’re interested.
Out of the things you listed, scientific computing & OSS libraries are things I want to explore more. I also don’t just want to learn Python—although I have chosen Python to be the language to try to get pretty good at—my goal is to get myself a proper CS education. I think it would be difficult to truly get good at a language without understanding how things work underneath.
The skills of ‘working on an existing project’ I mentioned above are not usually covered as part of a CS education, but complementary skills for most things you might want to do once you have one. I also agree entirely with gjm; you’ll learn a lot any time you get hands-on practice with close feedback from a mentor.
For OSS libraries, those pytest issues would be a great start. Scientific computing varies substantially by domain—largely with the associated data structures, being some combination of large arrays, sequences, or graphs. Tools like Numpy, Scipy, Dask, Pandas, or Xarray are close to universal though, and their developers are also very friendly.
There are lots of gaps in my Python knowledge (this applies to my CS knowledge in general as well) and I’m trying to close those gaps. I asked gilch about decorators because I encountered them in
pytest
and was very confused about how they worked.I didn’t have a project in mind, when I signed up for this apprenticeship, I just saw gilch offering to teach Python and thought I wanted to get better and learning from a mentor could be great.
I have attempted to contribute to open source in the past but have failed (ran into issues building things locally and didn’t know how to get help), would love to try again.
Leaning in to current confusions on e.g. decorators makes sense :-)
To ask a slightly different question—what kind of thing do you want to do with Python? It’s a large and flexible language, and you’d be best served focussing on somewhat different topics depending on whether you want to use Python for {scientific computing, executable psudeocode, web dev, async stuff, OSS libraries, ML research, desktop apps, etc}.
I’ll also make the usual LW suggestion of learning from a good textbook—Fluent Python is the usual intermediate-to-advanced suggestion. After than I learned mostly by following, and contributing to, various open source projects—the open logs and design documents are an amazing resource, as is feedback from library maintainers.
For open-source contributions, you should expect most of the learning curve for your first few patches to be about the contribution process, culture, and tools, and just navigating a large and unfamilar codebase. These are very useful skills though! If you need someone to help get you unstuck, I’m on the Pytest core team and would be happy to help you (or another LWer) with #3426 or #8820 if you’re interested.
Out of the things you listed, scientific computing & OSS libraries are things I want to explore more. I also don’t just want to learn Python—although I have chosen Python to be the language to try to get pretty good at—my goal is to get myself a proper CS education. I think it would be difficult to truly get good at a language without understanding how things work underneath.
Also, what gjm said.
The skills of ‘working on an existing project’ I mentioned above are not usually covered as part of a CS education, but complementary skills for most things you might want to do once you have one. I also agree entirely with gjm; you’ll learn a lot any time you get hands-on practice with close feedback from a mentor.
For OSS libraries, those pytest issues would be a great start. Scientific computing varies substantially by domain—largely with the associated data structures, being some combination of large arrays, sequences, or graphs. Tools like Numpy, Scipy, Dask, Pandas, or Xarray are close to universal though, and their developers are also very friendly.