Software Craftsmanship & Practice
Tracer Bullets & Prototyping
Two techniques get conflated under "build something quick to find out" — a tracer bullet is real, thin, end-to-end code you keep and grow; a prototype is throwaway code built purely to answer one uncertain question, then discarded.
- Tracer bullet: a thin slice through every layer of the real system, using real (if minimal) code — validates the whole pipeline works together early
- Prototype: quick, disposable code built to answer one specific risky question ("will this rendering approach even work?"), explicitly thrown away afterward
- Tracer bullets are grown into the finished feature; prototypes are deleted, not "cleaned up into production"
- Choose a tracer bullet to de-risk integration across the whole stack; choose a prototype to de-risk one uncertain technique or idea cheaply
- The failure mode for both is the same promise broken in different directions: skipping the tracer bullet (integration surprises discovered late) or keeping the prototype (throwaway quality shipped to production)
| Tracer bullet | Prototype | |
|---|---|---|
| Goal | Prove the whole pipeline connects, end to end | Answer one specific uncertain question |
| Code quality | Real, if minimal — production code that will grow | Deliberately disposable — not held to production standards |
| Fate | Kept, extended into the finished feature | Thrown away once the question is answered |
| Use when | You need early, visible progress across all layers | You need to de-risk one uncertain piece cheaply |
A tracer bullet for a new feature might be: UI button → API endpoint → business logic stub → database write, all wired together and deployed, doing the absolute minimum at each layer — but doing it for real. It answers "does this architecture actually fit together" days before the feature is feature-complete, and every layer it touches then gets filled in incrementally, in place. This also doubles as a communication tool: stakeholders can see something running end-to-end almost immediately, long before the polish is done (see Requirements And Communication).