Very open ended question. So YMMV. Universal stuff: I’d say knowing your way around database connection packages is pretty universal (psycopg2, sqlalchemy, pymysql, etc). Comfort with an HTTP request package (like requests) is pretty universal. some cloud provider package/lib like boto3(AWS) Learn how to write unit tests. pytest and coverage packages are straight forward enough to set up. venv environment setup and usage to look like you know what you’re doing. set up a logger for your app so logs look good and the package handles the formatting for you. Backend / App Dev: If you want to be a backend/API dev, know how to work with flask, Django, or fastapi. Know how to write OOP Python classes. Understand common project structures for Python projects of many different sizes. Data analytics/engineering/science pandas package is a must numpy is good to know pyspark if you’re interested in big data The list goes on. This is too generic a question to go into a ton of detail, so maybe tighten the scope a little bit to get better answers if they don’t end up being very helpful. But a good rule of thumb is that anything that you gloss over as “less important” or “not with your time” when you’re new to programming is usually what separates the newbs from the pros (looking at you, testing, logging, project structure, etc, etc). It’s about being thorough the first time and doing things your future self will thank you for.
I've been using python at "work" for 3 years, and as a student / researcher for another 5? oder so? probably longer. More in other languages. The thing is... there is very little python specific knowledge that makes a developer good in my opinion. Python is a tool, but it works mostly like 20 other tools. If you know Java, C++, JavaScript and Go, you can pick up python in a weekend and be "proficient" after a few weeks of use and study. A new language with a known paradigm is not that hard to learn. That being said, what I expect another dev. to know so I can easily collaborate and communicate with them: Python Specific: list comprehension. (etc.) This makes a lot of code so much more concise and readable if you use it right The basics of numpy / pandas / etc. We might not use it often, but in case we need to make python go brrr. it is important to know this exists At least one web framework. I don't care if you prefer django, fastAPI, flask or something else, learn one. It's so easy in python to bang out a basic server to test something in an hour, so it's a good skill to have. At least one test framework. Again, I don't care which one. Just be able to test on your own, I don't want to babysit and debug other peoples tests again. But even more important to me are these, and they apply to mostly any language: (The testing one above technically does to) Communicate if you have a problem. Nothing is more infuriating and robs more time from the team than a member who can't communicate. It once took 3 months to even start a simple testing framework because someone always told us they'd be "done in 2 days, just a minor hiccup". For 3 months. Don't be that someone, ask for help as soon as possible if you are stuck. Everybody gets stuck, including Senior devs. How we handle it sets us apart. Write Documentation. I don't care how or where, in the code, in a wiki, in a readme, etc... I just want to be able to read what your code does without doing mental gymnastics. Also, future you will need to be able to read what your code does without mental gymnastics. Learn a Paradigm and learn it well. Again, I don't care which, preferably you learn multiple. If you know OOP, Imperative and Functional you can code in mostly any style and communicate with any team member about their code. (Yes, this includes recursion. You don't need to use recursion, but you damn well need to be able to use it and use it well!) Learn some Patterns and Anti-patterns. Factories, Observers, Decorators, Strategies, etc. And then: don't overuse them. Same thing as with languages: It's good to have many tools, it's bad to use heavy, over complicated tools to drive a single nail every time it comes up. Learn basic algorithms and data structures. I don't care that a linked list, merge sort and a heap are already in mostly every standard library (or easy to get). If you don't understand how they work, you can't efficiently talk and think about what you are doing. Learn to do sketches, mock ups and pseudocode. If you ever do anything architecture related, you absolutely need to be able to communicate that on a whiteboard in a short amount of time. Your ideas only matter if you can communicate them to the team! This list is already long and probably not exhaustive, but I'm going to end it here. I've based it on my experience with many different coworkers (and what I value / learned myself) There have been developers that have been just a pleasure to work with, and those that are frustrating to no end in every language I've ever touched. I hope this helps and I did not get to rambly towards the end ^^ have a good one! Edit: mostly typos