Skip navigation.

Pair Programming - warts and all...

FIT/FitNesse

When I first heard of the "Given When Then" structure for writing acceptance tests, I knew instantly that it was a better way of writing executable examples (wrapped in the structure of an automated test to reduce ambiguity). It was presented by Dan North and Joe Walnes at XP Day 2006

Since then a number of frameworks have risen up using that structure. Many of these can be written in plain text. Despite this, there are still many teams using FitNesse and the new table parsing Test System called SLIM. For this reason - and because I find the "includes", variables and hierarchical wiki features of FitNesse useful I wanted to give FitNesse users the opportunity to use "Given When Then" style whilst enjoying the benefits of FitNesse. Through a spike that I did about 18 months ago, I got positive feedback from several people. One of those was a client who asked me to help them use the approach.

Also working with this client (independently of me) was Andy Palmer. Andy seemed to take a liking to the approach and we also happened to click really well when pairing. Working together, we took it to the next level. He also helped come up with the name "NarrativeFixture". I can honestly say it wouldn't have been half as good without his involvement. Now our mutual client has countless tests written in this way across 3-4 project teams.

Despite this working out quite well for them, we made a lot of compromises along the way. We used it as a teaching tool as well as a framework for writing tests. It was a great way to pair with the client's developers so they could learn TDD and other programming techniques from us. For this reason it went in several directions we knew we'd never have gone in were it just the two of us working on it.

So, recently, we made a start on writing the opensource version that I'd always hoped to do... and as a way of journalling our efforts, we have been recording our pairing sessions. We've taken inspiration from the pomodoro technique, thus each session is approximately 25 minutes in length.

We decided that these sessions might be valuable to others. What's especially cool is that the sessions are recorded warts-n-all so don't have the somewhat idealistic and sometimes over-simplified scenarios often found in online videos demonstrating programming. We reveal our imperfections and uncetainty as we learn and discover and gradually reflect our evolving understanding of the subject matter in the code.

Soon, we'll be opening up these sessions so that people can join us via the internet live... follow me on twitter and Andy on twitter for updates on joining us for live sessions.

In the mean time, have a look through the videos... it starts off slowly and, like all good series, builds at a constant pace... I hope you enjoy watching.

Update:All the videos are online and can be streamed in 720p. Check out pairwith.us/tv