Using Test-Driven Development to solve real problems
Seb Rose

Test Driven Development (TDD) is often taught using simple katas. When you get back to your desk, however, you have to solve real world problems. This workshop will focus on one significant challenge that we all experience when trying to put theory into practice -- solving complicated problems in small steps. 

For TDD to be successful, you need to be able to work iteratively, breaking the problem down into its constituent pieces, each of which can then be solved quickly, in response to the next failing test. But, it's not always obvious how to decompose the problem that you're working on into a sequence of small steps that lead to a complete solution. While there are many examples of problems that are relatively simple to decompose (e.g. bowling game or FizzBuzz), the real world is rarely so obliging. It's usually easy to identify the first test and get it to pass. Getting the second test to pass, however, apparently requires solving the whole problem. Without the rapid cadence of seeing tests go from failing to passing, much of the value of TDD is lost.

In this session we will introduce you to a kata that, while seemingly simple, is challenging to solve using TDD. We'll then ask you to work in pairs or small groups in breakout rooms using an online training environment called Cyber-Dojo, which only requires an internet connection and a browser. This will give you first hand experience of the challenges that are often experienced when trying to apply TDD in real world situations.

Then, having collected your insights, we'll introduce you to a technique that we've been practicing which we call "test recycling". We’ll demonstrate applying TDD to the same kata using this technique, and close by sharing a slightly modified TDD process with you.

We hope the workshop will add a new technique to your TDD toolbox. This workshop is for you whether you have tried TDD only once or use TDD every day. Come along if TDD interests you.

This session will NOT be recorded. Attendance is first come, first serve. 

This session will be delivered on Zoom.

Learning Objectives
After this workshop, you will be able to:

* Explain the basic concepts of classic TDD
* Utilise test "recycling" and describe how it augments classic TDD
* Solve real-world problems in small slices, without relinquishing a TDD approach
Learning Level
Session Type