Making the Process Work (Scrum/Kanban/SAFe)
Agile frameworks are tools - not goals. Python teams adapt Scrum, Kanban, or SAFe layers so ceremonies improve feedback, WIP stays sane, and Definition of Done includes tests, observability, and safe deploy - not story-point theater.
Recipe
Quick-reference recipe card - copy-paste ready.
## Definition of Done (Python service)
- [ ] Spec or RFC link for M/L work
- [ ] pytest green; coverage on new paths
- [ ] Ruff + pyright clean on touched packages
- [ ] Structured logs / metrics for new flows
- [ ] Feature flag or rollback noted in PR
- [ ] Deployed to staging; smoke documented
- [ ] Release notes if customer-visibleWhen to reach for this:
- Retros feel repetitive without change
- Done stories lack production deploy
- SAFe overhead exceeds value
- Kanban board infinite WIP
Working Example
## Squad cadence (hybrid Scrum/Kanban)
**Planning (biweekly, 90 min):** Capacity = velocity minus 20% platform
**Daily (15 min):** Blockers only; deep dives offline
**Review (biweekly):** Demo staging + DORA snapshot
**Retro (biweekly):** One experiment action item
**Kanban:** WIP max 3 per engineer; column limits on Review
**SAFe layer (quarterly):** PI planning input = engineering 1-pager only
**Skip:** team-level SAFe metrics rollup if unused# Board automation example - link ticket to deploy state
DONE_CRITERIA = {
"merged": False,
"staging_deploy": False,
"prod_behind_flag": True, # acceptable done for large features
}What this demonstrates:
- DoD explicit for Python production readiness
- WIP limits prevent review pile-up
- SAFe trimmed to planning inputs that matter
- "Done" allows flag-behind-prod with documented criteria
Deep Dive
How It Works
- Feedback loops - Shorter loops beat heavier process.
- WIP limits - Flow efficiency; fewer context switches on async migrations.
- DoD contract - PM and eng agree what "done" means before sprint start.
- Retro experiments - One change per retro, measured next cycle.
- Framework fit - Kanban for ops-heavy; Scrum for feature cadence; SAFe only where portfolio coordination real.
Ceremony Health Check
| Ceremony | Healthy signal | Unhealthy signal |
|---|---|---|
| Planning | Commitment matches capacity | Overflow every sprint |
| Daily | Unblocks in <24h | Status report to manager |
| Retro | Action item closed | Same complaint 3x |
| Review | Stakeholders see staging | Slides only, no software |
Python Notes
## Sprint spillover rule
If migration not staging-tested by mid-sprint, split story - do not carry untested DDL to demo.Gotchas
- Points as productivity metric - Gaming and stress. Fix: Use throughput and CFR for health.
- DoD without deploy - "Done" in Jira, not prod. Fix: Staging minimum; prod behind flag acceptable if documented.
- SAFe all layers - Tax without portfolio need. Fix: Keep PI inputs; drop unused ART rituals.
- Skipping retro actions - Cynicism. Fix: One experiment owner named in ticket.
- PM as task dispatcher - Engineers passive. Fix: Engineers bring breakdown and risks in planning.
Alternatives
| Alternative | Use When | Don't Use When |
|---|---|---|
| Pure Kanban | Support/ops heavy | Fixed marketing launches |
| Shape Up | Six-week bets | Continuous SLA microservices |
| Scrumban | Mixed flow | Team needs strict sprint predictability |
| No sprints | Continuous deploy mature | New team needing rhythm |
FAQs
How long should planning take?
90 min for two-week sprint with prepared specs; cancel if backlog ungroomed.
Velocity for Python teams?
Use rolling average; separate platform vs feature throughput optionally.
SAFe in small company?
Often overkill; borrow PI planning calendar only if multi-team deps real.
Carry-over stories?
Re-estimate; split; investigate systemic overcommit in retro.
DoD for hotfixes?
Reduced: test + rollback path + post-deploy monitor; full DoD follow-up ticket.
Remote ceremonies?
Async grooming comments; live planning/review; recorded demos.
Bug interrupt capacity?
Plan 15-20% buffer or explicit interrupt column on Kanban.
ML work in sprints?
Spike stories for data unknowns; done includes eval metric threshold.
Process change who decides?
Team retro experiment; EM removes organizational blockers.
Metrics in retro?
CFR, review latency, WIP age - one chart beats opinion debates.
Related
- Estimation & Risk - planning input
- Stakeholder Communication - review demos
- Delivery Best Practices - deploy DoD
- Code Review Culture - review WIP
- DORA Metrics - retro data
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+.