Skip to Content
← Back to the manifesto

Switchback SDLC

The Operating Guide

The article makes the case. This is the mechanic: the twelve steps, a playbook for running them without it falling apart, the trail system that keeps the record honest while you move fast, and a path from reading this to actually doing it.

The Twelve Steps

Phase A · Discover

1

Map

Lay the product out as user stories, the spine of what people need to do. Human-owned; AI researches and summarizes but never edits the vision.

Gate MVP stories mapped

2

Explore

Fan out a dozen clickable directions and throw most away. Vibecode fast, don't sweat polish.

Gate Multiple options illustrated

3

Shape

Walk in with directions prepped, spend the hour deciding which is right and at what appetite.

Gate Bad ideas eliminated, one direction picked

Phase B · Frame

4

Identify

Name the components and schemas worth sharing before the team builds the same thing five ways.

Gate Reusable parts identified

5

Breakdown

Write the chosen direction into tickets, each one a self-contained spec to build from and check against.

Gate Spec written and reviewed

6

Sequence

Map the dependency graph: what runs in parallel, what waits, what collides.

Gate Work parallelized

Phase C · Plateau Loop

7

Draft

Build a walking skeleton that runs end to end, rough on purpose.

Gate It runs

8

Refine

Tune the real build in the codebase, not in comps. Design tags in here.

Gate The rough edges that bite are fixed

9

Reckon

Stand around the real thing and decide: climb on, or rebuild from a clean start?

Gate A call is made

10

Rebuild

If rebuilding, start from the higher ledge. The substrate carries forward.

Gate The better pass stands

Phase D · Ship

11

Review

Real code review. A human owns what merges.

Gate Reviewed

12

QA

Check against the ticket spec, sized to what's shipping.

Gate Passes

Deploy

Atomic, CI/CD, on the shared substrate. Ships continuously, not at the end.

Gate Live

Operating Playbook

How to actually run this without it falling apart. The article makes the case; this is the mechanic.

Setting up

Get three homes in place before your first climb: a story map the whole team can edit (we use storymaps.io), a work tracker whose states are your gates, with the spec living in the ticket body, one ticket per self-contained unit of work (we use Linear), and an agent-orchestration layer that can run scoped work async (we use iloom.ai driving Claude and Gemini). The functions are the requirement; the brands are our worked example. That’s the whole stack — don’t add more until something actually hurts.

Set up your Linear states to mirror the gates, not the old workflow. You want states that say where on the climb a piece is: Mapped, Shaped, Specced, Drafting, Reckoning, Shipping, Live. The state is the gate. Moving a ticket forward is a deliberate act, never automatic.

Tip

Resist the urge to recreate your sprint board. If your states are “To Do / In Progress / Done,” you’ve smuggled the relay back in. The states should make a skipped step or a stalled climb visible at a glance.

Suggested visual
Screenshot

The gate-state board

A real Linear board for one climb with the gate states as columns — Mapped, Shaped, Specced, Drafting, Reckoning, Shipping, Live — and tickets at honest, uneven altitudes. The point the image makes: you can see where every piece is and where one is stalled, with no meeting.

Suggested caption: The board recites itself. States are gates, and a stalled climb is visible at a glance.

Our stack

“What has to exist first” in the article is the principle; this is what it cashes out to for us. Everything runs on Node and TypeScript, end to end, so the same people can move across the whole stack without switching languages mid-climb.

Supabase is the database and auth. Vercel hosts it and gives us a preview build on every branch, which is the thing that makes “let’s just see it” cheap. Linear holds the work, Slack is where we talk, and Claude is the agent we build with. That’s the base camp, and it was standing before any of the climbs in this guide made sense.

Speed doesn’t cancel testing. We still write unit tests for the logic that matters, and Playwright drives the end-to-end checks against the running app, so a build we throw away in Reckon never takes the safety net with it.

Running a climb

Start every climb at the map, even small ones. The discipline of stating the problem as stories before touching code is what keeps you from building the wrong thing fast. Ten minutes here saves a plateau later.

In Explore, set a hard timebox and a hard option count. “Three to five directions, one afternoon.” Without the cap, exploration becomes a sinkhole and the whole point (cheap, fast, disposable) erodes. The cap is what keeps it disposable.

In Breakdown, write tickets that are buildable from the ticket alone. The test: could a competent stranger build this with no other context? If the ticket needs a meeting to explain, it’s not done. Vague tickets are where whoever picks them up has to guess, and guessing surfaces in QA at the worst time.

Trick

When you Sequence, tag tickets that touch the same files. Parallel work on overlapping files is the number-one cause of merge chaos. Isolate by file ownership and your parallel work stays parallel.

