---
title: "Tracer Bullets"
description: "Shipping the thinnest end-to-end slice through all architecture layers before expanding features."
section: "concepts"
type: "concept"
created: "2026-08-22"
updated: "2026-08-30"
confidence: "high"
tags: ["workflow", "agents", "technique"]
canonical: "https://pyweb.dev/wiki/tracer-bullets"
---
# Tracer Bullets

Ship the smallest end-to-end slice first — one thin path through every layer — then thicken.
Term from *The Pragmatic Programmer*; [matt pocock](/wiki/matt-pocock) repurposes it as the main defense
against AI slop: agents produce volume, so constrain each ticket to a verifiable slice. [[source: aihero-dev-homepage-2026]](/wiki/raw/articles/aihero-dev-homepage-2026)


```text
ticket = slice-through-all-layers (UI stub -> data -> back)
verify = demo the slice end-to-end
then   -> thicken, one layer at a time
```

## Why it beats big-bang with agents
- Reality referees early: integration lies surface on slice one, not week three
  ([richard feynman](/wiki/richard-feynman): "nature cannot be fooled" — production either).
- Each slice has crisp success criteria → enables [karpathy four guidelines](/wiki/karpathy-four-guidelines) #4
  goal-driven looping.
- Review load stays human-sized; slop can't hide in a 4,000-line diff.

## In practice
Decompose specifications into tracer-bullet tickets with explicit blocking edges;
each implementation phase builds one slice via [tdd with agents](/wiki/tdd-with-agents). See [idea to ship flow](/wiki/idea-to-ship-flow).
"What I cannot create, I do not understand" — Feynman's dictum; the tracer bullet is the created-therefore-understood proof, per ticket.

## Failure Modes

| Symptom | Root cause | Fix |
|---|---|---|
| Slice never reaches production | "Thin" interpreted as UI-only, skipping data layer | Slice must touch every layer, even with stubs |
| Slices sprawl into mini-projects | No verifiable done-criteria per slice | Each slice gets one observable success check before the next starts |
| Agent gold-plates slice one | No explicit scope fence | Constrain the ticket: "only the slice; do not extend" ([karpathy four guidelines](/wiki/karpathy-four-guidelines)) |

## Rule of Thumb

If a ticket cannot be demoed end-to-end in one sitting, it is not a tracer
bullet - split it. The demo IS the verification.

## Related
[idea to ship flow](/wiki/idea-to-ship-flow), [tdd with agents](/wiki/tdd-with-agents), [karpathy four guidelines](/wiki/karpathy-four-guidelines), [richard feynman](/wiki/richard-feynman).

---

## Agent Navigation

cluster: person (170 pages) | betweenness: 22.1

### References (outbound)
- [Matt Pocock](https://pyweb.dev/wiki/matt-pocock.md)
- [Richard Feynman](https://pyweb.dev/wiki/richard-feynman.md)
- [Karpathy's Four Guidelines](https://pyweb.dev/wiki/karpathy-four-guidelines.md)
- [TDD With Agents](https://pyweb.dev/wiki/tdd-with-agents.md)
- [Idea-to-Ship Flow](https://pyweb.dev/wiki/idea-to-ship-flow.md)

### Referenced by (inbound)
- [Build-From-Scratch Pedagogy](https://pyweb.dev/wiki/build-from-scratch-pedagogy.md)
- [Grilling Doctrine](https://pyweb.dev/wiki/grilling-doctrine.md)
- [Hoard and Recombine](https://pyweb.dev/wiki/hoard-and-recombine.md)
- [Idea-to-Ship Flow](https://pyweb.dev/wiki/idea-to-ship-flow.md)
- [TDD With Agents](https://pyweb.dev/wiki/tdd-with-agents.md)
- [Matt Pocock](https://pyweb.dev/wiki/matt-pocock.md)

### Evidence (verified primary sources)
- [aihero-dev-homepage-2026](https://pyweb.dev/wiki/raw/articles/aihero-dev-homepage-2026.md) | origin: https://www.aihero.dev/ | ingested: 2026-08-22 | sha256: 231157fed45f82922924a050e09b5b81a443891814fc1d72c874d864a6075419

### Machine endpoints
- Knowledge graph: https://pyweb.dev/api/graph.json
- Graph analysis: https://pyweb.dev/api/graph-analysis.json
- Context index: https://pyweb.dev/llms.txt
