Ping-Pong Programming: Enhance Your TDD and Pair Programming Practices

[article]

the design. There was a curious mix of competition and collaboration. And then, quite suddenly, we were done. The design was so simple it almost felt wrong. I was proud of it.

In December 2004 I rotated onto another ThoughtWorks project and introduced this back-and-forth development technique to my first pair-programming partner. The thought occurred to me that naming this technique might make sharing the concept easier. After blogging about it, I discovered on Ward's wiki that it is called ping-pong programming.

There are certainly many programming scenarios where this style of development might not be appropriate, but for the several teams that I've worked with, it has provided some helpful structure to our pair programming sessions. I know there are some bored pair programmers out there, staring silently as their partner drives for hours on end. If that's you, consider giving ping-pong programming a try.

For someone who loves games and competition, the rhythm that develops in these programming sessions feels like home. When it's working right, it is competitive and collaborative at the same time. As you compete to take ever-smaller steps, you are collaboratively and incrementally building up a rigorously tested set of barely sufficient objects.

Further Reading
Extreme Programming

Ward's Wiki

Ping-Pong Programming

About the author

Dave Hoover's picture Dave Hoover

Dave Hoover spends his days struggling to keep up with his fellow ThoughtWorkers, his wife, and his three children. He enjoys learning about and contributing to the craft of software development. Dave used to have a respectable job as a family therapist. He still wonders how he got here. You can read Dave's blog.

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!

Upcoming Events

Sep 22
Sep 24
Oct 12
Nov 09