Firing tracer bullets
Regular readers of this blog might take the following analogy for another of my strained attempts to draw parallels with the art of war. But the idea isn't mine, and the terms are from the original as well.
Freely adapted from Tracer Bullets and Prototypes — Pragmatic Programmers Andy Hunt and Dave Thomas talk with Bill Venners about the importance of getting feedback during development by firing tracer bullets and building prototypes.
Imagine you're lying in the dark somewhere in the bush and have to hit a target. You have two options. First, suppose you know the approximate position of the target, the weather conditions and so on. From that you calculate the bullet's trajectory, adjust your sights, hold your breath and fire. If your calculations were right, your information matched reality and the target didn't move, you might hit it.
The other option is to use tracer ammunition, also known as tracer rounds. A tracer is a special bullet that leaves a glowing trail when fired. You typically load a tracer as every nth round in the magazine. With tracer ammunition you simply fire and use the trajectory you can see to adjust your aim so that, with luck, the next shot hits the target or at least gets closer.
Now for the parallel with software development. Imagine you're about to develop new software or start work on a new release. At the end you have to deliver the finished thing. Just as when shooting in the bush, it's often hard to tell exactly where the target is, and every now and then it moves (who could have guessed?). Some requirements come in more or less on time, some are unclear, and some we interpret differently. Making one big guess up front and then delivering (firing) the whole solution at the end often fails in that situation.
Here's what tracer bullets look like in software development. We start with an assumption, develop something along those lines and after a while show it to the customer. They tell us how close or far we are from what they had in mind. We adjust for the next iteration and show it to them again. By correcting the bullet's course together a little at a time, we get to the solution the customer wants.
I like the tracer bullet approach, though I see one danger. Especially when we're building something for more than one customer, what one customer dreams up can look unusable to another because they have something completely different in mind. In other words, it's best to help the customer adjust your aim. Otherwise you could end up shooting yourself in the foot.
Related articles
Related CZ Podcast episodes
- #261 · Leadership
On leading people and teams. · Czech audio