Team Best Practices
A condensed summary of the 25 most important team practices that keep a Python engineering team fast, aligned, and kind - drawn from every page in this section.
Search across all documentation pages
A condensed summary of the 25 most important team practices that keep a Python engineering team fast, aligned, and kind - drawn from every page in this section.
Time-to-first-PR is the metric: Target merged small PR by day five - measures onboarding and tooling health (Onboarding Devs Checklist).
One canonical onboarding doc: Linked from README with named owner and last-reviewed date.
Buddy for week one: Named peer, daily 15-minute check-in - not "ask the team."
Environment setup is scripted: uv sync, pytest, /health documented in Environment Setup Checklist.
CI commands run locally: Same ruff/pytest/mypy as GitHub Actions before push.
.env.example always current: Every new settings field updates example without secrets.
CODEOWNERS on sensitive paths: Migrations, auth, payments auto-request experts.
ADRs for non-obvious decisions: Framework, schema, and flag strategy recorded in docs/adr/.
Trace one request in week one: Faster than reading entire tree (Codebase Orientation).
Conventions in ruff config: Style debates end in pyproject.toml, not review comments (Conventions & Style Guide).
Ticket id in every commit: Cherry-picks and changelog automation depend on it.
PR description template: Migration note, test plan, rollback - required fields.
Review tests before implementation: Reviewers validate behavior change via assertions.
Kind specific review comments: Questions and suggestions, not "just fix it" without context (Code Review Guidelines).
Approve when bar met: Do not block on preference when CI green and P0/P1 satisfied.
Small PRs default: Split when diff > ~400 lines or mixed concerns.
Internal transfers get onboarding: Senior to new subsystem still needs access and architecture tour.
Doc PRs from new hires celebrated: First PR fixing onboarding typo is success signal.
Post-incident doc updates: Every sev2+ updates runbook or checklist item.
Blameless retros: Focus systems - update checklists not individuals.
Shared shell/Makefile targets: make test, make lint documented for all repos.
No heroics on deploy: Follow checklist; flag process gap if shortcut needed.
Rotate on-call with shadow: New hires shadow before solo pager.
Quarterly dependency hygiene: Scheduled sprint items for CVE and Python minor bumps.
Team norms written down: Unwritten rules become gatekeeping - publish and revise openly.
Add explicit overlap hours, recorded architecture tours, and written decision logs in Slack threads linked to ADRs.
One ticket, one concern, reviewable in 30 minutes - not single-line only if test needs context.
Prefer peer buddy for psychological safety; manager joins week-two checkpoint.
Same review and security bar; clarify ownership handoff at contract end.
Stack versions: This page was written for Python 3.14.0 (stable 3.14, maintenance 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, and uv 0.6+.
Reviewed by Chris St. John·Last updated Jul 16, 2026