In the Plateau Loop, build the skeleton first, always. The instinct to perfect one screen before the next exists is the old expensive-build instinct. Get the whole thing running rough, then refine where it bites. You learn more from a running mess than a polished fragment.

Reckon is a real meeting with a real decision, not a status check. Put the running build on a screen. Ask one question: is this close enough to climb on, or did we learn enough to do it right from scratch? Say the answer out loud. “We’re rebuilding this” is a normal, healthy sentence. A team that never rebuilds isn’t disciplined, it’s sunk-cost.

Keeping drift out

The failure mode of speed is leakage. Build these habits or the climb diverges from what’s recorded.

Capture in the moment, always. A story surfaces mid-build, it goes into the map or a ticket before you climb on. Not after standup, not “I’ll remember it.” The three seconds it takes to log it is the cheapest insurance you’ll ever buy.

Make pulling someone in a logged act. A Linear mention or a thread tied to the ticket, never a hallway ask or a DM that dies in someone’s inbox. The record is what lets the person arrive with context instead of needing a meeting to catch up.

Treat every gate as a drift check. When a ticket clears a gate, confirm the work still matches what everyone thinks it is. The gate isn’t just quality, it’s the moment you catch the climb wandering off the map.

Tip

If you find yourself rebuilding endlessly in Reckon, the problem isn’t the loop, it’s upstream. Thin Discover or vague Breakdown sends you back repeatedly. Fix the map, not the build.

Working async

Default to async. Synchronous time is reserved and rare, because “pull in anyone at any altitude” only works if it doesn’t require everyone to be awake at once.

Only two meetings are genuinely worth gathering for: Shape (deciding the direction live) and Reckon (the keep-or-rebuild call). Both are judgment, not status. Everything else runs in threads tied to the work.

Kill the daily standup. The work tells you its status through the Linear states. A meeting to recite what the board already shows is the relay’s ghost. If someone needs status, they look; they don’t convene.

Trick

Queue well-scoped work to run overnight. A task you’ve scoped and handed the right context can run on iloom.ai while you’re offline, so you wake up to a plateau to react to, not a blank editor. The async advantage isn’t just timezones, it’s that well-prepped work keeps moving while you sleep.

The test of whether your async is working: someone takes a day off and the climb doesn’t stall. If it does, something important was trapped in a synchronous moment, and that’s the thing to fix.

Common mistakes

Recreating sprints with new words. If your week has a planning meeting, a daily standup, and a retro, you’re running Scrum in a Switchback costume.

Skipping the map because the work “seems obvious.” Obvious work is the easiest to build in the wrong direction. The map is cheap; build it.

Treating throwaway as failure. The wireframes you discard in Explore and the Draft you rebuild in Reckon were never waste. They were the cheapest way to learn. Mourning them is the old expensive-build instinct talking.

Hoarding the pen. If one discipline insists on owning a step, the blur breaks and the relay creeps back. Pull in who the climb needs, then let go.

The Trail System

A climb you can’t reconstruct afterwards didn’t leave a trail, and at switchback speed the trail doesn’t keep itself. This is the connective tissue made concrete: where stories live, what marks a turn, which channels carry the echoes, and where automations do the record-keeping so humans never have to choose between moving and writing things down.

Stories and the backbone

A vertical decomposition: product story map at top, stories beneath, one story opening into a project, the project fanning into tasks and subtasks — with a phase rail showing Discover over product and story, Frame over project and task, Plateau Loop at subtasksProduct → story → project → task → subtask, and the phase that owns each level. The warm thread is the trace back to the story.

One map per product, not per feature. The backbone is the top row: the user’s journey as verb-first activities (“plan a flight,” “review performance”), five to nine across for a whole product. Under each activity sit its steps, and under each step hang the stories, ordered by priority. Horizontal slices cut the map into climbs: the MVP line first, then a slice per climb after it. The backbone is the part that almost never changes; the stories under it churn constantly, and that’s the map working.

Every story is one sentence in problem language:

a {who} can {do what}

. No solutions, no screens, no field lists — the moment a story says “dropdown,” someone picked a path before seeing the options. If a story can’t be said in one sentence, it’s an activity that needs splitting, not a longer card.

A story is always in exactly one of three states, and the map shows all three at a glance: mapped (it exists, nothing’s committed), in flight (it exported to Linear at Breakdown and carries a link to its tickets), and live (its tickets cleared Release and the map says so). The map holds the shape and the altitude; Linear holds the detail. Never the reverse.

Tag every story that arrived mid-climb — surfaced by a switchback rather than planned at a mapping session. The tag costs nothing and buys you the most honest metric this method has: how much of the map the climbing discovered.

Signal

A healthy map grows en route. If no stories carry the switchback tag, the team isn’t looking at what the builds are teaching — and if most do, Discover is running too thin. Either way the map tells you, which is the point of keeping it.

