Vertical Slices

One feature through every layer, instead of one layer for every feature. Pick a slice of the store, run it, and read what a passing slice proves — and, as prominently, what it still leaves unknown.

ProblemUnderstandRequirementsConstraintsUnknownsDecompositionSmallest StepModelExperimentObserveDebugLearnIterate
A week of database, then a week of backend, then a week of frontend produces nothing that can be tested until the fourth week, when the interfaces disagree. A slice is thin on purpose: it proves the layers connect, and the next slice is chosen by what the last one did not prove. The six below are the store from its walking skeleton to its first file upload. The animation is a request walking down the layers; nothing is computed.

Pick a slice

The walking skeleton: one product, end to end
  1. Database

    A products table with one row inserted by hand.

  2. API

    GET /products returns that row as JSON.

  3. Page

    A page fetches the endpoint and renders the product's name and price.

Run the slice to see what a pass would prove — and what it would not.

Horizontal layers against vertical slices

The same four weeks, two ways.

horizontal — one layer per week
  1. Week 1 · Database: every table the store will ever need
  2. Week 2 · Backend: every endpoint, against tables nobody has read from
  3. Week 3 · Frontend: every page, against endpoints nobody has called
  4. Week 4 · Integration: the interfaces disagree; the first end-to-end run happens under the deadline

Nothing is testable until week 4. Every design decision in weeks 1–3 was made without feedback, and the ones that were wrong are discovered together.

vertical — one feature per slice
  1. Slice 1 · The walking skeleton — 3 layers, testable on the day it lands
  2. Slice 2 · View Product — 4 layers, testable on the day it lands
  3. Slice 3 · Add to Cart — 4 layers, testable on the day it lands
  4. Slice 4 · Create Order — 5 layers, testable on the day it lands

Something runs on day three. Each slice tells you what the next one should be, and a wrong decision is found while it is still one slice wide.

How to read this page honestly

What the tool does, and what it deliberately refuses to do.

SIMPLIFIED
The layers here are the store's, and the cost of slicing is not shown: a slice-first project rewrites its schema more than a layer-first one, and some layers — an authentication system, a data model shared by every feature — resist being sliced and are better built once, thinly. The animation is illustration, not execution; nothing on this page runs a request.

Take it further