- When you are building something that hasn’t been built before, tracer bullet development illustrates the approach where you need immediate feedback under actual conditions with a moving goal.
- We look for something that gets us from a requirement to some aspect of the final system quickly, visibly, and repeatably.
- Look for areas where you have doubts, and where you see the biggest risk then prioritise the development so that these are the first areas you code.
- Tracer code is not disposable, it is written to be kept. It contains all the error checking, structuring, documentation, and self-checking that any piece of production code has. It is simply not fully functional.
- It is consistent with the idea that a project is never finished, there will always be changes required and functions to add. It is an incremental approach.
Advantages
- Users get to see something working early
- Developers build a structure to work in
- Having worked out end-to-end interactions of the applications the team won’t have to pull much out of thin air
- You have an integrated platform
- Since the systems are end-to-end connected you have an environment where you can add new pieces of code once they have been unit-tested
- You will always have something to demo
- You have a better feel for progress
- Developers tackle use cases one by one
- It’s easier to measure performance and to demonstrate progress to your user
- Because individual development is smaller, you avoid creating those monolithic blocks of code that are reported as 95% complete week after week
Note
This technique is meant for situations where you are not 100% certain of where you are going, you shouldn’t be surprised if your first couple of attempts miss.
- With a prototype, you are aiming to explore specific aspects of the final system. With a true prototype, you will throw away whatever you lashed together when trying out the concept and re-code it properly using the lessons you’ve learned
- Tracer code approach addresses a different problem, you need to know how the application as a whole hangs together
- You want to show users how the interactions will work in practice, and you want to give your developers an architectural skeleton on which to hang code