#resources #programming #python #software

Programming

If you find it useful, here's my coding setup and here are some tips for collaborative projects. I am a mostly self-taught programmer, and as much as it pains me to admit, I started with Matlab. However, I can barely remember those days, and thanks to these resources, I consider myself a decent python developer.

Arjancodes

Software design course + pythonic design patterns

By far, the best course out there that not only offers an introduction to the formal concepts but goes through the practical details is Arjan's Software Design Mindset. For anyone who learns like I do, this is an absolute gem.

There is also an extension that includes Pythonic design patterns that I cannot find the link for but can highly recommend once you get through the first course.

Together, they're so comprehensive and manage to cover every aspect of modern pythonic programming. It has dramatically increased my productivity as a developer and made the whole process so much more enjoyable.

YouTube

If you cannot afford the course, I would still recommend Arjancodes' YouTube channel. He has some fantastic videos that put the principles into practice. Some of my early favorites, before I eventually decided to take his course, were cohesion and coupling, composition vs inheritance, SOLID design principles, abstraction and composition, the other videos on refactoring data science projects (pt 2, 3), and then some others on using dataclasses, pydantic, ABC vs protocol. that make OOP life easier.

My coding setup

VSCode extensions

Tips for collaborative projects

Common settings

Setup the same linter, IDE, and code auto-formatter. This way, there's no need to argue about silly things and the whole team can focus on what matters - the actual code. Refer to my coding setup for details.

Workflow

Agree on a workflow if you can. I typically follow the feature branch workflow. The article does a good job explaining the idea, but the tl;dr is to work on a separate branch for each new feature and not directly on master so you're not disturbing everyone else's work by pushing.

Books