TDD as if You Meant It – Keith Braithwaite, Agile on the Beach 2016 – Software Delivery 2016

Keith Braithwaite
Zuhlke Engineering Ltd
TDD as if You Meant It

Interactive workshop (bring a laptop)
Double session
Advanced

TDD is a core Agile technical practice but too often done poorly. It is rare to see practitioners really let the Tests Drive Development, but that’s the key: designs evolved through TDD seem to be measurably different from designs created in other ways. In this session attendees will experience first-hand how a solution can evolve through TDD. They can take this experience back to their day jobs to inform more effective deployment of TDD in iterative, incremental, evolutionary development.

 

TDD is a core Agile technical practice but too often done poorly. A common failure mode is for developers to do some design thinking, write a bunch of tests which assert that the imagined design should exist and then make them pass. This often produces disappointing results, and even in the hands of a very good designer of software it misses the benefit of TDD.

It is sadly rare to see practitioners really let the Tests Drive Development, but that’s the key: designs evolved through TDD seem to be measurably different from designs created in other ways. In this session attendees will experience first-hand how a solution can evolve through TDD, and will reflect on how the solutions found by the group are different from the solutions one might imagine creating in the more usual way.

Working in pairs they will address a small but non-trivial programming problem using a modified TDD cycle which forces them to allow the design to evolve through refactoring in response to the accumulation of tests, one at a time. Pairs will be encouraged to check in to a public repository very frequently so that the incremental development of their design can be examined.

Attendees can take this experience back to their day jobs to inform more effective deployment of TDD in iterative, incremental, evolutionary development.

This session is marked as “advanced” not because the problem addressed is a hard one it isn’t. And not because the tools used are advanced, they aren’t. And not because the technique used is tricky to understand it isn’t. But because it turns out that this exercise often requires a surprisingly difficult change in thinking about programming, design and TDD. A change that is perhaps most difficult for developers who think of themselves as already expert in programming, design and TDD.

Keith Braithwaite is a Principal Consultant and Director of Customer Solutions at Zuhlke Engineering Ltd. He manages their Manchester office. He was one of the early adopters of eXtreme Programming in the UK and a well known promoter of Agile development. He blogs at http://cumulative-hypotheses.org/