Trails in Linear

One Linear project per climb, opened at Shape when the direction is picked. Every ticket inside it is one self-contained unit of work from Breakdown, and every ticket has the same four-part anatomy: the story reference back to the map, the spec in the body (what, contracts, states, acceptance criteria, out of scope), a running switchback log, and links — branch, preview URL, PR. A ticket missing one of the four isn’t done being created.

The switchback log is the part the old workflow never had: a dated, one-line entry for every turn the work took. What surfaced, where it was routed, what changed. Six months later the ticket reads like a flight recorder — not just what got built, but every fork on the way and why the climb went the way it did.

Four labels carry the taxonomy: substrate (it outlives the climb), throwaway (it won’t, on purpose), switchback (this work arrived mid-climb), and base-camp (equipment, not product). Label at creation; they’re how you later ask “what did this climb leave behind” and get an answer from a filter instead of an archaeology project.

Two acts are always deliberate and always leave a comment: clearing a gate (“Gate: spec reviewed — passed, two criteria tightened”) and pulling someone in (an @-mention with the trigger and the ask, so they arrive with context instead of needing a meeting). Everything else on the ticket can be automated; these two are signatures.

Tip

Resist per-person tickets (“Alex’s tasks”) and umbrella tickets (“Polish pass”). The ticket boundary is the unit of work from Breakdown, because that’s the boundary the spec, the QA check, and the parallelization all share. Cut tickets differently and all three stop lining up.

Suggested visual
Screenshot

The ticket as flight recorder

One real ticket, annotated with four callout arrows: the story reference at the top, the spec in the body, the switchback log with two or three dated ⤴ entries, and the links block (branch, preview, PR). One gate comment and one logged pull-in visible in the activity feed.

Suggested caption: Four parts, always: story ref, spec, switchback log, links. Six months later this ticket replays the whole climb.

Trails in Slack

Slack is the campfire, not the filing cabinet. State lives in the map and in Linear; Slack carries the conversation and the echoes of state, and nothing that matters is allowed to exist only there. The standing rule: if a decision happens in a thread, it gets written back to the ticket — by the automation when one is watching, by the human who made the call when not.

Four channels cover the whole method. Not per-discipline channels — that’s the relay’s org chart sneaking back in as a sidebar — and not per-ticket channels, because the ticket already has a home. Channels follow the trail, not the team.

#climbs

The trailhead register. One thread per climb, opened when the climb gets a Linear project. The thread is the climb’s campfire: reactions to plateaus, pull-in conversations, quick calls that then get written back to the ticket.

Auto-posts

Gate transitions, preview links, the Reckon brief the night before, the morning digest of overnight work.

Doesn't belong here

Specs, decisions without a ticket write-back, anything you’d need to find in six months.

#map-room

Where stories that haven’t reached the map yet get raised and argued. The holding area between “someone had a thought” and a mapping session — so ideas queue visibly instead of arriving as drive-by DMs.

Auto-posts

Switchback-captured stories echo here when they land on the map, so the people who decide see what the climbs are discovering.

Doesn't belong here

Build talk. Once a story is mapped and in flight, its trail lives on the ticket and in #climbs.

#base-camp

The equipment channel: previews, pipelines, migrations, scaffolding, the component library. Where “the trailhead is broken” gets said and fixed. Base-camp work is its own climb and earns its own tickets.

Auto-posts

CI failures, deploy status, dependency and infra alerts.

Doesn't belong here

Feature debate. If it’s about what to build rather than what to build on, it’s #map-room.

#releases

The summit log. Structured release notes, one post per atomic release, readable by anyone in the company. Skimming it answers “what shipped this week” without convening anyone.

Auto-posts

Release notes from the Release gate, with links back to the ticket and the story they serve.

Doesn't belong here

Discussion. React with an emoji; take conversation to the climb thread.

Rule

No decisions in DMs, ever. A DM is where a trail goes to die: the context can’t be linked, the decision can’t be found, and the person who wasn’t in it starts the day behind. Judgment calls happen in the climb thread or on the ticket, where the record is.

Suggested visual
Screenshot

A climb thread, mid-climb

One thread from #climbs spanning a day: a gate-transition echo, a preview link with 'let's just see it' reactions, a logged pull-in landing with context, and the morning digest of overnight plateaus. Humans and automations interleaved — that's the image's argument.

Suggested caption: The campfire: automations carry the status into the thread, so the humans in it only ever talk judgment.

Where automations pull it together

One rule governs all of it: automate the echo, never the judgment. Automations move records between homes; humans move work through gates. The moment a bot advances a ticket past a gate, the gate has stopped being a check and the drift detector is off.

