Working Together
Goal: Reduce the time anyone spends guessing how to work, who decides what, or whether they’re doing well. This page covers the human layer; Workflow covers how code moves and Principles covers how we make technical trade-offs.
Decision Ownership
We optimize for speed by pushing decisions to whoever is closest to the work. Use this ladder:
- You decide and proceed — anything reversible and inside your feature’s stack: UX details, implementation approach within paved paths, library choices already in the stack.
- Decide, then post a heads-up — schema changes, new dependencies, anything touching another person’s surface. Post in
#[xxxx Engineering]channel (such as ‘Frontend Engineering’) in our collaboration platform before merge, not after. - Loop in your lead before committing — auth/permissions, data model changes, anything cross-cutting, anything that affects the roadmap or a customer commitment.
Default rule: if it’s reversible, make the call and tell us; if it’s one-way, ask first. (See “Point 6 - Small, Reviewable Changes” in Principles.)
Communication
- Async-first. Decisions live in writing — ADRs for architecture, the PR description or decision log for everything else. If it wasn’t written down, it didn’t happen.
- Response expectation: acknowledge within 1 hour during working hours. You don’t owe an instant answer — you owe a “seen, will reply in 15 minutes.” However, for urgent issues such as app downtime, an immediate response will be expected.
- Flag blockers within 2 hours. A blocked engineer staying quiet is the one failure mode that actually costs us.
What a Good Teammate Looks Like
The human complement to our engineering principles:
- Ask early over struggling silently. Asking after ~30 minutes stuck is the norm, not a weakness.
- Own your commitments. If a date slips, say so as soon as you know, with a new estimate. Surprises are the problem, not slips.
- Disagree and commit. Disagree reasonably before the decision; support it fully after.
Cadence
-
Daily async standup — answered in the daily Basecamp check-in each morning before heads-down work. Three lines, no prose:
- Yesterday: what I moved forward
- Today: what I’m working on
- Blocked: anything in my way (or “nothing”)
We run this async on purpose — it keeps us coordinated without fragmenting maker time. The one rule: blockers get a response. If you post one, your lead either unblocks it, routes it, or resolves it.
-
Weekly 1:1 (30 min), your agenda first — career, blockers, feedback in both directions. This is your time, not a status meeting.
-
Weekly Engineering team planning (Monday) — what shipped, what’s next, what’s at risk.
-
Weekly CTO Chat (Friday) — product direction, feature demo, product roadmap.
-
Retro every 2 weeks (30–45 min). Order: (1) review last retro’s actions — did they land?; (2) everyone adds Keep / Drop / Try notes silently for 5 min; (3) cluster and discuss; (4) pick 1–2 actions, each with an owner and a date. Feedback on how the team is run — including the lead — is in scope and expected.
Feedback Norms
- Feedback is frequent, direct, and small — and is given close to the moment, not saved up. A “this missed the mark, here’s how” is a normal Tuesday, not a crisis.
- It runs both ways. Tell your lead when something they’re doing isn’t working.