Delegation & Spreading Context
Tech leads who hoard decisions become bottlenecks and bus-factor risks. Delegation assigns ownership with enough context - ADRs, runbooks, and PR intent - that others can ship and operate Python services without the lead in every thread.
Recipe
Quick-reference recipe card - copy-paste ready.
## Delegation brief
**Outcome:** what success looks like
**Constraints:** SLO, deadline, non-goals
**Context links:** RFC, ADR, dashboard
**Decision authority:** what delegate can choose alone
**Check-in:** Tuesday async status in ticketWhen to reach for this:
- Lead is reviewer on every PR
- Only one engineer knows billing module
- Vacation blocks releases
- Team growth requires new owners
Working Example
## Delegation: ENG-550 Celery retry policy
**Outcome:** Billing tasks retry transient DB errors with jitter; DLQ after 5 attempts.
**Constraints:** No API contract change; ship behind flag `BILLING_RETRY_V2`.
**Context:**
- ADR-008 queue choice
- Incident INC-9011 post-mortem
- `src/workers/billing.py` current behavior
**Authority:** Delegate chooses backoff constants after spike; escalate if new broker needed.
**Check-in:** Demo in guild Friday week 2.# Owner documents context at module top after delegation complete
"""billing_tasks.py
Owner: @jamie (delegated 2026-07-01)
Retry policy per ENG-550; DLQ queue billing_dlq.
On-call: pause workers if depth > 50k (runbook orders-api.md).
"""What this demonstrates:
- Outcome and constraints clearer than "fix retries"
- Linked artifacts spread context without meetings
- Explicit decision authority prevents escalation loops
- Module ownership visible to on-call
Deep Dive
How It Works
- Outcome delegation - "Reduce CFR for billing" beats "change tenacity config."
- Written context - ADRs, runbooks, and README beat tribal knowledge.
- Rotation - Release captain, on-call, and CODEOWNERS rotate quarterly.
- Graduated authority - Juniors decide implementation; leads own architecture veto.
- Feedback loop - Delegate owns retrospective learnings, not just delivery.
Bus-Factor Mitigation
| Risk | Mitigation |
|---|---|
| One deployer | Rotate release captain |
| One module expert | Pair on next feature; second CODEOWNER |
| One on-call brain | Runbooks + shadow shifts |
| One RFC author | Co-author requirement for large changes |
Python Notes
# CODEOWNERS excerpt
/src/billing/ @jamie @alex
/docs/runbooks/ @oncall-rotationGotchas
- Delegating without authority - Assignee must ask lead on every choice. Fix: Document what they can decide solo.
- Drive-by delegation in Slack - No ticket, no context. Fix: Delegation brief in tracker.
- Taking back work mid-flight - Undermines growth. Fix: Coach via questions unless SEV1.
- No ownership transfer - Delegate ships but lead still paged. Fix: Update CODEOWNERS and runbook name.
- Context in lead's head only - Vacation outage. Fix: Require PR/RFC links before work starts.
Alternatives
| Alternative | Use When | Don't Use When |
|---|---|---|
| Shared ownership pair | Critical domain transition | Long-term two owners without split |
| Guild documentation sprint | Context debt burst | Urgent feature deadline |
| Staff engineer embed | Cross-squad standards | Simple module handoff |
| Contractor with handoff doc | Temporary capacity | No internal owner assigned |
FAQs
How much context is enough?
Enough that delegate could explain trade-offs to another engineer without you present.
Delegate to juniors?
Yes with smaller scope, buddy reviewer, and clear escalation path.
How avoid abdication?
Delegation includes check-ins and quality bar; abdication is assign and disappear.
What if delegate fails?
Post-mortem on support gaps; adjust brief and pairing - not punishment if learning gap.
Spread context in monorepo?
Package README, ADR links, and CODEOWNERS per top-level module.
Remote delegation?
Written brief essential; record short loom only for complex system tours.
How long rotate on-call?
Weekly primary; document handoff note every Monday.
Delegate incident commander?
Train IC rotation among mids; lead coaches first incidents.
Context vs documentation debt?
Delegate doc updates as part of outcome when touching module.
When lead stays involved?
Architecture veto, security sign-off, and stakeholder comms - not every line of code.
Related
- Mentoring & Leveling - grow delegates
- Architecture Decision Records (ADRs) - persistent context
- On-Call Health - rotate operations
- Release Management - release captain rotation
- Contribution Guidelines - CODEOWNERS norms
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+.