Test Driven Development Workshop

Course Availability

We offer TDD training in most of the popular programming languages. Content can be customized based on need.

To request a training please email to terry.yin@odd-e.com

We are a group of TDD practitioners, and we have successfully practiced TDD to make large-scale software for two decades and are still practicing it daily. We also have rich experience coaching other programmers to adopt this important developer practice.

The objective of the workshop:

This workshop will provide you with a firm understanding of Test-Driven Development and the skill of practicing in the following four perspectives:

Agenda and Description

Day1: TDD in the business domain

How do you know if the outcome is good?

To begin with the end in our mind, we will agree on the criteria to evaluate the effect of any developer practice first.

What is TDD?

TDD isn’t about testing at all, and it’s a developer practice that facilitates the acquisition of domain knowledge and, in the meanwhile, preserves the acquired knowledge. We will also compare TDD to Domain-Driven Design.

A naive exercise

We will go through the rigorous TDD process with a short and naive exercise.

On the breakdown of the business domain

A common misunderstanding is that you get small solutions when you break down a big problem. Through a series of exercises, let’s see how we can break a big problem into smaller ones without jumping to the solution too early.

This part will also help you distinguish the impacts we bring into the product and the stuff we maintain after making the impacts.

Day 2: TDD in the solution domain

Emergent Design and Refactoring

“As the tests get more specific, the solution gets more generic.” We will practice emergent design with some exercise for half a day.

Data vs. Object vs. public Interface vs. published Interface

We will discuss and practice TDD when dealing with dependencies. Topics include mocking, functional style, event sourcing pattern, etc.

Working with Async

We might devote some time to TDD with Async and time-related scenarios.

Big Refactoring
Working With Legacy Code

Day 3: TDD as a Team and TDD in the SW development life cycle

NIH & Reuse

The two great enemies of making TDD beyond an individual practice are NIH (Not-Invented-Here) and designing something “reusable” instead of usable.

The Limbo exercise

Find the details here: https://medium.com/@kentbeck_7670/limbo-scaling-software-collaboration-afd4f00db4b

We will devote most of the morning to doing TCR (a pre-requisite for the Limbo exercise) and then the Limbo exercise.

Specification by Examples (A-TDD)

Acceptance Test-Driven Development and TDD are very different concepts and focus on customer collaboration. It can be well embedded into a software development life cycle. We will explain the process with a full-scale demonstration.


More info

For more information, please contact terry AT odd-e.com