Working with the language.
WHAT VIRTUAL ENVIRONMENTS DO
Isolate a project's dependencies from the system and from other projects.
WHY THAT MATTERS
Projects requiring different versions of the same library otherwise conflict.
WHAT TO DO
Create one per project, always.
WHAT TO COMMIT
A declaration of dependencies with pinned versions.
WHAT NOT TO COMMIT
The environment itself.
WHAT PACKAGE MANAGEMENT LOOKS LIKE
A package index, with several competing tools for installing and resolving.
WHAT TO ESTABLISH IN A PROJECT
Which tool is used, and use only that.
WHAT TOOLING TO ADOPT
A formatter A linter A type checker A test runner
WHAT TO RUN AUTOMATICALLY
All of them.
WHAT TO BE CAREFUL WITH
Version differences between the interpreter you develop with and the one that runs in production System interpreters, which should not be modified
WHAT TO CHECK ON SHARED HOSTING
Which version is available, and whether libraries needing compilation can be installed.