Then, back in 2009, I attended a session on good acceptance tests by Gojko Adzic at the Software Craftsmanship conference in London. He handed out copies of his then-new book, Bridging the Communication Gap. I started reading it immediately on my way home. I was amazed! Gojko's book helped me a lot with figuring out what acceptance tests actually meant.
My main reason to write it was to help people new to ATDD learn by example. Kent Beck's TDD by Example served as a blueprint there. Kent Beck introduced me to Pearson, and he was eager to put the book in his signature series. Two other reasons I wrote the book—though not the main ones—were to have a book available with up-to-date examples (the FIT book is dated 2005 and does not include the latest development in FitNesse like SLiM, for example) and to expose different ways to use ATDD on your project. That said, while the first example in the book deals with a website, Selenium, and some tester and programmer separation, the second example shows how to use the tests to drive an API and do outside-in development when you have access to the code. Actually, I am discovering the domain code while automating the examples there.
Nothing is actually new in the book. Rick Mugridge and Ward Cunningham wrote on the approach of ATDD back in 2005. A German book dated 2005 called Testgetriebene Entwicklung mit JUnit und FIT (in English, Test-driven Development Using JUnit and FIT) even shows how to do outside-in development based on a lot of ideas that eventually made their way into Growing Object-oriented Software Guided by Tests by Steve Freeman and Nat Pryce. Yet, I still felt that something was missing from the whole picture. That missing thing was my main motivation for ATDD by Example: to provide the missing piece in the whole puzzle.
Zeger van Hese: You mentioned the Software Craftsmanship conference. How did you get involved with the software craftsmanship movement?
Markus Gärtner: Back in 2008, I followed reports from the Agile 2008 conference. I read something about Uncle Bob's [Robert Martin] keynote, where he wanted to add a fifth value pair to the Agile Manifesto: “craftsmanship over crap.” He opposed the, well, “crap” on agile teams and stated that the spirit of the early agile days was indeed replaced by less focus on technical excellence. Later, he refined this to "craftsmanship over execution," since the value pairs in the agile manifesto have one thing in common: We value both at times, and we don't value crap at all.