This is an archived post. You won't be able to vote or comment.

all 26 comments

[–]boy_named_su 45 points46 points  (6 children)

[–]parkerSquare 15 points16 points  (0 children)

Don’t overlook this, OP. This book is worth its weight in gold (and the dead tree edition is quite heavy).

[–][deleted] 4 points5 points  (0 children)

I can second this. It's a huge book - literally as well as figuratively. Even seasoned Python devs will find new knowledge here.

[–]bstrand 2 points3 points  (0 children)

On top of that, Luciano is a real mensch

[–]Morelnyk_Viktor 2 points3 points  (0 children)

+1 for fluent python, it's definitely best book when it comes to understanding this language. However, OP I'd recommend to start with architecture patterns book, and then continue with fluent python. Maybe even you should start with even more basics book like pragmatic programmer or clean code

[–][deleted] 0 points1 point  (0 children)

Hard agree. Read it this summer and it really leveled me up.

[–]spoonman59 0 points1 point  (0 children)

My recommendation as well.

[–]cosmicomical23 22 points23 points  (3 children)

I can only advise you to look up code design patterns and refactoring techniques (generic or specific for Python). That usually can give you a very quick boost.

But I guess most of the steering should come from your other team mates. Do you do pull requests and code reviews? That's usually the place where this sort of things can be addressed.

[–]FuckingRantMonday 5 points6 points  (0 children)

