Test-Driven Development (TDD) is powerful practice, deceptively simple to describe and surprisingly hard to master. Kent Beck describes the process in these terms: repeat as quickly as possible - add a little test, see it fail, make it pass, refactor. This is the premier technical practice of Extreme Programming and one of the foundations of agile development.
Implementations of TDD are often compromised and practitioners sometimes struggle to take full advantage of the technique, in part because they've never seen what it can really do. A syndrome that I have seen in industry, through consultancy and training gigs, is this: think of a design, write tests asserting that it should exist, implement, debug, implement, debug, implement, debug… It is no surprise that TDD has a very mixed reputation. And it is a shame that a great opportunity is being missed.
Test-Driven Development as if you meant it (TDDaiYMI) was devised as an exercise to try to break that syndrome by giving programmers the opportunity to apply TDD, in a very strict interpretation of Beck's process, to a small but non-trivial problem. An alternative name for the exercise could be 'TDD with all the usual excuses not to do it taken out', but that's too long. The TDDaiYMI process extends TDD as described above with constraints that force the tests to truly drive development as a design tool.
In this session you will apply TDD in its cleanest form to a small problem, under expert feedback, and experience for yourself the effect of TDD on the design of your solutions. This experience can be immediately applied in your day job. TDDaiYMI has become a popular exercise in code dojos, Code Retreats and other developer community events.
This session will be run in essentially the same way as the successful session at Agile Cambridge 2011. You'll gain an appreciation of the possibilities of TDD as a design tool. You will also gain an understanding of the kinds of problem-solving strategies that other programmers use in applying TDD.
TDDaiYMI is suitable as a refresher for those who are experienced TDD practitioners but might have lost their edge, and is also suitable as an introduction to the practice for those who are new to it.
Keith Braithwaite is Director of Customer Solutions for Zuhlke's UK business and also manages their office in Manchester. Since learning about XP and scrum in the late 1990s, he has lead agile development projects, from native mobile apps to global enterprise systems, in companies ranging from start-ups to blue-chip giants, and in Europe, North America and Asia.
He was a contributor to 2 of O'Reilly's "97 Things..." books and co-authored the first peer-reviewed descriptions of successful distributed agile development. He is a recognised expert in Test-Driven Development.
To buy tickets to see this fantastic talk, and many others like it head over to our ticket page.
Need help planning which sessions to attend? We've provided a breakdown of our various session types below.
A presentation and discussion of real-life (not theoretical) experiences of the application (or mis-application) of Agile and Lean practices. Case studies and experience reports include some discussion of lessons learned and an indication of how novel the work is.
Participants learn a new approach, tool or technology through using it to solve one or more practical exercises. Any software/hardware requirements are disclosed in the session description.
A session focused around some specific tool, technique or issue. Primarily led by the speaker, tutorials usually include some elements of interactivity or individual / group exercise.
An in-depth working session on a specific topic. May include paper presentations.