Run that rule over the whole climb and the lattice falls out — every moment that used to need a standup, a status ping, or someone remembering to write something down:

The momentWhat firesThe trail it leaves
Stories clear BreakdownMap export creates the Linear tickets, story reference attachedMap marks the story in flight; ticket links back to the map
A ticket changes gate stateLinear→Slack hook posts to the climb threadAltitude visible in #climbs — the board recites itself, so nobody else has to
Someone runs /switchbackThe skill writes the ticket log entry and the map item, then echoes the threadThe turn is recorded before the next prompt runs
A branch gets pushedCI builds and pins the preview URL to the ticket and the climb thread"Let's just see it" is one click for anyone, at any altitude
A PR merges and releasesTicket advances to its final state; pipeline drafts structured notes#releases gets the note; the map marks the story live
Reckon is on the calendarAn agent assembles the brief overnight: spec-vs-built, open questions, rebuild ledgerThe meeting starts at the decision instead of building the picture
Overnight queued work landsMorning digest compiles the plateaus that are ready to react toThe climb thread opens the day with something real, not a status request
A ticket stalls at a gateA stale-trail nudge fires after the threshold you setDrift surfaces in the climb thread while it still costs an afternoon

Three layers carry the eight, and all three ship in the Switchback SDK. Native integrations and plain CI steps carry the pure echoes — gate states, previews pinned by the no-agent preview-trail workflow. The skills carry the in-session trails: /switchback and /gate write their own log lines through the Linear and Slack integrations when they run. And the headless routines carry the scheduled record-keeping — the Reckon brief, the morning digest, the stale-trail sweep, and release notes — each run by a GitHub Action on cron. None of the three ever moves a ticket through a gate.

Litmus

Audit your automations with one question: does this write a record, or does it make a call? If any automation answers “makes a call” — auto-closing tickets, auto-passing QA, auto-merging — turn it off. The speed was never in skipping the judgment; it was in never having to stop for the bookkeeping.

Your First 90 Days

A path from reading this to running it. Pick one low-stakes project and climb it.

Days 1–30

Learn the loop

Goal

Run one full climb, start to finish, on something that doesn't matter much. You're learning the rhythm, not optimizing it.

Moves

Set up the three homes (a shared story map, a tracker with gate-states, an orchestration layer — for us: storymaps.io, Linear, iloom.ai). Map one small product as stories. Explore three directions and throw two away on purpose, so the team feels that throwing away is normal. Build a rough Draft and actually look at it together. Make one real Reckon call.

You'll know it's working when

Someone says "let's just see it" instead of debating an idea in the abstract, and means it.

Days 31–60

Build the discipline

Goal

The loop runs, now make it not leak. This is where drift control and async habits take hold.

Moves

Enforce in-the-moment capture, every surfaced story logged before you climb on. Run the two live meetings (Shape, Reckon) and kill everything else synchronous, including standup. Start pulling people in through logged mentions, not taps on the shoulder. Practice gates as drift checks, not rubber stamps. Run a second, slightly bigger climb concurrently with cleanup on the first.

You'll know it's working when

A story surfaces mid-build and gets logged without anyone reminding anyone, and a teammate takes a day off without the climb stalling.

Days 61–90

Scale and blur

Goal

Multiple climbs at once, parallel work scoped and steered well, roles genuinely fluid. The team switchbacks without thinking about it.

Moves

Run several concurrent climbs. Queue well-scoped work overnight on iloom.ai and react to plateaus in the morning. Push role blur: product spinning up experimental branches, design refining in the codebase, engineering steering and switchbacking instead of typing every line. Sequence tickets by file ownership so parallel work stops colliding. Tune your appetites: you should be getting better at sizing how much a direction deserves.

You'll know it's working when

Nobody asks whose job a step is, switchbacks cost an afternoon instead of a meeting, and you ship value mid-climb instead of waiting for a finish line.

The numbers to hold yourself to

The signals above are felt; these are measured, and they’re what you report upward. Three is enough:

Time from map to first plateau. The whole economic argument lives in this number. Target: under a week by day 60. If it isn’t falling, the base camp is missing, not the discipline.

How much of the climb survives someone being offline. The async test, made countable: a day off should cost the climb nothing. Every stall traces to something trapped in a synchronous moment — find it, free it, count again.

Rebuild rate at Reckon. The healthy band is some-but-not-most. Zero rebuilds means sunk-cost thinking survived the transition; mostly rebuilds means Discover or Breakdown is running too thin. Either edge of the band points at the exact phase to fix.

If none of the three has moved by day 90, stop and ask the honest question: did the base camp — previews, safe migrations, a component system, solved scaffolding — actually exist before you started the clock?

Start at the map.

The guide is the mechanic. The case for why it’s shaped this way lives in the manifesto.

Last updated on