Tech Leadership Basics
9 examples to get you started with Tech Leadership - 7 basic and 2 intermediate.
Search across all documentation pages
9 examples to get you started with Tech Leadership - 7 basic and 2 intermediate.
docs/adr/ or equivalent decision folder exists, or create it in your first leadership PR.Capture a decision before implementation spreads.
# ADR 0042: Use errgroup for fan-out in ingest worker
## Status
Proposed
## Context
Ingest fan-out today uses naked goroutines; shutdown drops tasks.
## Decision
Use golang.org/x/sync/errgroup with context cancellation in internal/ingest.
## Consequences
+ Unified error return; - adds dependency on x/sync.docs/adr/README.md.Related: Writing ADRs for Go Architecture Decisions - ranked Go ADR templates
Make decisions discoverable without archaeology.
# Architecture Decision Records
| ID | Title | Status |
|----|-------|--------|
| 0042 | errgroup in ingest worker | Accepted |
| 0041 | Single module monolith | Accepted |Related: Technical Leadership in Go Teams - why ADRs anchor leadership
Time-box review before coding a new service.
## Design Review - payments-api v2 (60m)
1. Goals / non-goals (5m)
2. API sketch + error model (15m)
3. Data model + migrations (10m)
4. Threat model: authz, PII (15m)
5. Operability: metrics, rollout (10m)
6. Action items + ADR need? (5m)Related: Design Reviews for Go Services - full review playbook
Replace vague nits with rationale and links.
Consider wrapping with %w so callers can use errors.Is for ErrNotFound.
See internal/errors/policy.md and ADR 0012.gofmt and linters.Related: Mentoring Go Developers Across Experience Levels - teaching through review
Protect time for structured growth.
## Mentoring - Alex (mid) - Tuesdays 30m
Week 1: table-driven tests on internal/pricing
Week 2: context propagation in handlers
Week 3: co-review concurrency PRRelated: Mentoring Go Developers Across Experience Levels - level-specific plans
Make debt legible to product partners.
## Debt: golangci-lint staticcheck backlog (42 issues)
Impact: CI noise hides real defects; new hires copy suppressed patterns.
Cost: 2 engineer-days
Proposal: burn down in sprint 12 at 20% capacity
Owner: @leadRelated: Tech Debt Backlogs for Go Codebases - prioritization framework
Close an idioms debate with a recorded outcome.
## Decision: HTTP router for notifications (45m)
Options: stdlib ServeMux vs chi
Criteria: middleware needs, stdlib-only policy, team familiarity
Decision: chi for notifications only; ADR 0043 documents exception
Review date: 2026-Q4Related: Handling Technical Disagreements on Go Teams - facilitation patterns
Lead toolchain change across services.
go mod edit -go=1.26
go test ./...
go fix ./...
golangci-lint run ./...## Upgrade plan Go 1.25 -> 1.26
- CI images: update .github/workflows + Dockerfile
- Notable: Green Tea GC default; run load test on checkout
- Rollback: revert image tag; go.mod go directive unchanged until greengo test and linters on every module affected.Related: Tech Debt Backlogs for Go Codebases - module and toolchain debt
Widen influence without losing delivery accountability.
## Charter: shared HTTP middleware library
Problem: duplicated auth metrics across 4 services
Success: 3 services migrated; golden middleware tests in CI
Non-goals: framework replacement; org-wide DI container
Sponsor: platform TL; Timeline: Q3Related: Staff Engineer Path in Go Organizations - scope and influence expectations
Stack versions: This page was written for Go 1.26.x (Green Tea GC default, go fix modernizers - verify patch at build), chi (latest - verify at build), gin (latest - verify at build), echo (latest - verify at build), google.golang.org/grpc (latest - verify at build), sigs.k8s.io/controller-runtime (latest - verify at build), kubebuilder (latest - verify at build), tinygo (latest - verify board targets at build), wazero (latest - verify at build), and golangci-lint (latest - verify linter set at build).
Reviewed by Chris St. John·Last updated Jul 18, 2026