Hi, 

Any tips on facilitating code retreat where participants are mostly new (or not heard of) with TDD? any sessions constraints that would help them leading on TDD?, or simply easier for non-TDDers picking up?  
Thanks,
Steven

Views: 479

Replies to This Discussion

Coderetreat is a great place for people to try TDD for the first time. I've facilitated some coderetreats where the focus shifted almost exclusively to just TDD because the participants were intrigued by the idea. I've also facilitated some coderetreats where after one session of TDD the group wasn't interested anymore and wanted to do something else. Both situations are perfectly fine and are natural. Always tailor the coderetreat to the interests and needs of the group.

In any case, there are many exercises you can do to both introduce and practice TDD. Many of the exercises are based on the basic Ping Pong exercise in which one member of the pair writes the tests and the other member writes code to make the tests pass. Depending on how new the group is to TDD, you may want to spend two sessions on Ping Pong to give everyone an opportunity try out both roles.

Some variations on Ping Pong include Mute Ping Pong (no one is allowed to talk, a great one after lunch), and Ping Pong with Evil Coder (where the production code writer tries to take the design in a direction that the test writer isn't expecting). You can combine the two variations into Mute Ping Pong with Evil Coder.

Baby Steps is also a great exercise. It focuses on practising the rhythm of TDD and the discipline of taking small steps.

One exercise you want to avoid is TDD as If You Meant It. Most people, including experienced TDD developers, find TDD as If You Meant It to be very hard. In addition, it could mislead or confuse those who are new to TDD.

Good luck and have fun! Feel free to report back how your coderetreat goes. I'm sure others would love to learn from your experience.

I agree with all of Jim's recommendations. I've had similar experiences and highly recommend Ping Pong.

The only thing I would add is that if the majority of your group is new to TDD there is a reasonable chance that they won't have the appropriate test tools for their chosen languages. This will obviously depend on the crowd but I would plan for the possibility of burning up a session just on environment setup if it truly is a beginner group.

Have an awesome retreat!

Great Point Curtis!

Along those same lines, groups new to TDD often benefit from a demonstration of TDD. If you know off the bat that the group is new  to TDD, then you might want to demonstrate TDD in the morning during the introduction. I've also done a demonstration over lunch after the group has had a chance to struggle with it in the morning. Ether way, a demo can go a long way in showing others how the TDD cycle works.

Jim++



Curtis Badke said:

I agree with all of Jim's recommendations. I've had similar experiences and highly recommend Ping Pong.

The only thing I would add is that if the majority of your group is new to TDD there is a reasonable chance that they won't have the appropriate test tools for their chosen languages. This will obviously depend on the crowd but I would plan for the possibility of burning up a session just on environment setup if it truly is a beginner group.

Have an awesome retreat!

Thanks, I like the idea of demo before they start practising.

Curtis brought up the case where attendees don't have a testing framework installed and the impact this has on their exploring TDD. I've been very happily using Cyber-dojo.org for 2+ years now for this reason and many others. 

Cyber-dojo.org eliminates the need for any time spent on setup or configuration, loading additional gems, etc. by being entirely browser based. A wide range of language choices, each of which offers one or more testing frameworks already configured and installed. It also eliminates IDE and my-favorite-editor wars and allows participants to get down to what they came for: coding with and learning from other awesome people.

The only complaint I get is that it's not and IDE. It doesn't Eclipse/IntelliJ-like features like hints, keyword coloring, shortcuts, automated refactoring, in-line type-safe checking, etc. What it does do exceptionally well is reduce the focus to the code and the tests that demand the code into existence. 

Atom.io has a plugin that allows you to work against Cyber-Dojo.org. Awesome!

Bob Allen @CuriousAgilist said:

Curtis brought up the case where attendees don't have a testing framework installed and the impact this has on their exploring TDD. I've been very happily using Cyber-dojo.org for 2+ years now for this reason and many others. 

Cyber-dojo.org eliminates the need for any time spent on setup or configuration, loading additional gems, etc. by being entirely browser based. A wide range of language choices, each of which offers one or more testing frameworks already configured and installed. It also eliminates IDE and my-favorite-editor wars and allows participants to get down to what they came for: coding with and learning from other awesome people.

The only complaint I get is that it's not and IDE. It doesn't Eclipse/IntelliJ-like features like hints, keyword coloring, shortcuts, automated refactoring, in-line type-safe checking, etc. What it does do exceptionally well is reduce the focus to the code and the tests that demand the code into existence. 

RSS

© 2017   Created by corey haines.   Powered by

Badges  |  Report an Issue  |  Terms of Service