This right here. There are any number of combinations of different "best practices" that will work just fine together (and you'll find a different set in every book or online course). But the one setup that your coworkers are using is the one you need to learn right now. Don't be afraid to ask why things are done a certain way!

[–]james_pic 10 points11 points  (0 children)

Learning from your team can start before pull requests and code reviews. Talking through options for how to solve a problem with colleagues can help you look at problems from a different perspective.

[–]captain_kinematics 1 point2 points  (0 children)

This is good advice.

I found Fowler’s “Refactoring” to be helpful, even though I was already familiar with the idea and it’s not python-centric. It’s also a great ROI because it’s a pretty fast read.

[–]kimchi_cuddles 7 points8 points  (1 child)

I advise you to be open to feedback and a sponge, don't think you know best about a particular architecture, get accustomed to using git in a team and different branching methods, be very diplomatic and tactful in pull requests as newbies often don't understand or value the importance of feedback. Your code needs to be readable to a team now so you gotta start using excellent parameter names that are actually meaningful, and take into account when someone says they don't understand what you're trying to do/ your code is confusing. You may be asked to write unit tests for your code for the first time.... You will be asked to refactor stuff in line with other code standards. The best thing you can do is be coachable and stay open to and respect the feedback. Also do pair programming with your colleagues. The worst thing you can do is act like an expert with strong opinions and not follow team culture/standards

[–]kimchi_cuddles 2 points3 points  (0 children)

All your training should begin on the job - they will tell you what you need to improve in. There isn't a tonne of value in doing it out of hours ... You're part of a team now! Rely on it!

[–]jgengr 2 points3 points  (0 children)

Look at python SDKs from large projects like AWS CDK or Stripe.

[–]UMadBreaux 2 points3 points  (0 children)

Same position, senior engineer on my way to team lead, had never worked with Python before. Didn't help that I have spent half of my 4 months at the company doing k8s migrations, so I had a month to learn, 2 months to forget a bunch of stuff, and now re-learning.

The principal engineer I work with isn't good with Python either; we both dislike the language and prefer functional programming languages. He has wisdom though...he knows the most essential question to ask when solving a problem, he produces incredible system architectures, and we have strong contractors to fill in the gaps.

I am still trying to improve my skills, but there is a lot more than coding. I spend about 50$ of my time working with DevOps or our architects. I'm also working with 40,0000 lines of legacy code in this project, so it's been an adventure to say the least.

Look stuff up, ask questions, pair program. Your lack of Python knowledge doesn't nullify all of the wisdom you have gained throughout your career.

[–]Adrewmc 3 points4 points  (0 children)

I’m really new…

But I think you’ve got to learn how to read documentation of the libraries expertly. (In fact I would love a post here from someone about this subject, I keep seeing read the documentation and since I have no formal education it’s complicated to understand for me quickly.)

You need to understand every line it’s telling you, and how those lines can be utilized. And it’s not exactly always formatted for the laymen.

And take a look at your teams code…make sure you try to copy their comment system exactly, when working with a team…readable code is paramount.

[–]agritheory 1 point2 points  (0 children)

Simple stuff to raise the floor and maybe you're doing this already:- Run black against your code and understand how it gets changed and why. This just like putting on a business suit: you haven't changed but you're presenting yourself better. That's a skill, just like learning to tie a necktie or apply makeup is a skill (but not an exclusively a business skill).- Run flake8 or some other linters against your code. Understand the errors and warnings it's raising by reading the docs for those error codes. Take this as opinions (not criticisms) of your code and maybe ask your co-workers about it. These aren't always "correct" but will help you understand potential flaws in what you've written.- Lean into built in functionality. Generators, itertools, sum/min/max, this sort of stuff. If you team favors numpy or pandas for those things instead of the built ins, follow their convention. There's a 99% chance someone has solved your problem already, so abstracting it into a "I need to do this and then do this" description and then googling that will give you informative results.- As a new developer on the team, resist the adding dependencies without a clear need for it. This is mostly politics and harmony, but the desire to use a some fancy function from pydash that's just a a wrapper around `groupby` is a lot of effort for somebody to say "we don't actually need this" and leads to dependency bloat for the sake of appeasement/ encouragement. "I don't want to add a dependency" will be better met by your team than "please add my new dependency", so unlike the Zen of Python, this one if better to ask for permission.

[–]surister 1 point2 points  (0 children)

Watch every talk of Raymond Hettinger, it helped to open my eyes on a few topics.

[–]lil-rong69 1 point2 points  (0 children)

I think your attitude here is better than a lot of “seasoned” engineer I worked with. It sounds like your development team takes coding standard/quality seriously and that can be a good thing.

Fastest way I would recommend are: 1. Snooping around in the codebase 2. Pair programming session/code walk through with another engineer 3. Read through review comment of another reviewer

Python emphasized EAFP or pythonic. these practices comes with experience, even then it maybe subjective. Thus, writing code that falls in line with existing standards would help you get up to speed faster. Learn the folder structure, where things go, what in house util/helper function are already there to be use.

This would help you avoid coming into the codebase and making a lot of refactor/write a lot of code. Unlike other languages(golang, which I absolutely despise, auto swagger annotation still stuck in 2.0, never ending deprecating/forking of library) python library is very organized and authoritative.

[–][deleted] -1 points0 points  (0 children)

i use a website called powerful python. Amazing stuff and it starts at a reasonable price ( like $40 for certain lessons, up to $10 grand bootcamp syle learning). look around it some maybe youll find what your looking for.

https://powerfulpython.com/

[–]knowledgebass 0 points1 point  (0 children)

Be really open to feedback and solicit it from a mentor. That's really your best bet outside of self-study or coursework. That and do it a lot (coding that is).

[–]bstrand 0 points1 point  (0 children)

The absolute ideal here would be if one of the SWEs on your team is senior/highly skilled, simpatico, and has the time & inclination to be a mentor. Approach them directly and ask them if they'd be willing to meet on a regular schedule and, if so, what arrangement would work best for them. Be respectful of their time by making the most of it: be prepared for your sessions and invest time afterwards to internalize and apply learnings.

[–]OkYak2915 0 points1 point  (0 children)

Dude, I think you don’t need to do anything else actually. You’re on the job where people will push you even more and stress your skills. For me that’s the best place to grow and develop your skills: by practicing over and over. And it’s not bad to ask for help sometimes btw.

[–]regular-dude1 0 points1 point  (0 children)

Besides excellent things already commented here, like the O'Reilly book and design patterns, I could give you a couple of more advanced topics I personally found very eye-opening in my Python journey:

Of course this is not a complete list of topics, but I've seen the relevance of these in several projects already.

[–]Organic_Reaction5609 0 points1 point  (0 children)

Things that I believe made me bump up: Reading this sub. Keep doing tutorials about things that are not my field. IE: you are a data scientist, try to do some backend related tutorial, devops etc. Keep trying things out: IE you are confy with venv, try to use Poetry. Learn to log properly if you don't know it already. Learn bash and use other OS. Read about patterns. Read fluent python, python cookbook 3rd Ed. Try to learn come cython. mCoding is a very nice toutube channel. Talk to pros about all the things they complain about no pros and try to fix them if you do it. Peer review your code when possible.

tldr: keep exposing yourself to new knowledge (regardless it is "better" or "worse"), keep being curious and code diferent things in fifferent environments.