humancode.us

Make Prototypes Entirely Out of Tracer Bullets

March 10, 2023

When creating a whole new functionality in your app (or a whole new app), prioritize validating your stack of abstractions over making each layer feature-complete. Think of the simplest use case that crosses all the abstraction layers (connecting a view to a model and syncing state to a server, for example) and implement it. Have it do one simple thing (refresh its content on demand, say), and ensure you can test it. Then, add functionality incrementally.

Having a fully-testable stack, even with only a tiny bit of functionality, opens up a world of experimentation and lets you prioritize your work. Every additional function you put into the stack incrementally adds to a demonstrable, shareable prototype, right from the start.

Practitioners of agile methodologies will recognize this as the Tracer Bullet technique. Your project bringup should be made entirely of Tracer Bullets. Others may recognize this as the Steel Threads method. In any case, it’s a great way to ensure you have a working prototype as early as possible in your project’s lifetime.