W22 - Prototypes and Tracer Rounds

In The Pragmatic Programmer I encountered a pair of concepts about project delivery — prototypes and tracer rounds — which offer useful guidance for the refactoring work I'm doing.

A prototype is like a mold made before putting something into production: a small demo that produces throwaway code. When building a prototype, the goal is to explore specific aspects of the final system. It's a feasibility and solution-validation process; the prototype created for verification is ultimately discarded, leaving behind lessons learned to guide formal project development. For example, which build and deployment approach can support this refactor, and how dependency management can better increase reuse of foundational code.

A refactor is inevitably a major effort spanning months, and in a changing environment it generates many unpredictable interactions. For example, it may change team workflows to some degree or affect certain traffic entry points for the business. Tracer-round-style development is a reliable countermeasure.

What is a tracer round?

A tracer round is mixed with regular ammunition in the magazine. When a tracer is fired, its phosphorus burns and leaves a visible streak between the gun and the target. If a tracer hits the target, subsequent regular bullets will likely hit as well. Soldiers use tracers to adjust their aim: it’s a pragmatic method that provides real-time feedback under real conditions.

I see tracer-round-style development as similar in spirit to choking or lean approaches. The main difference between tracers and regular bullets is the real-time feedback. Tracer-style development repeatedly cycles through aiming, firing, feedback, and adjustment when implementing something never done before, gradually moving toward the real target over multiple iterations. In practice, tracers and regular bullets should be fired alternately: tracers establish the trajectory and form a framework, leaving intentional gaps so collaborators understand how regular bullets will fill them.

Facing an unfamiliar, rapidly changing environment, combining prototypes with tracer rounds is a strong way to drive project delivery. Consider prototype creation as the reconnaissance and intelligence-gathering done before firing a tracer. Tracer code constructs the components of the final system’s framework; it may be simple but it is complete. Regular bullets then provide depth and penetration to ultimately reach the target.

Last updated