W22 - Prototypes and Tracer Rounds
In The Pragmatic Programmer I encountered a pair of concepts about getting projects to production: prototypes and tracer rounds; they offer useful guidance for the refactor I'm undertaking.
A prototype is like a mold made before putting something on the production line — a small demo that generates disposable code. When building a prototype, the goal is to explore specific aspects of the final system. It's part of feasibility assessment and solution validation; the prototype built for validation is ultimately discarded, leaving behind lessons learned to guide the正式 project development. For example, which build-and-deploy approach can support this refactor, and how dependency management can improve reuse of infrastructure code.
A refactor is inevitably a major initiative lasting several months, and in a changing environment it will generate many unpredictable interactions. For example, it can alter team workflows or affect certain traffic entry points for the business. Tracer-round-style development is a reliable response to such conditions.
What is a tracer round?
A tracer round is loaded into the magazine together with regular ammunition. When a tracer is fired, its composition ignites and leaves a visible trail between the gun and the target. If a tracer hits the target, subsequent regular rounds are likely to 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 strangulation and lean approaches. The main difference between a tracer and a regular bullet is the real-time feedback. Tracer-style development repeats the cycle of aim, fire, observe feedback, and adjust while implementing things you've never done before, moving toward the real target over multiple iterations. In practice, tracers and regular rounds should be fired interleaved: tracers establish the trajectory and form a framework, leaving clear gaps so collaborators know how to fill them with regular rounds.
When facing unfamiliar and highly dynamic conditions, combining prototypes with tracer rounds is a good strategy for advancing a project's delivery. Consider prototype creation as the reconnaissance and intelligence-gathering that occurs before firing a tracer. Tracer-code builds parts of the final system's framework — simple but coherent. Finally, individual regular rounds provide depth and complete the strike on the target.
Last updated