I've started reading The Pragmatic Programmer, which I am enjoying and learning heaps form but I'm having difficulty understanding the difference between tracer bullets and prototypes. Are tracer bullets like having all of the views of an application there but not yet adding the entire functionality?
Thanks
Tracer Bullet: It is basically a spike which is the part of the production code. This would be done with the current architecture and the technology set along with the set of best practices, which should be followed in the current project development. This results in a production quality code.
Tracers proved useful as a countermeasure against Zeppelins used by Germany during World War I. The airships were used for reconnaissance, surveillance and bombing operations. Normal bullets merely had the effect of causing a slow leak, but tracers could ignite the hydrogen gasbags, and bring down the airship quickly.
Only machine guns typically fire tracers, and not every bullet is one. Rifle bullet tracers can be turned on or off in the difficulty options. Insurgency has tracers every few rounds on the RPD and M249 machine guns.
Tracer bullets have a column of pyrotechnic composition in the base that is ignited by the flame of the propellant; this provides a visible pyrotechnic display during the bullet's flight. Incendiary bullets, intended to ignite flammable materials such as gasoline, contain a charge of chemical incendiary agent.
I feel slightly silly responding to a three-year-old question (and one that might be better asked on a different stackexchange), but I think there is still room for improved clarity in describing the difference between tracer bullets and prototypes.
To begin, they are different things, with different purposes. But they also have similarities. I will describe their similarities as a means of highlighting their differences.
Much of this is my own take on the concepts, so please read critically.
Both tracer bullets and prototypes are used to make headway on a new undertaking. You are creating something new; an exciting but complicated process. The unknowns are unknown. The features are not well-defined. You aren't sure what components you will need, or how the code must be structured. Tracer bullets and prototypes are similar in that they are both used in this situation. Another similarity is that they are both focused on quick, efficient results.
The two methodologies are different in two general ways: which unknowns they attempt to explore, and which principles guide them.
Prototypes explore implementation details. Will you use an SQL or NoSQL backend? Quickly mock them both up to make a comparison. Can you even supply 10,000 whoozits to the main server on a daily basis? Whip up a little script and give it a shot.
Tracer bullets explore feasibility of the solution. Once you know the implementation details, pick one self-contained component, and give it a spin. Building a project management app? Single out one piece, like todo lists, and shoot at that.
In product development, you want to iterate as fast as possible, so you should start shooting quickly to see if you're hitting anything. The "tracer bullets" are shareholder feedback!
The main principle guiding prototypes is "git 'er done". It's quick, it's dirty, it produces a result (usually information) and gets thrown away. Don't add anything that gets in the way: get the information and get out.
The main principles guiding tracer bullets are completeness and simplicity. The reason for simplicity is straightforward: you want to see results quickly. Completeness is slightly trickier. It is an acknowledgement of reality: once you have a product that "works", you must immediately put your efforts elsewhere. If the product is shoddy, or lacks documentation, or took shortcuts, you will be living with those flaws for a long time. Make it right the first time!
You may note there's a lot of synergy between the idea of a complete tracer bullet and the other Pragmatic Programmer's idea of "No Broken Windows".
Both prototypes and tracer bullets provide information that will guide the development of a new undertaking. Both emphasize focus to get results quickly. Prototypes allow you to explore the unknowns of implementation, while tracer bullets allow you to explore the unknowns of feasibility. In any normal project, you will probably switch back and forth between the two methodologies as you progress. Just keep in mind what they are good for, and use them appropriately!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With