Emergent Design with Test-Driven Development
This workshop shows how Test-Driven Development (TDD) is used to enable emergent design. Using a simple but representative example in Java, the presenter will demonstrate how a low-level design naturally emerges when using the TDD cycle of test/code/refactor. The audience will be involved by suggesting the next steps and also by pairing with the presenter.
Note that the goal of the session isn't necessarily to have a complete working example at the end, but to illustrate the process of low-level design through TDD.
Outline/Structure of the Workshop
The session will proceed as follows:
- 10 minutes - Introduction explaining emergent design with TDD and the example problem to solve.
75 minutes - Interactively building the solution using TDD with assistance from the audience.
5 minutes - Questions and wrap-up
- Understand the concept of emergent design
- Learn how to allow overall design to emerge through small steps
- Learn the difference between emergent design and designing up front
- Learn how much design is enough
This session is intended primarily for software developers and architects, though other roles such as testers and business analysts will find value in understanding how emergent design is intended to work.
Prerequisites for Attendees
There are no particular prerequisites. The session will use Java as the programming language, so some exposure to it would be helpful.