API design for humans who inherit it: naming the owner
- 25 Apr 2025 |
- 04 Mins read
People praise API design for humans who inherit it in the abstract and starve it in the sprint. The fix is to put craft controls on the same board as features.
Architecture that cannot be walked back becomes politics. Prefer reversible decisions with explicit revisit criteria.
The rest develops that one idea with controls you can install and failure modes you can recognize.
When pressure rises, teams drop the unowned practice first. Put API design for humans who inherit it in the path of work — templates, checklists, review norms — or admit it was optional applause.
For API design for humans who inherit it, the inheritance test is blunt: after a week, can someone outside the original room explain what changed, who owns it, and how you will know if it breaks? If the answer depends on hallway memory, you still have a story — not a practice.
Practices with enough detail to copy
Cadence beats intensity. These hold when they fit inside weeks people already live.
1
Every review: teach one reusable pattern in writing.
Technical debt with a repayment schedule appears beside features with an owner and a trigger metric. Unscheduled debt always loses to the loudest roadmap slide.
2
Every API: publish consumer expectations and deprecation rules.
Documentation that earns its keep means runbooks and decision records over aspirational diagrams. If freshness has no owner, docs become fiction.
3
Every design: state the reversible path and the revisit date.
Testing strategy when speed matters protects the invariants customers feel. Coverage percentages without risk focus become theater.
4
Every quarter: schedule debt repayment proportional to change-fail pain.
API consumer contracts should name required fields, error semantics, and deprecation windows. Optional-everything APIs become archaeology projects.
Review latency is a craft signal. A queue that sits for days teaches people to bypass standards or to ship without teaching comments.
Incident response that improves the system ends with a control change dated within a week. Timelines without control changes are storytelling.
Put repayment and operability on the same board as features so debt competes in the open instead of at 2 a.m. Unscheduled debt always loses to the loudest slide.
Scenes
A team ships a “temporary” dual-write and forgets the delete ticket. Six months later both paths are load-bearing. Craft would have put a repayment date next to the feature flag.
A migration is “done” at 80% with a cleanup ticket in the backlog forever. Craft would have treated 100% with kill-switch removal as the definition of done.
A service grows a second write path “temporarily.” Eighteen months later both paths are sacred. Temporary needs an expiration owner on the same board as the feature.
Tradeoffs
Right-sizing tests means saying no to low-value suites that burn CI energy without protecting user invariants.
Teaching reviews take minutes longer than rubber stamps. Escaped defects take days. Budget the minutes.
Reversible architecture can look indecisive to executives who want inevitability. Translate: we are buying option value and reducing blast radius.
Resist the urge to expand scope into neighboring slogans. If a control does not make API design for humans who inherit it more operable for the next person, leave it for another note. Dilution is how coherent essays become stitched scrapbooks.
Observability should answer what changed for which users, tied to an owner. Orphaned dashboards are decoration.
Failure modes
Each of these is a missing control, not a personality problem:
- Debt that never appears on the board and therefore never loses to a feature fairly.
- Big-bang migrations that consume goodwill and leave half-migrated states.
- Dashboards nobody trusts because alerts fire for noise and silence for harm.
- Docs that rot because nobody owns freshness; new hires learn folklore instead.
Migrations earn trust when each slice leaves the system operable and reversible. Percentage-complete without a kill switch is optimism with a burn-down chart.
Code review as teaching: require at least one pattern comment. Reject gatekeeping that only polices style without teaching why. Slow, unkind reviews are a leadership failure disguised as standards.
Observability that tells a story correlates user impact → service → change → owner. Orphaned dashboards are decoration. Alerts that fire for noise train people to ignore harm.
Architecture decisions you can reverse include a rollback path and a date to re-evaluate assumptions. Inevitable-looking diagrams are often just unchallenged ones.
Small platforms that stay operable refuse features that cannot be owned on-call by the same team that ships them. Unowned platform features are product debt wearing infrastructure clothing.
Migrations that respect capacity use thin slices, dual-write windows, and a kill switch. Big-bang weekends consume goodwill and leave half-migrated states.
Observability that cannot answer “what changed for which users?” is incomplete. Build the story path before you build the fifteenth chart.
API design for inheritors: name invariants, versioning rules, and what “breaking” means before the first client. Clever endpoints without consumer contracts become permanent politics.
Incident response produces a beautiful timeline and no permanent control. The next similar failure arrives on schedule. Remediation means a test, a rate limit, a privilege change, or a budget — something that bites.
An architecture review celebrates a new service boundary. Nobody asks who owns the failure mode across the new network hop. Three incidents later, the boundary is rewritten — this time with an owner map.
Close
Leave the codebase more explainable than you found it.
If someone new cannot explain API design for humans who inherit it from your artifacts in fifteen minutes, the practice is still private.