Skip to content

Tracer Bullets / Vertical Slices

Old software-engineering heuristic (Andy Hunt & Dave Thomas, The Pragmatic Programmer) that matt-pocock resurrects as the single most important shape-of-work rule for agentic coding.

"AI loves to code horizontally. So it loves to code layer by layer. … You don't get feedback on your work until you've really started or completed phase three. … Instead you need to think about vertical layers … thin slices of functionality that cross all of the layers that you need to." — Pocock, 42:51–43:47

Origin

In WW2 anti-aircraft gunnery, every ~sixth round was a tracer — phosphorescent so the gunner could see where the stream was actually landing and correct aim in near-real time. Hunt & Thomas's software translation: build thin end-to-end slices that exercise every layer of the system, so each slice produces a visible, testable signal that tells you whether the aim is right.

Why it matters double for agents

  • Without tracers, the agent completes phase 1 (schema), phase 2 (API), phase 3 (UI) in sequence and only finds integration bugs at the very end — deep in the dumb zone and far from the original context.
  • With tracers, each issue ends in a runnable, QA-able demo — the agent (and the human) gets near-instant feedback on the entire flow. Pocock's PRD→issues skill explicitly prompts: "break a PRD into independently grabbable issues using vertical slices / tracer bullets written as local markdown files." (43:59–44:18)
  • Pairs structurally with Ousterhout deep modules: a thin vertical slice is easiest to cut when each horizontal layer is itself a single deep module with a small interface, not a maze of shallow modules. This is what makes the codebase agent-legible.